首页 > 学术期刊知识库 > 单片机万年历毕业论文

单片机万年历毕业论文

发布时间:

单片机万年历毕业论文

Design of the digital Perpetual Calendar based onreal-time clock chipAbstract:This Electronic calendar uses the AT89S52 microcontroller as the core for the control. Time Circuit which is constituted by Dallas's DS1302 real-time clock chip achieved a time and date display, it increased functionality for the temperature display and the whole point timekeeping. This paper discusses the hardware circuit of the system, principle in detail,and gives the flow chart of the software design and the major source code. keywords:microcontroller; real-time clock; Temperature measurement1 Introduction E-calendar-bedroom at home,schools,stations and more and more extensive use of plaza for people's lives,study,work great convenience. Electronics calendar for the past need to re-adjust after power-off time and date,and time is a big error. Designed the system using real-time clock chip (DS1302) as a timer parts,the chip comes with an internal crystal oscillator,so that effectively guarantee the accuracy of the time and hang own internal battery power makes the situation will continue to update the time information . This design uses AT89S52 as the main controller,in order to improve the practicality of the circuit add temperature measurement circuit,timekeeping and alarm functions. 2 System hardware design Schematic circuit shown in Figure 2: System architecture Power Supply Circuit In order to reduce circuit costs,the system power supply circuit by the transformer transformer,three-terminal integrated regulator (L7805> circuit 5V, has a simple,reliable, inexpensive and so on. Host Controller Host controller using ATMEL's latest MCU Products AT89S52. Apart from the single-chip microcomputer has a MCS-51 series single-chip all the benefits of things,also has 8KB of internal in-system programmable FLASH memory,free and low-power brown-out mode, greatly reducing the power circuit . In addition,also has a watchdog circuit,a reliable job for the circuit provides greater assurance. digital tube display circuit Show circuit with a high brightness,long life,low cost features such as the LED digital tube. Throughout the show circuit by the digital control and display LED drive circuit and decoding circuit. Because of the system to display the contents of more,a total of 16 digital tube, respectively,with eight shows year,month,day,four show time,show that 22 weeks,2 show the temperature. Controller in order to save resources,between the controller and displays add a decoding circuit 16 so that would have required the line of control into the circuit only 4 control lines,a great save system resources. The decoder by the decoder constitute both 3-8. Real-time clock chip This design uses the United States Dallas company DS1302, the chip can automatically generate century,year,month,day,hour,minute,second,such as time information. Century the use of internal registers with the software will be able to resolve the 'Millennium', the problem. The chip has its own internal battery-keng,external brown-out,the internal time information also be able to maintain for 10 years. Time for a single day record of 12 hours and there is a 24-hour mode. Time Table Ways that also has two kinds of binary numbers,and the other with BCD code express. The chip with 128 bytes of internal RAM,one of 11 bytes used to store time information,4 bytes of memory chips used to control information,known as the control register,113-byte general-purpose RAM for users to store temporary information. In addition,users can also program the chip to control a variety of square-wave output,and its internal three-way through the software interrupt shielding. Buttons and temperature measurements and circuit The system in order to make the circuit more easy,button circuit design only three keys, which are 'set','+','-', three keys to adjust the calendar and clock. The system in order to improve the practicality of the circuit,an increase of a temperature display. The system temperature measurement circuit using Dallas's DS18B20. The device because of its low price,easy circuits,measurement precision,etc.. audio signal generator and driver circuit The circuit's function is to receive control circuit to send to the entire point of time and timing signal,according to system settings produce different frequencies of audio signals,amplification by the drive circuit to drive speakers to voice their opinions in order to realize the whole point timekeeping and alarm functions. 中文译文:基于实时钟芯片的电子万年历的设计摘要:电子万年历以AT89S52单片机为控制核心,采用Dallas公司的DS1302实时钟芯片构成计时电路,实现了时间和日期的显示,还增加了温度显示和整点报时的功能。文章对该系统的硬件电路、工作原理做了详细介绍,同时给出了软件设计的流程图及主要程序源代码。关键词:单片机,实时钟.温度测量1引言电子万年历在家庭居室、学校、车站和广场使用越来越广泛,给人们的生活、学习、工作带来极大的方便。针对以往的电子万年历断电后需重新调整时间与日期,且计时误差大的现象。本系统设计采用实时钟芯片(DS1302)作为计时器件,该芯片内部自带晶体振荡器,这样就有效的保证了计时的精确性,并且内部自带铿电池使得在断电情况能继续更新时间信息。本设计采用AT89S52作为主控制器,为了提高电路的实用性加入温度测量电路、报时和闹钟功能。2系统硬件的设计电路原理图如图所示: 该系统的结构框图系统的工作原理是:主控制器每隔一段时间(小于一秒钟)读一次时钟芯片的内部寄存器的值,将读出的日历、时间信息实时的显示在LED数码显示器一上。同时,主控制器不断的扫描按键电路和温度测量电路,当有键按下时,识别出按键的值并调整相应的时间或日历的值再写入时钟芯片内部。温度数据由测量电路(DS18B20)获得的温度值送入显示电路显示。2. 1电源电路为了减少电路成本,本系统电源电路由变压器变压、三端集成稳压(L7805>电路产生5V,具有简单、可靠、价格低廉等特点。2. 2主控制器主控制器采用ATMEL公司的最新系列单片机产品AT89S52。该单片机除了拥有MCS-51系列单片机的所有优点外,内部还具有8KB的在系统可编程FLASH存储器,低功耗的空闲和掉电模式,极大的降低了电路的功耗。另外,还具有一个看门狗电路,为电路的可靠工作提供了更大的保证。2. 3数码管显示电路显示电路采用具有高亮度、使用寿命长、价格低廉等特点的LED数码管。整个显示电路由LED数码管和显示驱动电路和译码电路构成。由于本系统中显示的内容较多,共需要16个数码管,分别用八位显示年、月、日,四位显示时间,二二位显示星期,二位显示温度。为了节省控制器的资源,在控制器和显示器之间加入一个译码电路使本来需要16根控制线的电路变成只需四根控制线,极大的节省了系统资源。该译码器由两个3-8译码器构成。2. 4实时钟芯片本设计采用美国Dallas公司的DS12C887A,该芯片能够自动产生世纪、年、月、日、时、分、秒等时间信息。利用内部的世纪寄存器,配合软件就能解决’千年’,的问题。该芯片内部自带有铿电池,外部掉电时,其内部的时间信息还能够保持10年之久。对于一天内的时间记录有 12小时制和24小时制两种模式。时间的表示方法也有两种,一种用二进制数表示,另一种用BCD码表示。该芯片内部带有128字节的RAM,其中11字节用来存储时间信息,4字节用来存储芯片的控制信息,称为控制寄存器,113字节通用RAM可供用户存储临时信息。此外,用户还可以对芯片进行编程控制输出各种方波,并可对其内部的三路中断通过软件进行屏蔽。2. 5按键与温度测且电路本系统为了使电路更简单,按键电路只设计了三个按键,分别是’设置’、’+’、’-’,三个键用来调整日历以及时钟。本系统为了提高电路的实用性,增加了一个温度显示功能。该系统的温度测量电路采用Dallas公司的DS1280。该器件由于其具有价格低廉、电路简单、测量精确等优点。2. 6音频信号产生及驱动电路本电路的功能是接收控制电路发送来的整点报时及定时信号,根据系统设定产生不同频率的音频信号,由驱动电路加以放大驱动扬声器发出声音,从而实现整点报时及闹钟的功能。 希望可以帮到你!!!

这个不是什么难事,网上到处都有,日历芯片可以选择DS1302,要不了几个钱,单片机选择STC系列的,也要不了几个大洋。原理超简单,baidu一下OK了。给你一段参考程序希望对你有帮助void DS1302_limit(void) //初始化{ DS1302_WriteEnable(); DS1302_OscEnable(); for(ds1302_b=0;ds1302_b<7;ds1302_b++) DS1302_SendByte(ds_sec+2*ds1302_b,d1302[ds1302_b]); //赋值初始化}uchar DS1302_Read(uchar address) //读时钟{ uchar dat; DS1302_WriteEnable(); switch(address) {case 0:dat=DS1302_ReceiveByte(ds_sec+1); break; case 1:dat=DS1302_ReceiveByte(ds_min+1); break; case 2:dat=DS1302_ReceiveByte(ds_hour+1); break; case 3:dat=DS1302_ReceiveByte(ds_day+1); break; case 4:dat=DS1302_ReceiveByte(ds_week+1); break; case 5:dat=DS1302_ReceiveByte(ds_month+1); break; case 6:dat=DS1302_ReceiveByte(ds_year+1); break; } DS1302_WriteDisable(); return(dat);}void DS1302_Write(uchar address,uchar dat){ DS1302_WriteEnable(); switch(address) { case 0:DS1302_SendByte(ds_sec,dat); break; case 1:DS1302_SendByte(ds_min,dat); break; case 2:DS1302_SendByte(ds_hour,dat); break; case 3:DS1302_SendByte(ds_day,dat); break; case 4:DS1302_SendByte(ds_week,dat); break; case 5:DS1302_SendByte(ds_month,dat); break; case 6:DS1302_SendByte(ds_year,dat); break; } DS1302_WriteDisable();}ds1302pro() //读出数据{ nian01=DS1302_ReceiveByte(ds_year+1); yue01=DS1302_ReceiveByte(ds_month+1); ri01=DS1302_ReceiveByte(ds_day+1); xiaoshi01=DS1302_ReceiveByte(ds_hour+1); sec01=DS1302_ReceiveByte(ds_sec+1); //读秒信息 min01=DS1302_ReceiveByte(ds_min+1); //读分信息 zhouxingqi=DS1302_ReceiveByte(ds_week+1); d1302_transfer(); //数值处理提取出待显示的值 }void DS1302_SendByte(uchar Command,uchar XmtDat) // 发送数据程序,发送1个字节给被控器DS1302{ uchar i; RST=0; _nop_(); SCLK=0; _nop_(); RST=1; for(i=0;i<8;i++) { IO_DATA= (bit)(Command&0x01); Command = Command >> 1; SCLK=1; _nop_(); SCLK=0; } for(i=0;i<8;i++) { IO_DATA= (bit)(XmtDat&0x01); XmtDat = XmtDat >> 1; SCLK=1; _nop_(); SCLK=0; } RST=0; }uchar DS1302_ReceiveByte(uchar Command) // 接收数据程序;从被控器DS1302 接收1个字节数据{ uchar i, RcvDat=0; RST=0; _nop_(); SCLK=0; _nop_(); RST=1; for(i=0;i<8;i++) { IO_DATA= (bit)(Command&0x01); Command = Command >> 1; SCLK=1; _nop_(); SCLK=0; } for(i=0;i<7;i++) { if(IO_DATA)RcvDat|=0x80; RcvDat= RcvDat >> 1; SCLK=1; _nop_(); SCLK=0; } if(IO_DATA)RcvDat|=0x80; RST=0;return RcvDat;}void DS1302_WriteEnable(void) //允许数据写入寄存器{ DS1302_SendByte(ds_com,00);}void DS1302_WriteDisable(void) //禁止数据写入寄存器{ DS1302_SendByte(ds_com,0x80);}void DS1302_OscEnable(void) //起动时钟操作{ DS1302_SendByte(ds_sec,0x00);}void DS1302_OscDisable(void) //停止时钟操作{ DS1302_SendByte(ds_sec,0x80);}void d1302_transfer(void) //数据转换函数{ nian02=nian01&0x0f; nian01=nian01>>4; yue02=yue01&0x0f; yue01=yue01>>4; ri02=ri01&0x0f; ri01=ri01>>4; xiaoshi02=xiaoshi01&0x0f; xiaoshi01=xiaoshi01>>4; min02=min01&0x0f; min01=min01>>4; sec02=sec01&0x0f; //取miao信号的低四位 sec01=sec01>>4; //取高四位 }void delay1302(int i) //延时函数{ uchar x,j; for(x=0;x

#include<>#include""#define uint unsigned int#define uchar unsigned charuchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp;//flag用于读取头文件中的温度值,和显示温度值#define yh 0x80 //LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)#define er 0x80+0x40 //LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)//液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0口)sbit rs=P1^0;sbit en=P1^2;sbit rw=P1^1; //如果硬件上rw接地,就不用写这句和后面的rw=0了sbit led=P3^7; //LCD背光开关//DS1302时钟芯片与C51之间的引脚连接定义sbit IO=P2^2;sbit SCLK=P2^1;sbit RST=P2^2;sbit ACC0=ACC^0;sbit ACC7=ACC^7;/************************************************************ACC累加器= 就是ACC的第0位。Acc可以位寻址。累加器ACC是一个8位的存储单元,是用来放数据的。但是,这个存储单元有其特殊的地位,是单片机中一个非常关键的单元,很多运算都要通过ACC来进行。以后在学习指令时,常用A来表示累加器。但有一些地方例外,比如在PUSH指令中,就必须用ACC这样的名字。一般的说法,A代表了累加器中的内容、而ACC代表的是累加器的地址。 ***************************************************************///校时按键与C51的引脚连接定义sbit key1=P2^4; //设置键sbit key2=P2^5; //加键sbit key3=P2^6; //减键sbit buzzer=P2^0;//蜂鸣器,通过三极管9012驱动,端口低电平响/**************************************************************/uchar code tab1[]={"20 - - "}; //年显示的固定字符uchar code tab2[]={" : : "};//时间显示的固定字符//延时函数,后面经常调用void delay(uint xms)//延时函数,有参函数{ uint x,y; for(x=xms;x>0;x--) for(y=120;y>0;y--);}/********液晶写入指令函数与写入数据函数,以后可调用**************//*在这个程序中,液晶写入有关函数会在DS1302的函数中调用,所以液晶程序要放在前面*/write_1602com(uchar com)//****液晶写入指令函数****{ rs=0;//数据/指令选择置为指令 rw=0; //读写选择置为写 P0=com;//送入数据 delay(1); en=1;//拉高使能端,为制造有效的下降沿做准备 delay(1); en=0;//en由高变低,产生下降沿,液晶执行命令}write_1602dat(uchar dat)//***液晶写入数据函数****{ rs=1;//数据/指令选择置为数据 rw=0; //读写选择置为写 P0=dat;//送入数据 delay(1); en=1; //en置高电平,为制造下降沿做准备 delay(1); en=0; //en由高变低,产生下降沿,液晶执行命令}lcd_init()//***液晶初始化函数****{ write_1602com(0x38);//设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据 write_1602com(0x0c);//开显示不显示光标 write_1602com(0x06);//整屏不移动,光标自动右移 write_1602com(0x01);//清显示 write_1602com(yh+1);//日历显示固定符号从第一行第1个位置之后开始显示 for(a=0;a<14;a++) { write_1602dat(tab1[a]);//向液晶屏写日历显示的固定符号部分 //delay(3); } write_1602com(er+2);//时间显示固定符号写入位置,从第2个位置后开始显示 for(a=0;a<8;a++) { write_1602dat(tab2[a]);//写显示时间固定符号,两个冒号 //delay(3); }}/*********************over***********************//***************DS1302有关子函数********************/void write_byte(uchar dat)//写一个字节{ ACC=dat; RST=1; for(a=8;a>0;a--) { IO=ACC0; SCLK=0; SCLK=1; ACC=ACC>>1; }}uchar read_byte()//读一个字节{ RST=1; for(a=8;a>0;a--) { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC>>1; } return (ACC);}//----------------------------------------void write_1302(uchar add,uchar dat)//向1302芯片写函数,指定写入地址,数据{ RST=0; SCLK=0; RST=1; write_byte(add); write_byte(dat); SCLK=1; RST=0;}uchar read_1302(uchar add)//从1302读数据函数,指定读取数据来源地址{ uchar temp; RST=0; SCLK=0; RST=1; write_byte(add); temp=read_byte(); SCLK=1; RST=0; return(temp);}uchar BCD_Decimal(uchar bcd)//BCD码转十进制函数,输入BCD,返回十进制{ uchar Decimal; Decimal=bcd>>4; return(Decimal=Decimal*10+(bcd&=0x0F));}//--------------------------------------void ds1302_init() //1302芯片初始化子函数(2010-01-07,12:00:00,week4){RST=0;SCLK=0;write_1302(0x8e,0x00); //允许写,禁止写保护 write_1302(0x80,0x00); //向DS1302内写秒寄存器80H写入初始秒数据00write_1302(0x82,0x00);//向DS1302内写分寄存器82H写入初始分数据00write_1302(0x84,0x12);//向DS1302内写小时寄存器84H写入初始小时数据12write_1302(0x8a,0x04);//向DS1302内写周寄存器8aH写入初始周数据4write_1302(0x86,0x07);//向DS1302内写日期寄存器86H写入初始日期数据07write_1302(0x88,0x01);//向DS1302内写月份寄存器88H写入初始月份数据01write_1302(0x8c,0x10);//向DS1302内写年份寄存器8cH写入初始年份数据10write_1302(0x8e,0x80); //打开写保护}//------------------------------------//温度显示子函数void write_temp(uchar add,uchar dat)//向LCD写温度数据,并指定显示位置{ uchar gw,sw; gw=dat%10;//取得个位数字 sw=dat/10;//取得十位数字 write_1602com(er+add);//er是头文件规定的值0x80+0x40 write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0xdf);//显示温度的小圆圈符号,0xdf是液晶屏字符库的该符号地址码 write_1602dat(0x43); //显示"C"符号,0x43是液晶屏字符库里大写C的地址码 }//------------------------------------//时分秒显示子函数void write_sfm(uchar add,uchar dat)//向LCD写时分秒,有显示位置加、现示数据,两个参数{ uchar gw,sw; gw=dat%10;//取得个位数字 sw=dat/10;//取得十位数字 write_1602com(er+add);//er是头文件规定的值0x80+0x40 write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码 }//-------------------------------------//年月日显示子函数void write_nyr(uchar add,uchar dat)//向LCD写年月日,有显示位置加数、显示数据,两个参数{ uchar gw,sw; gw=dat%10;//取得个位数字 sw=dat/10;//取得十位数字 write_1602com(yh+add);//设定显示位置为第一个位置+add write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码 }//-------------------------------------------void write_week(uchar week)//写星期函数{ write_1602com(yh+0x0c);//星期字符的显示位置 switch(week) { case 1:write_1602dat('M');//星期数为1时,显示 write_1602dat('O'); write_1602dat('N'); break; case 2:write_1602dat('T');//星期数据为2时显示 write_1602dat('U'); write_1602dat('E'); break; case 3:write_1602dat('W');//星期数据为3时显示 write_1602dat('E'); write_1602dat('D'); break; case 4:write_1602dat('T');//星期数据为4是显示 write_1602dat('H'); write_1602dat('U'); break; case 5:write_1602dat('F');//星期数据为5时显示 write_1602dat('R'); write_1602dat('I'); break; case 6:write_1602dat('S');//星期数据为6时显示 write_1602dat('T'); write_1602dat('A'); break; case 7:write_1602dat('S');//星期数据为7时显示 write_1602dat('U'); write_1602dat('N'); break;}}//****************键盘扫描有关函数**********************void keyscan(){ if(key1==0)//---------------key1为功能键(设置键)-------------------- { delay(9);//延时,用于消抖动 if(key1==0)//延时后再次确认按键按下 { buzzer=0;//蜂鸣器短响一次 delay(20); buzzer=1; while(!key1); key1n++; if(key1n==9) key1n=1;//设置按键共有秒、分、时、星期、日、月、年、返回,8个功能循环 switch(key1n) { case 1: TR0=0;//关闭定时器 //TR1=0; write_1602com(er+0x09);//设置按键按动一次,秒位置显示光标 write_1602com(0x0f);//设置光标为闪烁 temp=(miao)/10*16+(miao)%10;//秒数据写入DS1302 write_1302(0x8e,0x00); write_1302(0x80,0x80|temp);//miao write_1302(0x8e,0x80); break; case 2: write_1602com(er+6);//按2次fen位置显示光标 //write_1602com(0x0f); break; case 3: write_1602com(er+3);//按动3次,shi //write_1602com(0x0f); break; case 4: write_1602com(yh+0x0e);//按动4次,week //write_1602com(0x0f); break; case 5: write_1602com(yh+0x0a);//按动5次,ri //write_1602com(0x0f); break; case 6: write_1602com(yh+0x07);//按动6次,yue //write_1602com(0x0f); break; case 7: write_1602com(yh+0x04);//按动7次,nian //write_1602com(0x0f); break; case 8: write_1602com(0x0c);//按动到第8次,设置光标不闪烁 TR0=1;//打开定时器 temp=(miao)/10*16+(miao)%10; write_1302(0x8e,0x00); write_1302(0x80,0x00|temp);//miao数据写入DS1302 write_1302(0x8e,0x80); break; }} }//------------------------------加键key2---------------------------- if(key1n!=0)//当key1按下以下。再按以下键才有效(按键次数不等于零) { if(key2==0) //上调键 { delay(10); if(key2==0) { buzzer=0;//蜂鸣器短响一次 delay(20); buzzer=1; while(!key2); switch(key1n) { case 1:miao++;//设置键按动1次,调秒 if(miao==60) miao=0;//秒超过59,再加1,就归零 write_sfm(0x08,miao);//令LCD在正确位置显示"加"设定好的秒数 temp=(miao)/10*16+(miao)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00); //允许写,禁止写保护 write_1302(0x80,temp); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码 write_1302(0x8e,0x80); //打开写保护 write_1602com(er+0x09);//因为设置液晶的模式是写入数据后,光标自动右移,所以要指定返回 //write_1602com(0x0b); break; case 2:fen++; if(fen==60) fen=0; write_sfm(0x05,fen);//令LCD在正确位置显示"加"设定好的分数据 temp=(fen)/10*16+(fen)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x82,temp);//向DS1302内写分寄存器82H写入调整后的分数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+6);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置 break; case 3:shi++; if(shi==24) shi=0; write_sfm(2,shi);//令LCD在正确的位置显示"加"设定好的小时数据 temp=(shi)/10*16+(shi)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x84,temp);//向DS1302内写小时寄存器84H写入调整后的小时数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+3);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 4:week++; if(week==8) week=1; write_1602com(yh+0x0C);//指定'加'后的周数据显示位置 write_week(week);//指定周数据显示内容 temp=(week)/10*16+(week)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8a,temp);//向DS1302内写周寄存器8aH写入调整后的周数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+0x0e);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 5:ri++; if(ri==32) ri=1; write_nyr(9,ri);//令LCD在正确的位置显示"加"设定好的日期数据 temp=(ri)/10*16+(ri)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x86,temp);//向DS1302内写日期寄存器86H写入调整后的日期数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+10);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 6:yue++; if(yue==13) yue=1; write_nyr(6,yue);//令LCD在正确的位置显示"加"设定好的月份数据 temp=(yue)/10*16+(yue)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x88,temp);//向DS1302内写月份寄存器88H写入调整后的月份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+7);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 7:nian++; if(nian==100) nian=0; write_nyr(3,nian);//令LCD在正确的位置显示"加"设定好的年份数据 temp=(nian)/10*16+(nian)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8c,temp);//向DS1302内写年份寄存器8cH写入调整后的年份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+4);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break;} } } //------------------减键key3,各句功能参照'加键'注释--------------- if(key3==0) { delay(10);//调延时,消抖动 if(key3==0) { buzzer=0;//蜂鸣器短响一次 delay(20); buzzer=1; while(!key3); switch(key1n) { case 1:miao--; if(miao==-1) miao=59;//秒数据减到-1时自动变成59 write_sfm(0x08,miao);//在LCD的正确位置显示改变后新的秒数 temp=(miao)/10*16+(miao)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00); //允许写,禁止写保护 write_1302(0x80,temp); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码 write_1302(0x8e,0x80); //打开写保护 write_1602com(er+0x09);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置 //write_1602com(0x0b); break; case 2:fen--; if(fen==-1) fen=59; write_sfm(5,fen); temp=(fen)/10*16+(fen)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x82,temp);//向DS1302内写分寄存器82H写入调整后的分数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+6);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置 break; case 3:shi--; if(shi==-1) shi=23; write_sfm(2,shi); temp=(shi)/10*16+(shi)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x84,temp);//向DS1302内写小时寄存器84H写入调整后的小时数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+3);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 4:week--; if(week==0) week=7; write_1602com(yh+0x0C);//指定'加'后的周数据显示位置 write_week(week);//指定周数据显示内容 temp=(week)/10*16+(week)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8a,temp);//向DS1302内写周寄存器8aH写入调整后的周数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+0x0e);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 5:ri--; if(ri==0) ri=31; write_nyr(9,ri); temp=(ri)/10*16+(ri)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x86,temp);//向DS1302内写日期寄存器86H写入调整后的日期数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+10);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 6:yue--; if(yue==0) yue=12; write_nyr(6,yue); temp=(yue)/10*16+(yue)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x88,temp);//向DS1302内写月份寄存器88H写入调整后的月份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+7);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 7:nian--; if(nian==-1) nian=99; write_nyr(3,nian); temp=(nian)/10*16+(nian)%10;//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8c,temp);//向DS1302内写年份寄存器8cH写入调整后的年份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+4);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break;} } } }}//-------------------------------void init() //定时器、计数器设置函数{ TMOD=0x11; //指定定时/计数器的工作方式为3 TH0=0; //定时器T0的高四位=0 TL0=0; //定时器T0的低四位=0 EA=1; //系统允许有开放的中断 ET0=1; //允许T0中断 TR0=1; //开启中断,启动定时器}//*******************主函数**************************//***************************************************void main(){ lcd_init(); //调用液晶屏初始化子函数 ds1302_init(); //调用DS1302时钟的初始化子函数 init(); //调用定时计数器的设置子函数 led=0; //打开LCD的背光电源 buzzer=0;//蜂鸣器长响一次 delay(80); buzzer=1; while(1) //无限循环下面的语句: { keyscan(); //调用键盘扫描子函数 }}void timer0() interrupt 1 //取得并显示日历和时间{ //Init_DS18B20();//温度传感器DS18b2初始化子函数,在头文件中 flag=ReadTemperature();//将18b2头文件运行返回的函数结果送到变量FLAG中,用于显示 //读取秒时分周日月年七个数据(DS1302的读寄存器与写寄存器不一样):miao = BCD_Decimal(read_1302(0x81)); fen = BCD_Decimal(read_1302(0x83)); shi = BCD_Decimal(read_1302(0x85)); ri = BCD_Decimal(read_1302(0x87)); yue = BCD_Decimal(read_1302(0x89)); nian=BCD_Decimal(read_1302(0x8d)); week=BCD_Decimal(read_1302(0x8b)); //显示温度、秒、时、分数据: write_temp(12,flag);//显示温度,从第二行第12个字符后开始显示 write_sfm(8,miao);//秒,从第二行第8个字后开始显示(调用时分秒显示子函数) write_sfm(5,fen);//分,从第二行第5个字符后开始显示 write_sfm(2,shi);//小时,从第二行第2个字符后开始显示 //显示日、月、年数据: write_nyr(9,ri);//日期,从第二行第9个字符后开始显示 write_nyr(6,yue);//月份,从第二行第6个字符后开始显示 write_nyr(3,nian);//年,从第二行第3个字符后开始显示 write_week(week);}

我有仿真图和源程序,效果看图片片,要的话可以给你参考一下

机电单片机毕业论文

电动机智能软起动控制系统的研究与设计(单片机) 论文编号:JD1047 论文字数:14793,页数:31 有开题报告,任务书,文献综述 摘要:本设计是一个电动机软启动控制系统,系统硬件设计利用变频器的多功能特性对电动机的启动进行控制,使大容量电动机的启动电压从某一基值逐步升高,以减少电动机的启动电流,从而保护电机和周边的用电设备。在大中型电动机的启动过程中,往往会存在很大的冲击电流,污染电网,损坏电机绕组。针对此,需要对大中型异步电机在启动时的冲击电流问题及各类降压启动的方式进行分析研究。引出启动装置软启动器的原理、功能和特点,以及针对软启动出现的问题提出改进意见和观点,对于完善软启动器在控制功能和普及起到了探讨作用。并且尝试用变频技术控制启动过程。由于经过了对相位和频率的改变,所以,在电动机达到完全启动的时候,要求变频器输出侧的电流相位和频率同电网的电流相位和频率要一致。我们在本设计中应用了锁相控制,比较和控制在变频器的前后的电流相位和频率,从而控制整个智能启动的全过程。在设计中选用INTEL公司的MCS-51单片机作为主芯片对变频器进行控制,整个系统调试方便,硬件简单,易于实现。经理论分析以及仿真,本设计达到设计要求中性能要求和各方面的功能指标。 关键词:大中型电机;软启动;变频器;单片机 The intelligence of the motor starts the research and design of the control system softly Abstract: It designs to be one soft to start control system motor originally, systematic hardware is it utilize multi-functional characteristic arrival in motor of frequency converter control to design, make the voltage of starting of the large capacity motor rise from a certain base value progressively , by reducing starting the electric current of the motor , thus protect the electrical machinery and peripheral power consuming equipment. In the course of the starting of large-and-middle-scale motor , there will often be very large impact electric current, pollution electric wire netting, damage the electrical machinery winding. To this, is it analyse and research to large-and-middle-scale asynchronous electrical machinery impact electric current problem and way started to step down all kinds of while starting to need. Is it start device soft principle , function and characteristic of starter to draw , and put forward and improve the suggestion and view to the question that start and present softly, control the function and popularize and play and probe into function in perfecting the soft starter. And try to control the start-up course with frequency conversion technology. Because of passing the change of phase place and frequency, Keyword: Large-and-middle-scale electrical machinery; soft starter; chopper; chip micro-computer 目录 摘要Ⅰ Abstract Ⅱ 第1章 绪论 1 课题研究的意义与目的 1 电动机软启动发展现状和前景展望 2 课题主要内容及要求 2 第2章软启动方式研究 2 什么是软起动 2 软启动与传统启动方式的比较 3 传统的电机控制与启动方式存在的问题 3 智能式软启动动的特点和性能 3 智能式软启动的控制理 3 如何实现软起动 4 软起动的几种方法 4 选择软起动装置应考虑的问题 7 电动机方面 7 被传动机械方面 7 机械特性 7 第3章 系统组成及控制方案 8 3.1 系统组成 8 3.2 控制方案 9 第4章 控制系统的硬件电路 9 4.1 电压同步检测电路 10 同步检测 10 4.2 电流过零信号检测 11 4.3 琐相控制 12 4. 4键盘和显示电路 14 键盘接口电路 14 单片机串口与显示器的连接 15 4. 5 过流过热及外部控制 16 4. 6 MCS-51单片机 18 型号选择 18 芯片介绍 18 三相电动机断相保护 20 第5章 软件的设计 21 同步定时中断程序 21 电流过零中断程序 23 键处理程序 24 系统主程序流程图 28 第6章 总结 29 参考文献 30 致谢31 附录A 系统总体控制框图 以上回答来自:

具体什么要求啊,我这有一些机电方面的设计资料,看看能忙上你什么忙不

机电一体化技术的应用与发展前景摘要:机电一体化是一种复合技术,是机械技术与微电子技术、信息技术互相渗透的产物,是机电工业发展的必然趋势。文章简述了机电一体化技术的基本结构组成和主要应用领域,并指出其发展趋势。 关键词:机械工业;机电一体化;数控;模块化 现代科学技术的发展极大地推动了不同学科的交叉与渗透,引起了工程领域的技术改造与革命。在机械工程领域,由于微电子技术和计算机技术的迅速发展及其向机械工业的渗透所形成的机电一体化,使机械工业的技术结构、产品机构、功能与构成、生产方式及管理体系发生了巨大变化,使工业生产由“机械电气化”迈入了“机电一体化”为特征的发展阶段。 一、机电一体化的核心技术 机电一体化包括软件和硬件两方面技术。硬件是由机械本体、传感器、信息处理单元和驱动单元等部分组成。因此,为加速推进机电一体化的发展,必须从以下几方面着手。 (一)机械本体技术 机械本体必须从改善性能、减轻质量和提高精度等几方面考虑。现代机械产品一般都是以钢铁材料为主,为了减轻质量除了在结构上加以改进,还应考虑利用非金属复合材料。只有机械本体减轻了重量,才有可能实现驱动系统的小型化,进而在控制方面改善快速响应特性,减少能量消耗,提高效率。 (二)传感技术 传感器的问题集中在提高可靠性、灵敏度和精确度方面,提高可靠性与防干扰有着直接的关系。为了避免电干扰,目前有采用光纤电缆传感器的趋势。对外部信息传感器来说,目前主要发展非接触型检测技术。 (三)信息处理技术 机电一体化与微电子学的显著进步、信息处理设备(特别是微型计算机)的普及应用紧密相连。为进一步发展机电一体化,必须提高信息处理设备的可靠性,包括模/数转换设备的可靠性和分时处理的输入输出的可靠性,进而提高处理速度,并解决抗干扰及标准化问题。 (四)驱动技术 电机作为驱动机构已被广泛采用,但在快速响应和效率等方面还存在一些问题。目前,正在积极发展内部装有编码器的电机以及控制专用组件-传感器-电机三位一体的伺服驱动单元。 (五)接口技术 为了与计算机进行通信,必须使数据传递的格式标准化、规格化。接口采用同一标准规格不仅有利于信息传递和维修,而且可以简化设计。目前,技术人员正致力于开发低成本、高速串行的接口,来解决信号电缆非接触化、光导纤维以及光藕器的大容量化、小型化、标准化等问题。 (六)软件技术 软件与硬件必须协调一致地发展。为了减少软件的研制成本,提高生产维修的效率,要逐步推行软件标准化,包括程序标准化、程序模块化、软件程序的固化、推行软件工程等。 二、机电一体化技术的主要应用领域 (一)数控机床 数控机床及相应的数控技术经过40年的发展,在结构、功能、操作和控制精度上都有迅速提高,具体表现在: 1、总线式、模块化、紧凑型的结构,即采用多CPU、多主总线的体系结构。 2、开放性设计,即硬件体系结构和功能模块具有层次性、兼容性、符合接口标准,能最大限度地提高用户的使用效益。 3、WOP技术和智能化。系统能提供面向车间的编程技术和实现二、三维加工过程的动态仿真,并引入在线诊断、模糊控制等智能机制。 4、大容量存储器的应用和软件的模块化设计,不仅丰富了数控功能,同时也加强了CNC系统的控制功能。 5、能实现多过程、多通道控制,即具有一台机床同时完成多个独立加工任务或控制多台和多种机床的能力,并将刀具破损检测、物料搬运、机械手等控制都集成到系统中去。 6、系统的多级网络功能,加强了系统组合及构成复杂加工系统的能力。 7、以单板、单片机作为控制机,加上专用芯片及模板组成结构紧凑的数控装置。 (二)计算机集成制造系统(CIMS) CIMS的实现不是现有各分散系统的简单组合,而是全局动态最优综合。它打破原有部门之间的界线,以制造为基干来控制“物流”和“信息流”,实现从经营决策、产品开发、生产准备、生产实验到生产经营管理的有机结合。企业集成度的提高可以使各种生产要素之间的配置得到更好的优化,各种生产要素的潜力可以得到更大的发挥。 (三)柔性制造系统(FMS) 柔性制造系统是计算机化的制造系统,主要由计算机、数控机床、机器人、料盘、自动搬运小车和自动化仓库等组成。它可以随机地、实时地、按量地按照装配部门的要求,生产其能力范围内的任何工件,特别适于多品种、中小批量、设计更改频繁的离散零件的批量生产。

万年历的毕业论文

电子信息工程毕业论文题目参考

论文写作,简单的说,就是大专院校毕业论文的写作,包含着本科生的学士论文,研究生的硕士论文,博士生的博士论文,延伸到了职称论文的写作以及科技论文的写作。论文的题目是论文的关键,有画龙点睛之效。下面是我为大家整理的电子信息工程毕业论文题目,大家不妨多加参考。

1.基于单片机的火灾报警器设计

2.基于NE555的触摸式报警器

3.数字密码锁设计

4.基于单片机智能电子时钟设计及应用

5.流水灯控制电路设计

6.简易单片机控制电路实验开发板

7.全自动洗衣机自动控制电路部分设计

8.基于单片机的八路抢答器的设计及PCB板的设计

9.基于单片机的数字温度计的设计

10.仓库温湿度的监测系统

11.直流稳压电源的制作

12.步进电机的单片机控制系统

13.单片机交通灯管理系统

单片机交通灯控制系统制作

15.基于单片机的步进电机系统设计

16.基于WML的学生网站开发

17.基于单片机的电子密码锁

18.单片机驱动步进电机控制系统的设计

19.基于单片机的流水灯设计

显示屏动态显示及其远程控制

21.基于DSP的高速多通道同步数据采集系统

22.篮球竞赛30S计时器

位数字抢答器

24.一种实用型心率计的设计

25.温度测控系统的设计

26.药品生产线上的药丸控制电路设计

27.基于选修课程的网站设计

28.基于单片机的交通灯设计

29.单片机控制的数字触发器

30.温度测控系统

31.基于单片机的数字时钟设计

32.篮球30秒定时器

33.电子万年历

34.基于单片机的智能节水控制器设计

35.嵌入式通用I/O键盘应用设计

36.数码显示的八路抢答器设计

37.基于PLC的四路抢答器设计

38.基于单片机的数字电子钟的`设计

39.超外差中波调幅收音机的组装及调试

40.基于单片机的无线电数字发射系统设计

41.基于80C51的智能汽车自控系统的设计

实现十字路交通灯自动控制

43.智能型充电器的电源和显示设计

44.基于单片机的电子时钟设计及应用

45.基于单片机的智能电子时钟的设计及应用

46.超外差中波调幅收音机组装及调试

47.基于USB接口的步进电机控制的研究与实现

48.基于单片机的电子琴设计

49.基于FPGA的直序扩频通信研究与设计

50.基于单片机的发射机控制系统

51.声光报警器的设计与研究

52.单片机电源

53.基于P87LPC768的电机控制系统

54.基于单片机的LCD电子钟设计

55.音响放大器的设计

56.超外差收音机制作及分析研究

频带传输系统的设计与实现

58.基于单片机智能电子钟的设计

与串行接口转换器的设计

60.基于FPGA的数字频率计的设计

1.卷积编码和维特比译码的FPGA实现

音频编译码算法研究与FPGA实现

调制解调技术研究及FPGA仿真实现

4.基于FPGA的高斯白噪声发生器设计与实现

5.无线通信系统选择分集技术研究

系统空时分组编码的性能研究

7.基于量子烟花算法的认知无线电频谱分配技术研究

8.基于量子混沌神经网络的鲁棒多用户检测器

9.无线紫外光多址通信关键技术研究

10.认知无线电网络的频谱分配算法

11.基于软件无线电的多制式通信信号产生器设计与实现

12.开关电源EMI滤波器的设计

13.反激式电源传导噪声模态分离技术的研究

14.核电磁脉冲源辐射的数值仿真

15.基于MATLAB的扩频通信系统及同步性能仿真

16.一种多频带缝隙天线的设计

调制解调器及同步性能的仿真分析

18.跳频频率合成器的设计

系统子载波间干扰性能分析

20.复合序列扩频通信系统同步方法的研究

21.基于DDS+PLL的频率源设计

22.基于训练序列的OFDM系统同步技术的研究

23.正交频分复用通信系统设计及性能研究

技术研究及其性能比较

25.基于蓝牙的单片机无线通信研究

26.物联网智能温室控制系统中远程信息无线传输的研究

27.船载AIS通信系统调制器的设计与实现

28.基于FPGA的16QAM调制器设计与实现

29.基于多载波通信的信道化技术研究

30.简易无线通信信号分析与测量装置

一 课题任务:以FPGA适配板为核心,设计并制作一款数字万年历。此数字万年历以“日”为基本计时单位,用8只数码管适时显示“年、月、日”。此万年历具有区分大小月、调整日期、生日提醒等功能。 二 课题研究现状及发展趋势:在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。为了更好的利用我们自己的时间,我们必须对时间有一个度量,因此产生了钟表。钟表的发展是非常迅速的,从刚开始的机械式钟表到现在普遍用到的数字式钟表,即使现在钟表千奇百怪,但是它们都只是完成一种功能——计时功能,只是工作原理不同而已,在人们的使用过程中,逐渐发现了钟表的功能太单一,没有更大程度上的满足人们的需求。因此在这里,我想能不能把一些辅助功能加入钟表中。在此设计中所设计的钟表不但具有普通钟表的功能,它还能实现额外的功能:世界时、农历显示。人类不断研究,不断创新纪录。发展到现在人们广泛使用的万年历。万年历是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,但是所有这些,都是以钟表数字化为基础的。因此,研究万年历及扩大其应用,有着非常现实的意义。它可以对年、月、日、周日、时、分、秒进行计时,对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒等信息,还具有时间校准等功能。综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。三 设计方案:1.工作原理...................有做好的设计可以给你参阅的!!!!!!

单片机论文摘要万能模板

论文摘要万能模板

论文摘要万能模板,写论文是每个毕业学子的必要任务,论文写得好不好直接影响后续的学业,最近很多朋友都在写论文,下面我就来分享论文摘要万能模板,供大家参考,希望能对大家有所帮助!

1、首先介绍本文研究的背景和发展现状,指出本文尚待解决的问题和造成的`影响。一般在前言中可以挑出研究背景、目的或假设。

范例:随着(社会)的发展,(主题)在(主题领域)中扮演着越来越重要的角色。而过去,人们对(主题)的理解仅限于(背景现状)。从而导致了一系列问题(罗列3-5条本文待解决的问题),这些问题造成了(详述什么影响)。

2、之后,叙述研究采用的技术方法和路线

范例:基于此,本文拟采用(实验法、调查法、实证研究法、定量分析法)进行研究

3、再简述某某问题的技术解决策略,并带来怎样的结果

范例:并为解决上述问题,提出了(3-5条,与前述的问题对应)解决方案。

4、对上述内容总结,将结果上升到对社会、科学研究等领域,突出其作用价值。在结论章节中可以挑出有用的句子。注意避免夸大结论

范例:期望能够促进(主题)的发展,推动(主题领域)继续更好地发展。

5、最后,将以上内容重新整理,组成200-300字的一个段落。确保文意顺畅,删除文章里没有提及的信息和不必要的方法细节。

1、基于、、、理 论,本文分析了……; 当前,……(背景),本文从……角度/方向/领域进行关于……的研究; 针对……问题/现象,从……方面,利用……方法进行研究。

2、本文采用……研究方法/研究模型,综合比对……理 论; 根据……研究方法/理 论模型,充分考量/考虑/分析……,对……问题进行了深入探索。

3、研究表明/显示/证实,……; 数据证明,……;……的发现,对……问题的解决和突破具有重要意义/影响。

4、建议……;实践证明,……; 为……,已证明……。

5、本论文以《……》为切入点,重点研究……。本文分为四个部分,第一部分简单分析了……现状;第二部分阐述了……模式;第三部分……模式现存问题;第四部分打造……的思考。

摘 要 LCD液晶显示已经是人机界面的关键技术。本文对基于单片机的LCD液晶显示器控制系统进行了研究。 首先在绪论中介绍了本课题的课题背景、研究意义及完成的功能。本系统是以单片机的基本语言C语言来进行软件设计,51的编程语言常用的有二种,一种是汇编语言,一种是C 语言。汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C 语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C 语言还可以嵌入汇编来解决高时效性的代码编写问题。对于开发周期来说,中大型的软件编写用C 语言的开发周期通常要小于汇编语言很多。综合以上C 语言的优点,我在学习时选择了C 语言指令的执行速度快,节省存储空间。为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。使硬件在软件的控制下协调运作。正文中首先简单描述系统硬件工作原理,且附以系统硬件设计框图,并介绍了单片机微处理器的发展史,论述了本次毕业设计所应用的各硬件接口技术和各个接口模块的功能及工作过程, 并具体描述了AT89C51 AMPIRE128×64接电路接口的软、硬件调试。其次阐述了程序的流程和实现过程。本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。 最后对我所开发的用单片机实现LCD液晶显示器控制原理的设计思想和软、硬件调试作了详细的论述。关键词:单片机,微处理器,LCD,89C51,AMPIRE128×64Abstract The LCD manifestation has been the key technique of the an-machine interface. This text to basic proceeded the research in Micro Controller Unit liquid crystal display control system. Introduced the lesson a background of this lesson and study meaning and finished functions in introduction first. This system edits collected materials the language to proceed with single the basic language of a machine the software designs, the instruction carries out the speed quick, save memory. For the sake of easy to expand with the design adoption mold a logic for turning construction, making procedure designing relation that change, software more shorter and more easier to understand. Make hardware control in software descended to moderate the operation. The text inside describes the system hardware work principle in brief first, and attach with the system hardware design frame diagram, combine development history that introduced the single a machine microprocessor, discuss this graduate design a function for applied each hardware connecting a people the technique connects with each one a mold piece and work processes, combine to describe in a specific way 89C51, and the AMPIRE128×64 circumscribes the electric circuit connects oscular and soft, the hardware adjusts to try. Expatiated the process of the procedure the next in order with realizes process. Develop to me finally of use the single a machine realizes the design thought that the liquid crystal display of LCD control principle with soft, the hardware adjusted to try to make the detailed :single chip microcomputer,microprocessor,LCD,89C51,AMPIRE128×64

8051单片机毕业论文

相关范文:基于单片机监控系统的研究【摘要】文章所设计的基于单片机监控系统汽车行驶记录仪所实现的主要功能:记录汽车停车前2秒内的行驶速度,并能实时地显示汽车行驶的状态信息,同时还对汽车的超速行驶进行报警并记录一天之内的超速次数。【关键词】单片机;模块;监控本文所设计的汽车行驶记录仪是基于两片8051单片机作为控制系统的核心来进行设计的,整个系统分为六大模块分别是:电源模块、速度信号采集模块、时钟模块、单片机模块、存储器模块、显示模块。一、电源模块的设计记录仪作为车载设备,使用汽车电源。汽车上的电源有两个:汽车发电机和蓄电池。记录仪的电源直接取自蓄电池,在发电机转速和用电负载发生较大变化时,可保持汽车电网电压的相对稳定,同时,还可吸收电路中随时出现的瞬时过电压,以保护电子元件不受损害。车辆使用的车载蓄电池标称值有两种 12V的和 24V的,因此为了得到需要的 5V的电压,我选用了 DC-DC 电源转换芯片。二、速度信号采集模块的设计速度信号检测模块的原理是:汽车行驶过程中,车轮经过传感器,单位时间内输出一定的脉冲,传感器输出的脉冲通过差动放大电路的放大与整形,然后送到单片机 8051 的 T0端口进行脉冲计数,与此同时 8051 的 T1 进行计时开始待到定时器产生中断请求后,由计数器得到的脉冲数经过速度计算的公式和里程的计算后得到汽车行驶的速度和里程。从而得到汽车的行驶速度和里程,存储与 8051 的 RAM数据存储区。本系统采用霍尔传感器将速度信号转换为脉冲信号,考虑到传感器的体积要小,便于安装,误差要尽量减小等要求,设计采用车轮旋转一周速度传感器要输出若干个脉冲的方法。本系统采用的是在变速器上安装 3个小磁钢,霍尔传感器可相应的输出 3 个脉冲用于速度信号的采集。速度信号采集模块采用 THS118 型霍尔元件作为速度信号采集部分的速度传感器。三、时钟模块的设计时钟模块主要是用于对时、分、秒、年、月、日和星期的计时。该模块采用的芯片为DS12C887 时钟芯片。此芯片集成度高,其外围的电路设计非常的简单,且其性能非常好,计时的准确性高。DS12C887为双列直插式封装。其具体与单片机的连接如下所述:AD0~AD7双向地址/数据复用线与单片机的P0口相联,用于向单片机交换数据;AS 地址选通输入脚与单片机的 ALE 相联用于对地址锁存,实现地址数据的复用;CS 片选线与单片机的 相联,用于选通时钟芯片;DS 数据选通读输入引脚与单片机的读选通引脚相联,用于实现对芯片数据的读控制;R/W 读/写输入与单片机的写选通引脚相联,用于实现对时钟芯片的写控制;MOT 直接接地,选用 INTEL 时序。IRQ引脚与 8051 的 INT1 相连,用于为时间的采集提供时间基准。四、单片机模块的设计本系统采用两片单片机,两个单片机之间采用串行通讯,用于两者之间的数据交换。其工作时序是由外部晶振电路提供的,本系统采用的晶振频率是 12 兆 HZ。其复位电路为自动上电复位。设计中所采用的单片机为 8051。单片机在系统中主要是用来对其他模块进行控制,是整个系统的核心部件。主单片机主要是用于对速度信号采集模块、时钟模块和存储模块进行控制,同时还要与从单片机进行数据的交换。其外围的 I/O口主要与这些模块的中心芯片的数据总线或地址总线相连,其控制总线与这些模块的控制线相连。从单片机主要是用于对显示和校时的控制,因此其 I/O口主要与 LCD显示器的 I/O口相连,其控制线与 LCD显示器的控制线相连。由于从单片机的外部中断源只有两个,而我所设计的对时钟的校时主要是通过外部中断完成的,所以要对从单片机的外部中断源进行扩展。本系统采用了 8259A 进行中断源的扩展,从而实现对时钟的校时。五、储模块的设计汽车行驶记录仪对系统存储数据的实时性及长久性要求很高,因此本系统我采用了ATMEL 生产的 AT29C010A Flash 性存储器。其存储空间为 16K,能够满足设计的要求。AT29C010A是一种 5V在线闪速可电擦除的存储器,具有掉电保护功能;方便的在线编程能力不需要高的输入电压,指令系统在 5V 电压下即可控制对 AT29C010A 的读取数据,这与对 EEPROM 的操作相似。再编程能力是以每一分区为单位的,128 字节的数据装入AT29C010A 的同时完成编程。在一个再编程周期里,存储单元的寻址和 128 字节的数据通过内部锁存器可释放地址和数据总线,这样可为其它操作提供地址和数据总线。编程周期开始后,AT29C010A会自动擦除分区的内容,然后对锁存的数据在定时器作用下进行编程。六、示模块的设计显示器主要是为人机交互提供即时的信息,能让人们与机器进行很好的交流。在众多种类的显示器中,越来越多的仪器仪表及人机交互界面采用液晶显示器。LCD 可分为段位式LCD、字符式 LCD和点阵式 LCD。其中段位式和字符式只能用于数字和字符的简单的显示,不能满足图形曲线和汉字显示的要求;而点阵式不仅能够显示字符和数字,还可以显示各种图形、曲线及汉字,可以实现屏幕的上下左右滚动等功能。七、键的设计本系统的按键主要是用于对时钟的校对,现对按键的功能简述如下:按键 1~7是用于对秒分时日月年星期校时的中断申请;按键 8 是用于对校时进行加一的操作,键 9 是用于对校时进行减一的操作;按键 10 是用于实现对超速报警监控功能的复位。八、系统软件流程图的设计由于本设计主要是完成系统的硬件电路设计,因此我对系统的软件设计只进行了系统部分软件流程图的绘制。设计的流程图有:记录仪总体软件设计流程图、速度信号采集模块软件设计流程图、时钟模块软件设计流程图、外部中断软件设计流程图和 LCD 显示实现的软件设计流程图。【参考文献】[1]戴佳,苗龙,陈斌.51单片机应用系统开发典型实例[M].中国电力出版社.[2]周航慈.单片机应用程序设计技术[M].北京航空航天大学出版社.[3]胡汉才.单片机原理及其接口技术[M].清华大学出版社.[4]余发山.单片机原理及应用技术[M].中国矿业大学出版社.仅供参考,请自借鉴希望对您有帮助

别人是拿RMB换的呀

家用可燃气体报警器的设计·基于数字温度计的多点温度检测系统·基于凌阳单片机的语音实时采集系统设计·基于单片机的数字频率计的设计·基于单片机的数字电子钟设计·设施环境中温度测量电路设计·汽车倒车防撞报警器的设计·篮球赛计时记分器·基于单片机的家用智能总线式开关设计·设施环境中湿度检测电路设计·基于单片机的音乐合成器设计·设施环境中二氧化碳检测电路设计·基于单片机的水温控制系统设计·基于单片机的数字温度计的设计·基于单片机的火灾报警器·基于单片机的红外遥控开关设计·基于单片机的电子钟设计·基于单片机的红外遥控电子密码锁·大棚温湿度自动监控系统·基于单片机的电器遥控器的设计·单片机的语音存储与重放的研究·基于单片机的电加热炉温度控制系统设计·红外遥控电源开关·基于单片机的低频信号发生器设计·基于单片机的呼叫系统的设计·基于PIC16F876A单片机的超声波测距仪·基于单片机的密码锁设计·单片机步进电机转速控制器的设计·由AT89C51控制的太阳能热水器·防盗与恒温系统的设计与制作·AT89S52单片机实验系统的开发与应用·基于单片机控制的数字气压计的设计与实现·智能压力传感器系统设计·智能定时器·基于单片机的智能火灾报警系统·基于单片机的电子式转速里程表的设计·公交车汉字显示系统·单片机数字电压表的设计·精密VF转换器与MCS-51单片机的接口技术·基于单片机的居室安全报警系统设计·基于89C2051 IC卡读/写器的设计·PC机与单片机串行通信毕业论文·球赛计时计分器 毕业设计论文·松下系列PCL五层电梯控制系统我这有,肯定有你满意的QQ 89 ........................................后面接着输入...... 36........................................后面接着输入...... 28........................................后面接着输入...... 136 (4行连着输入就是我的QQ)

程序源代码ORG 0000H ;主程序的入口地址LJMP MAIN ;跳转到主程序的开始处ORG 0003H ;外部中断0的中断程序入口地址ORG 000BH ;定时器0的中断程序入口地址LJMP T0_INT ;跳转到中断服务程序处ORG 0013H ;外部中断1的中断程序入口地址MAIN : MOV SP,#50HMOV IE,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断MOV TMOD,#51H ;设置T1为计数方式,T0为定时方式,且都工作于模式1MOV TH1,#00H ;T1计数器清零MOV TL1,#00HSETB TR1 ;启动T1计时器SETB EX1 ;允许INT1中断SETB IT1 ;选择边沿触发方式MOV DPTR ,#0003HMOV A, #80H ;给8255赋初值,8255工作于方式0MOVX @DPTR, AAGAIN: JB ;判断是否要设定东西方向红绿灯时间的初值,若为1 则跳转MOV A,P1JB ;判断是否为1,若为1则设定红灯时间,否则设定绿灯时间MOV R0,#00H ;R0清零MOV R0,A ;存入东西方向绿灯初始时间MOV R3,ALCALL DISP1LCALL DELAYAJMP AGAINRED: MOV A,P1ANL A,#7FH ;置0MOV R7,#00H ;R7清零MOV R7,A ;存入东西方向红灯初始时间MOV R3,ALCALL DISP1LCALL DELAYAJMP AGAIN;-------------------------------------------N0: SETB TR0 ;启动T0计时器MOV 76H,R7 ;红灯时间存入76HN00: MOV A,76H ;东西方向禁止,南北方向通行MOV R3,AMOV DPTR,#0000H ;置8255A口,东西方向红灯亮,南北方向绿灯亮MOV A,#0DDHMOVX @DPTR, AN01: JB : SETB R3,#00H,N01 ;比较R3中的值是否为0,不为0转到当前指令处执行;------黄灯闪烁5秒程序------N1: SETB R3,#05HMOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮MOV A,#0D4HMOVX @DPTR,AN11: MOV R4,#00HN12: CJNE R4,#7DH,$ ;黄灯持续亮秒N13: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭MOV A,#0DDHMOVX @DPTR,AN14: MOV R4,#00HCJNE R4,#7DH,$ ;黄灯持续灭秒CJNE R3,#00H,N1 ;闪烁时间达5秒则退出;------------------------------------------------------------N2: MOV R7,#00HMOV A,R0 ;东西通行,南北禁止MOV R3,AMOV DPTR,#0000H ; 置8255A口,东西方向绿灯亮,南北方向红灯亮MOV A,#0EBHMOVX @DPTR,AN21: JB : CJNE R3,#00H,N21;------黄灯闪烁5秒程序------N3: MOV R3,#05HMOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮MOV A,#0E2HMOVX @DPTR,AN31: MOV R4,#00HCJNE R4,#7DH,$ ;黄灯持续亮秒N32: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭MOV A,#0EBHMOVX @DPTR,AN33: MOV R4,#00HCJNE R4,#7DH,$ ;黄灯持续灭秒CJNE R3,#00H,N3 ;闪烁时间达5秒则退出SJMP N00;------闯红灯报警程序------B0: MOV R2,#03H ;报警持续时间3秒B01: MOV A,R3JZ N1 ;若倒计时完毕,不再报警CLR ;报警CJNE R2,#00H,B01 ;判断3秒是否结束SJMP N02;------1秒延时子程序-------N7: RETIT0_INT:MOV TL0,#9AH ;给定时器T0送定时10ms的初值MOV TH0,#0F1HINC R4INC R5CJNE R5,#0FAH,T01 ;判断延时是否够一秒,不够则调用显示子程序MOV R5,#00H ;R5清零DEC R3 ;倒计时初值减一DEC R2 ;报警初值减一T01: ACALL DISP ;调用显示子程序RETI ;中断返回;------显示子程序------DISP: JNB : MOV B,#0AHMOV A,R3 ;R3中值二转十显示转换DIV ABMOV 79H,AMOV 7AH,BDIS: MOV A,79H ;显示十位MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#0002HMOVX @DPTR,AMOV DPTR,#0001HMOV A,#0F7HMOVX @DPTR,ALCALL DELAYDS2: MOV A,7AH ;显示个位MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#0002HMOVX @DPTR,AMOV DPTR,#0001HMOV A,#0FBHMOVX @DPTR,ARET;------东西方向车流量检测程序------T03: MOV A,R3SUBB A,#00H ;若绿灯倒计时完毕,不再检测车流量JZ N3JB R7CJNE R7,#64H,E1MOV R7,#00H ;中断到100次则清零E1: SJMP N22;------东西方向车流量显示程序------T02: MOV B,#0AHMOV A,R7 ;R7中值二转十显示转换DIV ABMOV 79H,AMOV 7AH,BDIS3: MOV A,79H ;显示十位MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#0002HMOVX @DPTR,AMOV DPTR,#0001HMOV A,#0F7HMOVX @DPTR,ALCALL DELAYDS4: MOV A,7AH ;显示个位MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#0002HMOVX @DPTR,AMOV DPTR,#0001HMOV A,#0FBHMOVX @DPTR,ALJMP N7;------延时4MS子程序----------DELAY: MOV R1,#0AHLOOP: MOV R6,#64HNOPLOOP1: DJNZ R6,LOOP1DJNZ R1,LOOPRET;------字符表------TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND先给你个源程序,加点分,我把我的毕业设计发给你,WORD 文档,QQ263400235

  • 索引序列
  • 单片机万年历毕业论文
  • 机电单片机毕业论文
  • 万年历的毕业论文
  • 单片机论文摘要万能模板
  • 8051单片机毕业论文
  • 返回顶部