单片机万年历实训报告_第1页
单片机万年历实训报告_第2页
单片机万年历实训报告_第3页
免费预览已结束,剩余25页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、GUANGDONG COLLEGE OF I NDUSTRY AND COMMERCE单片机万年历实训报告系 部:电气自动化系班 级:13电信2班姓 名:周祝福 指导老师:黄丽英、侯聪玲实训时间:2015年1月19日23日用 AT89C51 与 LCD1602 设计的可调式电子日历时钟一、总体设计1.1、设计目的为巩固所学的单片机知识,把所学理论运用到实践中,用LCD1602与AT89C51设计可调式电子日历时钟。1.2、设计要求(1)显示:年、月、日、时、分、秒和星期;(2)设置年、月、日、时、分、秒和星期的初始状态 ;(3) 能够用4个按键调整日历时钟的年、月、日时、分、秒和星期; 完成可

2、调式电子日历时钟的硬件和软件的设计,包括单片机的相关内 容;日历时钟模块的设计,液晶显示模块的设计,按键模块的设计。 控制程序的编写等。1.3、系统基本方案选择和论证、单片机芯片的选择方案方案一:采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容。万案一:采用STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T) 的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全 兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路 PWM,8路高速

3、10位A/D转换(250K/S),针对电机控制,强干扰场合。但造价 较咼。、显示模块选择方案和论证:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成, 对于显示文字比较适合,如采用显示数字显得太浪费,且价格也相对较高。所以 不用此种作为显示。采用LED数码管动态扫描,虽然LED数码管价格适中,但要显示多个数字 所需要的个数偏多,功耗较大,显示出来的只是拼音,而不是汉字。所以也 不用此种作为显示。方案二:采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量字符,且视觉效果较好,外形美观。LCD1602可实现显示2行十六个字符134、电路设计最终方案决定综上各方案所述,对此次作

4、品的方案选定:采用80C51作为主控制系统;LCD1602液晶带汉字库显示屏作为显示部分。二、硬件设计2.1、电路设计模块图如图LCD'按键控制模块622.3、用proteus仿真软件仿真并抓图LBLatextv2015B123 THU1O55712JI34567891011121314s D E Vs D E SA01234567V V V R R E DDDDDDDD三、软件设计3.1、画出各个函数流程图。、LCD1602液晶显示控制流程图如图入口对1602初始化写入显示设置命令延时一段时间检查忙标志是、调时函数控制流程如图实训心得:通过为期一周的单片机实训,是我们对这门课有了许多

5、新的了解,弥补了在课堂上学习的不足。 相信这对我们以后的学习和工作都会有很大的帮助。我们一定要在最短的时间里对这些不足加以改正 !在试训中有苦有甜,当我们为一个很难攻破的程序找出路 时,心情烦躁,感觉自己很不可理喻,当程序一点一点编好后,自己从心底感觉到一点小小 的安慰,看着自己的成果。感觉很欣慰。总而言之,单片机课程设计对于我们有很大的帮助我们从中受益匪浅。程序代码#in clude<reg52.h>#defi ne uchar un sig ned char#defi ne uint un sig ned int uchar a,co un t,S1 nu m,x qnum;

6、uchar yue,ri,shi,fe n, miao;uint nian;sbit lcdrs=P2A5;sbit lcdrw=P2A4;sbit S仁 P3A0;sbit S2=P3A1;sbit S3=P3A2;sbit S4=P3A3;sbit Icde n=P2A3;/定义键-进入设置II定义键-增大/定义键-减小II定义键-退出设置uchar code table0="2015-01-11 SUN"uchar code table1="OO:OO:OO"uchar code xi ngqi3="MON","TUE

7、","WED","THU","FRI","SAT","SUN"void delay( uint z)ui nt x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);1602液晶显示器模块*void write_com(uchar com) lcdrw=0;lcdrs=O;P0=com;delay(5);Icde n=1;delay(5);lcde n=0;/液晶写指令void write_data(uchar dat)lcdrw=0;lcdrs=1;P

8、0=dat;delay(5);lcde n=1;delay(5);lcde n=0;/*年月日写入1602函数*/void write_sfm(uchar add,uchar dat)uchar shi,ge;shi=dat/10;ge=dat%10; write_com(0x80+0x40+add); write_data(0x30+shi);write_data(0x30+ge);void write_yr(uchar add,uchar dat)uchar shi,ge;shi=dat/10;ge=dat%10;write_com(0x80+add);write_data(0x30+sh

9、i);write_data(0x30+ge);void write_ nian( uchar add, uint dat)/液晶写数据/写时分秒函数/写月日函数/写年函数uint qia n, bai,shi,ge;qia n=dat/1000; bai=dat%1000/100;shi=dat%100/10;ge=dat%10; write_com(0x80+add); write_data(0x30+qia n); write_data(0x30+bai); write_data(0x30+shi); write_data(0x30+ge); /* 1602初始化void in it()*

10、/void ini t_lcd()/液晶初始化lcde n=0;nia n=2015; yue=1; ri=11; shi=0; fen=0; miao=0;/ 初始 shi、fen、miaowrite_com(0x38);/设置16x2显示,5x7点阵,8位数据口write_com(0x0c);/设置开显示,不显示光标write_com(0x06);/写一个字符后地址指针加1write_com(0x01);/显示清0,数据指针清0/初始化函数ini t_lcd(); write_com(0x80); for(a=0;a<14;a+)write_data(table0a); delay(

11、5);write_com(0x80+0x40); for(a=0;a<8;a+)/液晶初始化/设置显示初始坐标/显示年月日初始值/设置显示初始坐标/显示时分秒初始值write_data(table1a); delay(5);write_nia n( 0, nia n);write_sfm(6,miao);write_sfm(3,fe n);write_sfm(0,shi);coun t=0;xqnum=0;S1n um=0;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;/*独立键盘/分别将sh

12、i、fen、miao送去液晶显示/初始化全局变量cou nt/设置定时器0工作模式1/定时器装初始值/开总中断/开定时器0中断/启动定时器0*/void keysca n()if(S1=0)delay(5);if(S1=0)S1nu m+;while(!S1);if(S1 num=1) /确认定义键被按下/定义键S1按下次数记录/释放按键确认/S1按下一次时TR0=0;write_com(0xc0+7); write_com(0x0f); / 光标闪烁/关闭定时器/光标定位到秒位置if(S1 nu m=2)write_com(0xc0+4);if(S1 nu m=3)/S1按下两次时/光标定位

