- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京交通大学单片机电子时钟
单片机课程设计 电气0909 熊飞
PAGE \* MERGEFORMAT 20
单片机课程设计报告
——电子时钟
指导老师:季晓衡
班 级:电气0909
姓 名:熊飞
学 号
2011年12月
电子时钟
设计要求与内容
本系统主要通过89S51单片机实现,有6个数码显示管显示年、月、日和时、分、秒,两个按键,一个用作切换设置位键B,一个功能键A增加显示数值及转换模式,用来调节显示的部分和修改电子时钟的时间。
使用12MHz的晶振作为单片机的外部时钟输入,一个机器周期为1us。使用定时器0作为时钟计数器,工作在方式1,当计数满50ms时定时器0产生中断,当中断产生20次时,调用时间模块进行加1操作。先对秒进行加1,若加1后等于60秒,则清除秒单元,同时向分进1,同理,对分、时进行同样操作。
调节显示部分和修改电子时钟的时间时,先按切换键A,从显示年、月、日切换到现实时、分、秒,选定一种状态后再按一下B,显示秒的开始闪烁,此时按一下A,则可以改变秒的时间,从00依次变到60,修改完毕,若再按B键,可使显示分的又开始闪烁,同样按A键调整分的值,同样办法调整其他显示部分的显示值。都设定好后,第四次按下B键就会退出来正常显示年、月、日或时、分、秒。
二、主要元件的相关资料
1、单片机89S512
(1)单片机(89S51)芯片外观:
(2)单片机(89S51)管脚图:
(3) 51系列单片机8031、8051及89c51/89s51均采用40Pin封装的双列直接DIP结构。上图是它们的引脚配置:40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
2、74HC245总线驱动器
(1)简介
总线驱动器,典型的TTL型三态缓冲门电路。由于单片机等CPU的数据/地址/控制总线端口都有一定的负载能力,如果负载超过其负载能力,一般应加驱动器。
(2)74HC245实物图
(3)引脚定义
第1脚DIR,为输入输出端口转换用,DIR=“1”高电平时信号由“A”端输入“B”端输出,DIR=“0”低电平时信号由“B”端输入“A”端输出。
第2—9脚“A”信号输入输出端,A1=B1、、、、、、A8=B8,A1与B1是一组,如果DIR=“1”OE=“0”则A1输入B1输出,其它类同。如果DIR=“0”OE=“0”则B1输入A1输出,其它类同。
第11—18脚“B”信号输入输出端,功能与“A”端相同。
第19脚OE,使能端,若该脚为“1”A/B端的信号将不导通,只有为“0”时A/B端才被启用,该脚也就是起到开关的作用。
第10脚GND,电源地。
第20脚VCC,电源正极。
3、八段LED数码显示管
(8段共阴LED数码管结构) (原理图)
八段LED数码管由八只发光二极管组成,编号是a、b、c、d、e、f、g和SP,分别与同名管脚相连。其显示原理是通过同名管脚上所加电平的高低来控制发光二极管是否点亮从而显示不同字形的。LED上所显示的字形不同,相应的字形码也不一样。
共阴字形码:
三、proteus仿真
四、实现程序的流程图
主程序流程图
开 始
初始化显示缓冲区
初始化定时计数器
赋电子时钟初值
按键处理程序
是否有按键?
Y
N
转换BCD码到显示缓冲区
判断显示模式
显示及闪烁处理程序
显示及闪烁处理程序
按键判断及处理程序流程图
返回主函数继续执行余下程序
进入按键处理程序
是否有按键?
N
Y
判断是调整显示模式还是设时间
状态位70H加一,到四清零
设时间
返回主函数继续执行余下程序
调整显示模式
设定年月日?
设定时分秒?
将标志位71H取反,表示显示模式切换
年月日
时分秒
显示时间部分闪烁
延时
时分秒设定程序(相应单元加一)
年月日设定程序(相应单元加一)
定时器中断程序流程图
进入T0定时器中断
初始化 赋初值
0.05单元加一
N
是否到一秒?
Y
0.05单元清零,秒加1,转换成BCD码
转换成BCD码
是否到一分?
N
Y
秒清零,分加1
转换成BCD码
Y
是否到一小时?
N
N
是否到一天?
时、分、秒清零
天加一,转换成BCD码
N
是否到一月?
天置一,月加一,
转换成BCD码
N
是否到一年?
月置一,年加一,
转换成BCD码
返回中断
将BCD码写入缓冲区(79H84H)
进入BCDEX转换程序
循环执行,将所有时间单元写入缓冲
文档评论(0)