基于51单片机电子万年历课程论文.doc
《基于51单片机电子万年历课程论文.doc》由会员分享,可在线阅读,更多相关《基于51单片机电子万年历课程论文.doc(26页珍藏版)》请在沃文网上搜索。
1、目 录一、设计内容及要求3 二、 设计方案 3 三、硬件系统设计 4 四、软件系统设计7 五、系统调试 9 六、结论 10 参考文献 附录一 (原理图、线路板图) 附录二 (代码清单,包含注释)七、教师评语 11 一、 设计内容及要求(1)、基于单片机的C语言为基础进行软件设计,通过1602液晶为载体来显示数据,设计一个电子万年历;(2)、要求可以实现年,月,日,周,时,分,秒的显示及调节(3)、可以进行闹钟设置。二、设计方案(1)、单片机芯片的选择方案一、采用AT89S52,片内ROM全都采用Flash ROM:能以3V的超低电压工作;同时也与MCS-51系列单片机以该芯片内部存储器为8Kb
2、 ROM存储空间同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入功能时,不需对芯片进行多次拔插,所以不会对芯片造成损坏。方案二、采用89C51作为硬件核心,采用Flash ROM,内部具有4Kb ROM存储空间,而且与CMS-51系列单片机兼容。但是不具备ISP在线编程技术,当对电路调试时,由于程序的错误修改或对程序的新增功能需要烧入功能时,对芯片的多次拔插会造成芯片的损坏。所以选择了AT89S52作为主控制系统。(2)、显示模块的选择方案一、采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示文字,图形,显示多样,清晰可
3、见,而其体积较小,使用方便,可以使电路更加简洁,所以选择了液晶显示器。应实习要求选择LCD1602液晶即可。方案二、采用点阵式数码管显示,点阵式数码管是有八行八列的发光二极管组成,对于显示文字比较合适,如采用显示数字有些太浪费,而且费用也较高。所以选用LCD1602液晶显示。(3)、时钟芯片的选择 方案一、采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对时,分,秒,日,周,月,年进行计数,而其精度高工作电压2.5V5.5V范围内,2.5V时耗电小于300nA。方案二、直接采用单片机定时计数器提供秒信号,程序来实现年月日周时分秒计数,采用此种设计虽然减少了芯片的
4、使用,成本低.但是实现时间误差较大。所以选择了DS1302时钟芯片。总结上述: 方案的选定:采用AT89S52作为主控制系统;LCD1602液晶显示器作为显示设备;DS1302作为提供时钟电路。三、硬件系统设计(1)、系统硬件概述本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低电压工作,时钟电路由DS1302提供,它是一种高性能,低功耗,带RAM的实时时钟电路,它可以对年月周日时分秒进行计时,工作电压为2.2V5.5V。采用三线接口和CPU进行同步通信,并可采用突发方式一次传送多字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时存放数据的RAM
5、寄存器。可产生年月日周时分秒,具有使用寿命长,精度高和低功耗等特点。同时具有掉电保存功能。显示部分由LCD1602来实现。(2)、电路设计框图(3)、主要电路模块设计1、单片机主控制模块AT89S52单片机为40引脚双列直插芯片,有4个I/O口P0 P1 P2 P3,MCS-51单片机共有4个8位的I/O口(P0 P1 P2 P3),每一条I/O线都能做独立的输入或输出。单片机的最小系统如图所示(见附录一),18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒向放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒向放大器的输出,第九引脚为复
6、位输入端,接上电容,电阻及开关后能够构成复位上电电路,20引脚为接地端,40引脚为电源端。2、时钟电路模块如图所示DS1302的引脚排列及其与单片机的连接图(见附录一),其中VCC1为电池,VCC2为主电源,在主电源关闭的情况下,也能保证时钟的连续运行。DS1302由VCC1或VCC2中较大的提供电源,当VCC2大于VCC1+0.2V时,VCC2给DS1302供电,当VCC2小于VCC1时,DS1302由VCC1供电。X1和X2是震荡源,外接32.768KHZ的晶振。RST是复位/片选线,通过把RST输入驱动置高平来启动所有数据传输。当RST为高电平时,所有数据传输被初始化,允许对DS1302
7、进行操作。如果RST被置低电平,则会终止此次数据传输,I/O变为高阻态。上电时当VCC大于等于2.5V前,RST必须保持低电平。I/O为串行数据输入端(双向)。SCLK始终是输入端。3、显示模块显示模块是一个十分重要的模块,它使人们读时间更加直观,在连接的时候需要进行很多的考虑,第三个引脚是亮暗调节引脚,可以接个可调电阻,显示模块的各个引脚连接:单片机的P1.0P1.7分别驱动液晶的AD0到AD7口:单片机的P2.5P2.6P2.7分别接1602的RS、RW、EN口,Vcc接高电平,Vss接地。(1602连接图见附录一)4、控制模块(键盘扫苗) 如果万年历长时间使用或其它情况下导致时间复位,就
8、需要重新来设定时间,这时候就需要用键盘来实现调节,按键功能:S1:功能切换键;S2加键;S3减键;S4:闹钟调节;S5:闹钟停止响铃;四、 软件系统设计开始flag=3flag=2flag=1功能键按下 进入日调整功能键按下 进入月调整时+1时-1分+1分-1减键k1加键k1等待按键功能键按下 进入时调整减键k2加键k1等待按键功能键按下 进入分调整flag=4flag=1flag=1功能键按下 跳出时间调整程序 执行主程序星期+1星期-1减键k2加键k1等待按键功能键按下 进入星期调整年+1年-1减键k2加键k1等待按键功能键按下 进入年调整日+1日-1减键k2加键k1等待按键月+1月-1减
9、键k2加键k1等待按键(程序见附录二)五、 系统调试电子万年历电路系统虽然简单,但在调试过程中,还是会从硬件和软件这些方面找到一些值得注意的问题,它们对系统能正常工作产生了非常重要的影响,回想这些问题大部分都是可以避免的。1、 硬件调试(1) 测试1602液晶时背光很暗,写进去的信息不能显示出来,后来经过调节与1602连接的电位器可以增强背光,同时让写进去的信息清晰的显示在液晶上(2) 把程序下进单片机后,时分秒不能正常显示,而且总是显示85,仔细检查程序过后发现没有错误,而且找不到程序中让其显示85的地方,所以认为硬件方面出了问题,经过,换了一个ds1302芯片后,显示结果正常。2、 软件调
10、试(1) 从1302中读数据时,1302的读写寄存器弄混了,导致不能正常走时,后来查了一下1302寄存器的功能,重新修改程序后现象正确。(2) 在用ds1302时,程序中用中断来读取ds1302的数据,此时液晶能正常走时,但是在后续调试按键程序的时候,发现程序一旦进入中断,就会不停的从1302中读取数据,按键不起作用,所以改变了以前的编程思想,把中断去掉,改用标志位来判定,在主函数中直接读取1302的数据,改正完后按键调试正常。六、结论本次课程设计让我们体验到了电子产品设计的乐趣,更重要的是在软硬件这两个方面都得到了锻炼,制作了自己画的首个PCB板,并且PCB板未出现任何连线错误,省去了很多调
11、试硬件的时间,软件方面更加熟练了对51单片机的编程,能对各I/O口进行操作,同时还了解了ds1302时钟芯片的功能,对其内部各个寄存器有了一定的认识,还有LCD1602液晶,掌握了其各个管脚的作用和功能,可以熟练的对其进行编程。总之,这次课程设计让我们学到了不少专业方面的知识和技能,在整个课程设计中还要感谢老师对我们的指导和帮助,让我们能及时发现自身出现的一些问题。七、附录单片机最小系统DS1302时钟模块显示模块控制模块程序:#include#define uchar unsigned char#define uint unsigned intsbit rs=P24;sbit rw=P25;
12、sbit en=P26;sbit s1=P00;sbit s2=P01;sbit s3=P02;sbit s4=P03;sbit s5=P04;sbit beep=P05;sbit ACC0=ACC0;sbit ACC7=ACC7;sbit IO=P34;sbit RST=P35;sbit SCLK=P27;uchar i,slnum,shi,fen,miao,ri,yue,nian,week,flag,s2num,miao1,fen1,shi1;uchar table43;uchar code table= 2011/06/09 ;uchar code table1= 00:00:00 al
13、arm ;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/* 液晶初始化及其子程序 */void write_com(uchar com)rs=0;rw=0;en=0;P1=com;delay(5);en=1;delay(5);en=0;void write_date(uchar date)rs=1;rw=0;en=0;P1=date;delay(5);en=1;delay(5);en=0;void init()en=0;write_com(0x38);write_com(0x0c);write_com(0x06);writ
14、e_com(0x01);write_com(0x80);for(i=0;i17;i+)write_date(tablei);delay(5);write_com(0x80+0x40);for(i=0;i0;i-)IO=ACC0;SCLK=0;SCLK=1;ACC=ACC1;uchar read_byte()RST=1;for(i=8;i0;i-)ACC7=IO;SCLK=1;SCLK=0;ACC=ACC1;return(ACC);void write_1302(uchar add,uchar dat)RST=0;SCLK=0;RST=1;write_byte(add);write_byte(d
15、at);SCLK=1;RST=0;uchar read_1302(uchar add)uchar temp;RST=0;SCLK=0;RST=1;write_byte(add);temp=read_byte();SCLK=1;RST=0;return(temp);/*进制转换,BCD转十进制*/uchar BCD_Decimal(uchar bcd)uchar Decimal;Decimal=bcd4;return(Decimal=Decimal*10+(bcd&0x0F);/* ds1302初始化 */void ds1302_init()RST=0;SCLK=0;write_1302(0x8
16、e,0x00);write_1302(0x8e,0x80);/* 向液晶写入年月日时分秒及星期 */void write_sfm(uchar add,uchar dat)uchar shi,ge;ge=dat%10;shi=dat/10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);void write_nyr(uchar add,uchar dat)uchar shi,ge;ge=dat%10;shi=dat/10;write_com(0x80+add);write_date(0x30+shi);write
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 电子 万年历 课程 论文