单片机钟表论文.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机钟表论文

单片机钟表 指导老师: 田开坤老师 一、功能介绍: 1.可调整时间的24小时时钟; 2.可设定到时间报警的功能,有LED闪烁; 3.带启动/停止/复位的秒表,精度是1/100秒,最大计时时间为1小时; 4.在显示当前时间模式下,按下任意一个调整键(即中间两个键),会显示闹钟的小时或分钟; 4.在任意模式下,按下面板上第四个键,可以显示“LICHAO”字样,并有流水灯效果; 二、使用说明: 模式1:时间显示,此时按下按键二,显示定时的小时时间,按下按键三,显示定时的分时间; 模式2:秒表功能,按键二启动或者暂停秒表,按键三复位秒表; 模式3:时间分调整,按键二分增加,按键三分减少; 模式4:时间小时调整,按键二小时增加,按键三小时减少; 模式5:显示定时时间,按键二和按键三无效; 模式6:定时分调整,按键二分增加,按键三分减少; 模式7:定时小时调整,按键二小时增加,按键三小时减少; 三、基本原理框图和程序流程图 四、电路图 电路中在P1口接8个发光二极管,做指示和报警效果用;由于P0口高电平驱动能力较差,故需接74ls245,用来驱动LED;P2口接74ls138(既作译码使用,同时它也有较好的低电平驱动能力)作扫描,既节约了P2口资源减少连线,同时也提高了系统的稳定性;P3口接4个按键和蜂鸣器。 五、程序模块: 子函数(包括中断服务程序): void time(void) interrupt 1 using 1 //定时器0中断服务程序,实现时钟计数 void counter(void) interrupt 3 using 2 //定时器1中断服务程序,实现秒表计数 void Init(void) interrupt 0 using 3 //外部中断服务程序,实现模式计数 void display(void) //数码管显示子函数 void Delayx1ms(uchar count) //延时函数,延时时间=count*1ms void Led(void) //LED流水的子函数 void Scankey(void) // 按键扫描延时子函数 void Alarms(void) //闹钟报警模块 程序解释(特色模块): 按键扫描延时子函数(实现按键的人性化) Scankey(); 该函数既解决了按键的去抖动读取问题,又解决了当按键按住不动时,变量自动连续改变的问题(改变的快慢由i值的大小来决定),而且解决延时的本身就是将数据读出并显示出来。也就是在两次读按键期间,单片机是去多次显示上一次的时间数据(包括由上一次按键改变后的数据),这样就不会因为单纯的延时而导致占用系统资源。 2. 外部中断服务程序(模式选择的实现) void Init(void) interrupt 0 using 3 //外部中断0服务程序,实现模式计数 由于按键在按下和弹起的时候都会产生抖动,使得达不到预期的效果,但是采用延时的方法会占用大量的系统资源,而采用上述方法显然也不太合适,所以最好采用中断的方法,当进入中断后,马上关闭中断,然后在程序执行一段时间后(相当于延时),再去打开中断,检测是否有中断的产生,这样就可以避开抖动的影响,而且不会占据系统资源。 六、参考文献 1.单片机应用系统开发实例导航 靳达 编著 2.单片机原理及应用 李建忠 编著 3.基于单片机8051的嵌入式开发指南 胡大可 李培宏 方路平 编著 附:源程序 #include REGX51.H #define uchar unsigned char //P3_0是第三个按键,P3_1是第二个按键,P3_2是第一个按键,P3_3是接SPEAKER,P3_4是第四个按键 uchar data BUFFER[3]={0,0,0}; //定义显示缓冲区 char data CLOCK[4]={0,0,0,0}; //定义时间变量缓冲 uchar data second[3]={0,0,0}; //定义秒表变量缓冲 char data alarm[2]={0,12}; //定义存放定时时间变量 uchar data STATE=0; //定义全局变量:模式设定变量 uchar data kk=30; //SPEAKER响声频率设定常数 bit data sign1=0;

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档