单片机时钟设计说明书.doc

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

课程设计成果说明书 题 目: 单片机时钟 学生姓名: 学 号:______ ___ 学 院: 班 级:         指导教师: 浙江海洋学院教务处 年 月 日 一 系统功能 单片机时钟由单片机和数码管组成,能够以24小时计时方式显示时钟的时,分,秒,能够进行整点报时,使用按键可实现时分的调整和秒表的功能,还能切换到显示班级和姓名。 二 设计方案 采用AT89C51单片机和共阳七段LED数码管构成时钟系统,可以得到图1-1所示的单片机时钟电路设计的总框架图。 图1-1 单片机时钟系统总体设计框图 三 系统硬件仿真电路 系统硬件仿真电路见图1-2。此系统采用AT89C51单片机,用12MHz晶振(仿真图中略),共阳七段LED显示器,单片机P0口输出段码数据,P2口作列扫描输出,P1口接几个功能按键,按键可实现不同的功能(显示时钟,调整时钟,秒表,班级姓名的显示及整点报时)。 图1-2 硬件仿真电路 四 程序设计 1 主程序 该程序设计中采用定时器T0中断完成时钟的计时程序,秒表使用定时器T1中断完成,主程序循环调用显示子程序及查键,采用子程序和按键结合的方法,当按键按下时,调用相应的子程序,完成相应的功能。主程序流程图见图1-3。 图1-3 主程序流程图 2 各项服务程序及功能程序 2.1 显示子程序 采用七段共阳LED数码管动态扫描实现数据显示。显示时,数据从已设定的表中查得对应的显示段码从P0口输出,P2口控制对应的数码管,就能在数码管中显示在表中查得的数据。 定时器T0中断服务程序 定时器T0用于时间计时。定时溢出中断周期设为50ms,因此初值定为3CB0H,中断累计20次,即完成1秒,此时对秒计数单元加1。计时的最大值为23小时59分59秒。计数显示采用十进制BCD码计数。如此数码管显示时钟,即完成了单片机的时钟计数程序。 T0中断计时程序流程见图1-4。 图1-4 T0中断计时程序流程 时间调整程序 时间调整设计方法:按下按键KEY1,此时小时计数单元闪动,计时器停止运行,等待下一步的操作,用按键KEY2可以实现小时加调整,按键KEY3实现小时减调整,再按下按键KEY1,此时分计数单元闪动,计时器停止运行,等待下一步的操作,用按键KEY2可实现分钟加调节,按键KEY3实现分钟减调整,再按下按键 KEY1,返回到显示时钟程序。 T1中断服务程序 T1中断程序用于秒表的计数。由于定时10ms,因此每10ms进行一次中断,计数单元加1,每100次为1秒,秒表的最小两位的显示数值为00~99,最大计数为59.99秒。 显示班级和姓名程序 在正常时钟状态下若按下开关KEY4,则进入显示班级和姓名,显示通过查表查得班级和姓名的代码。若放开开关KEY4,则恢复正常的时钟显示。 五 软件调试与运行结果 在Proteus软件上画好图,用keil软件编译程序,将程序放入单片机中,开始运行,时钟显示正确,开关KEY1和KEY2可以进行时和分的调节,按下KEY3,执行秒表功能,按下开关KEY5返回时钟显示。按下开关KEY4可以显示班级和姓名,当时钟运行到59分59秒,能整点报时。 总程序: /*-------------------------------------- Clock program V1.0 --------------------------------------*/ #include reg51.h // #define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit BUZZ=P3^7; sbit KEY1=P1^0; sbit KEY2=P1^1; sbit KEY3=P1^2; sbit KEY4=P1^3; sbit KEY5=P1^4; uchar hour_reg, minute_reg, second_reg; uchar hour1_reg, minute1_reg, second1_reg; void delay(uint); void display(uchar*); void time2str(uchar*); v

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档