基于51单片机的数字钟.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1 摘要 系统由8051、led数码管、按键、电源等部分组成,能实现时间记录和调整功能。上电后,系统自动进入时间显示状态。显示电路中,利用三个两位数码显示管分别显示时间的时、分、秒。 时间调节通过两个按键S1和S2实现,其中S1控制调节时、分,S2用于数值加一得操作,调节结束后,按S1退出进入正常计时状态。 2 设计项目内容与要求 设计基于单片机的时钟显示器。 3 硬件电路原理分析 3.1 上拉电阻 图1 上拉电阻 上拉电阻就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用,是对器件注入电流。P0口作为I/O口输出的时候时,输出低电平为0,输出高电平为高组态(并非5V,相当于悬空状态)。也就是说P0 口不能真正的输出高电平,给所接的负载提供电流,因此必须接上拉电阻(一电阻连接到VCC),由电源通过这个上拉电阻给负载提供电流。原理图如图1所示。 3.2 控制电路 图2 控制电路 图2显示为控制电路,具有设置时间的功能,只能调节时和分。图中S1按键:按一下分显示数码管开始闪动,按两下时显示数码管开始闪动,按三下则恢复正常时钟状态。S2按键,当时或分显示数码管闪动时,每按一下,时或分数值加一。 3.3显示电路 图3为显示电路原理图。通过3个两位LED数码管组成的显示电路,从上至下分别显示时、分、秒。 4 功能分析 4.1显示时间 通过3个两位晶体管准确显示时、分、秒。为了完整清晰地显示时间,需要分别显示时、分、秒,且时的显示范围为0-23,分0-59,秒0-59,即均需要使用两位的晶体管。所以使用三个两位晶体管,分别显示时、分、秒 4.2 设置时间 通过按键电路实现对时间的调整和设置。为了达到能够分别设置时和分的功能,需使用两个按键,其一确定设置的对象,另一个完成设置功能。如图3所示。 图3 显示电路 5 流程图 根据功能分析,做系统流程图如图4所示。 图4 流程图 6 电路原理图 系统电路原理图见附件一。 其中有1个6位共阴极数码管7SEG-MPX6-Cc-RED,AT89C51,2个按键开关BUTTON, 6个5K欧电阻RES,VCC电源, 7 仿真图 系统仿真仿真图见附件一。上电后,系统自动进入时间显示状态。调节时间时,S1按键:按一下分显示数码管开始闪动,按两下时显示数码管开始闪动,按三下则恢复正常时钟状态。S2按键,当时或分显示数码管闪动时,每按一下,时或分数值加一。 8 小结与体会 本次课程设计介绍了一款最简单的数字时钟显示设计。通过该设计我了解了数字钟的组成及工作原理,熟悉了数字钟显示的设计与制作。最重要的是这是我第一次把所学的单片机知识运用于实践,提高了我的实际动手能力和理论联系实际能力。 附录一 电路原理图及仿真图 附录三 源程序 //1:第一次按s1进入调分状态,s2进行调整 //2:第二次按s1进入调时状态,s2进行调整 //3:第三次按s1跳出进入记时状态 #include REG51.h #define SECOND_1 0; //显示状态,表示当前要显示时间的哪一位 #define SECOND_2 1; //显示状态,表示当前要显示时间的哪一位 #define MINUTE_1 2; //显示状态,表示当前要显示时间的哪一位 #define MINUTE_2 3; //显示状态,表示当前要显示时间的哪一位 #define HOUR_1 4; //显示状态,表示当前要显示时间的哪一位 #define HOUR_2 5; //显示状态,表示当前要显示时间的哪一位 unsigned char code displayCode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};//七段数码管的显示代码 0 1 9 unsigned long data cnt; unsigned long data redisplay; unsigned int data second; //时间变量 unsigned int data minute; //时间变量 unsigned int data hour; //时间变量 unsigned int data type; //时间变量 unsigned int data displayData; //放在数码管上面显示的数据 sbit e0 = P3^2; //开关s1 会产生外部中断 sbit add=P1^0;

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档