13、到分位置/S1按下三次时write_com(OxcO+1);if(S1 nu m=4)write_com(0x80+13);if(S1 nu m=5)write_com(0x80+9);if(S1 nu m=6)write_com(0x80+6);if(S1 nu m=7)write_com(0x80+3);if(S1 nu m=8)/S1/S1/S1/S1/S1/光标定位到时位置按下四次时/光标定位到星期位置按下五次时/光标定位到日位置按下六次时/光标定位到月位置按下七次时/光标定位到年位置按下八次时S1n um=O;TR0=1;write_com(OxOc);/S1记录按键次数清零/开启定

14、时器/取消光标闪烁if(S1 num!=O)if(S2=0)delay(5); if(S2=0)while(!S2);if(S1 num=1)/只有定义键按下后 S2、S3、S4才有效/防抖/确认按键被按下/释放按键确认/S1按下一次时miao+;if(miao=60)miao=0;write_sfm(6,miao); write_com(0x80+0x40+6);/调整秒加1/满60清零/每调节一次送液晶显示一次/显示位置重新回到调节处if(S1 num=2)/S1按下两次时fen+;/调整分加1if(fen=60)fen=0;write_sfm(3,fe n);write_com(0x80

15、+0x40+3);if(S1n um=3)S1按下三次时shi+;/调整时加1if(shi=24)shi=0;write_com(0x80+0x40);write_sfm(0,shi);if(S1n um=4)/星期加调整xqnu m+;if(xqnum=7)xqnum=0;write_com(0x80+0x0b);for(a=0;a<3;a+)write_data(x in gqix qnu ma);delay(5);if(S1 num=5)/ 日加调整ri+;if(yue=2)if(nian %400=0)if(ri=30)ri=1;if(n ia n%400!=0)if(ri=29

16、)ri=1;else if(yue<=7)if(yue%2=0 &yue!=2)if(ri=31)ri=1;else if(yue%2!=0 &yue!=2)if(ri=32)ri=1;else if(yue>=8)if(yue%2=0)if(ri=32)ri=1;else if(yue%2!=0)if(ri=31)ri=1; write_yr(8,ri);/月加调整if(S1 nu m=6)yue+;if(yue=13)yue=1;write_yr(5,yue);if(S1 num=7)nian+;if(nian=2019)nia n=2014;write _n

17、ia n(0, nia n);if(S3=0)delay(5);if(S3=0)while(!S3);if(S1 num=1)miao-;if(miao=-1)miao=59;write_sfm(6,miao); write_com(0x80+0x40+6);if(S1 num=2)fen-;if(fen=-1)fen=59;write_sfm(3,fe n); write_com(0x80+0x40+3);if(S1 num=3)shi-;if(shi=-1)shi=23;write_sfm(0,shi); write_com(0x80+0x40);if(S1 num=4)/年加调整确认按键

18、被按下/调整秒减1II减到00后再减重新设置为59/调整分减1II调整时减1xqnu m-;II调整星期减一if(xqnum=-1)xqnum=6;write_com(0x80+0x0b); for(a=0;a<3;a+)write_data(x in gqix qnu ma); delay(5);if(S1num=5)/ 调整日ri-;if(yue=2)if(nian %400=0)if(ri=0)ri=29;if(n ia n%400!=0)if(ri=0)ri=28;else if(yue<=7)if(yue%2=0 &yue!=2)if(ri=0)ri=30;els

19、e if(yue%2!=0 &yue!=2)if(ri=0)ri=31;else if(yue>=8)if(yue%2=0)if(ri=0) ri=31;else if(yue%2!=0)if(ri=0) ri=30; write_yr(8,ri);if(S1 num=6)yue-;if(yue=0) yue=12;write_yr(5,yue);if(S1 num=7)n ia n-;if(nian=2013) nia n=2018;write _n ia n(0, nia n);if(S4=0) delay(5);if(S4=0)/调整月/调整年/退出设置、开启中断S1n u

20、m=O;TR0=1;write_com(OxOc);/*定时器0*void timer0() in terrupt 1TH0=(65535-50000)/256;TL0=(65535-50000)%256; coun t+;if(cou nt=20)coun t=0; miao+; if(miao=60)miao=0; fen+;if(fen=60)fen=0; shi+; if(shi=24) shi=0;/定时器0中断服务程序/重装定时器初始值/中断次数累加/20次50毫秒即一秒/秒加到60时分进位/分加到60时时进位/时加到24时清0xqnu m+;ri+;/如果是二月闰年判断if(yue=2) if(nian %400=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论