8位数码管显示时钟_第1页
8位数码管显示时钟_第2页
8位数码管显示时钟_第3页
8位数码管显示时钟_第4页
8位数码管显示时钟_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

本人依据 AT89C51 和 8 位数码管为素材 以最少的见实现 最多的功能 本程序开机流动显示学号可实现时钟 日历 定时闹钟 秒表等功能 C 程序 程序 include unsigned char led 12 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x40 0 x00 用 一维数组定义 9 横杠 全灭 unsigned char num 12 2 0 0 9 3 5 0 7 0 1 2 0 unsigned char a 8 unsigned char second 0 minute 0 hour 0 year 0 mon 1 day 1 day1 hsec sec m min m N temp1 unsigned char minute1 0 hour1 0 unsigned char b 8 0 xfe 0 xfd 0 xfb 0 xf7 0 xef 0 xdf 0 xbf 0 x7f 扫描 unsigned char k 0 unsigned int temp 记录毫秒为秒的变量 unsigned char M S flag M 是模式 更新时间的种模式加上正常模式 S flag 闪烁标志 sbit K0 P3 7 K0 是闹钟起停标志位 sbit K1 P3 0 sbit K2 P3 1 sbit K3 P3 2 sbit BEEP P3 3 void delay unsigned n 0 2 毫秒 int x y for x 0 x n x for y 0 y 24 y void init1 S flag 0 闪烁标志位 TMOD 0 x10 定时器以方式定时 TH1 0 xfc TL1 0 x18 EA 1 打开总中断 ET1 1 允许定时器中断 TR1 1 开启定时器 开始定时计数 void init0 TMOD 0 x01 定时器以方式定时 TH0 0 xff TL0 0 xff EA 1 打开总中断 ET0 1 允许定时器中断 TR0 0 关闭定时器 关闭定时计数 void display led 流动显示学号 int x char l a m for a 0 a 21 a x a 8 for l 0 l 6 l for m 0 m 0 else P1 led 11 delay 10 x x 8 void display 显示时钟及显示调节位 switch M case 0 a 0 led hour 10 a 1 led hour 10 a 2 led 10 a 3 led minute 10 a 4 led minute 10 a 5 led 10 a 6 led second 10 a 7 led second 10 break case 1 if S flag 1 a 0 led hour 10 a 1 led hour 10 else a 0 led 11 a 1 led 11 a 2 led 10 a 3 led minute 10 a 4 led minute 10 a 5 led 10 a 6 led second 10 a 7 led second 10 break case 2 a 0 led hour 10 a 1 led hour 10 a 2 led 10 if S flag 1 a 3 led minute 10 a 4 led minute 10 else a 3 led 11 a 4 led 11 a 5 led 10 a 6 led second 10 a 7 led second 10 break case 3 if S flag 1 a 0 led year 10 a 1 led year 10 else a 0 led 11 a 1 led 11 a 2 led 10 a 3 led mon 10 a 4 led mon 10 a 5 led 10 a 6 led day 10 a 7 led day 10 break case 4 a 0 led year 10 a 1 led year 10 a 2 led 10 if S flag 1 a 3 led mon 10 a 4 led mon 10 else a 3 led 11 a 4 led 11 a 5 led 10 a 6 led day 10 a 7 led day 10 break case 5 a 0 led year 10 a 1 led year 10 a 2 led 10 a 3 led mon 10 a 4 led mon 10 a 5 led 10 if S flag 1 a 6 led day 10 a 7 led day 10 else a 6 led 11 a 7 led 11 break case 6 if S flag 1 a 0 led hour1 10 a 1 led hour1 10 else a 0 led 11 a 1 led 11 a 2 led 10 a 3 led minute1 10 a 4 led minute1 10 a 5 led 10 a 6 led 11 a 7 led 11 break case 7 a 0 led hour1 10 a 1 led hour1 10 a 2 led 10 if S flag 1 a 3 led minute1 10 a 4 led minute1 10 else a 3 led 11 a 4 led 11 a 5 led 10 a 6 led 11 a 7 led 11 void key prc 时钟和闹钟调节 if K1 0 delay 10 延时去抖 if K1 0 按 K1 进行模式切换 M if M 8 M 0 while K1 等待按键释放 if M 0 switch M case 1 模式 调时 if K2 0 delay 10 延时去抖 if K2 0 加键按下 if hour 0 hour else hour 23 while K3 break case 2 模式 调分 if K2 0 delay 10 if K2 0 if minute0 minute else minute 59 while K3 break case 3 模式 调年 if K2 0 delay 10 if K2 0 if year0 year else year 99 while K3 break case 4 模式 调月 if K2 0 delay 10 if K2 0 if mon1 mon else mon 12 while K3 if year 4 0 闰年 2 月为 29 天 if year 4 0 非闰年 2 月为 28 天 if mon 4 mon 6 mon 9 mon 11 day1 30 if mon 1 mon 3 mon 5 mon 7 mon 8 mon 10 mon 12 day1 31 break case 5 模式 调日 if K2 0 delay 10 if K2 0 if day1 day else day day1 while K3 break case 6 模式 闹钟调时 if K2 0 delay 10 if K2 0 if hour10 hour1 else hour1 23 while K3 break case 7 模式 闹钟调分 if K2 0 delay 10 if K2 0 if minute10 minute1 else minute1 59 while K3 break void display rq 年月日显示 if K2 0 delay 10 if K2 0 a 0 led year 10 a 1 led year 10 a 2 led 10 a 3 led mon 10 a 4 led mon 10 a 5 led 10 a 6 led day 10 a 7 led day 10 while K2 等待按键释放 void key prc2 秒表模式转换 if M 0 if K3 0 delay 10 延时去抖 if K3 0 按 K3 进行模式切换 N if N 2 N 0 while K3 等待按键释放 void display sec 秒表显示 if N 1 a 0 led min m 10 a 1 led min m 10 a 2 led 10 a 3 led sec m 10 a 4 led sec m 10 a 5 led 10 a 6 led hsec 10 a 7 led hsec 10 if K2 0 delay 10 延时去抖 if K2 0 加键按下 TR0 TR0 while K2 等待按键释放 void res sec 秒表复位 if K1 0 delay 10 if K1 0 min m 0 sec m 0 hsec 0 M 0 while K1 void main 主程序 display led init0 init1 while 1 key prc key prc2 if N 1 display sec res sec else display rq display void time1 interrupt 3 定时器中断函数 if year 4 0 闰年 2 月为 29 天 if year 4 0 非闰年 2 月为 28 天 if mon 4 mon 6 mon 9 mon 11 day1 30 if mon 1 mon 3 mon 5 mon 7 mon 8 mon 10 mon 12 day1 31 TH1 0 xfc 定时 ms TL1 0 x18 temp if temp 1000 配合定时器定时 s temp 0 second if second 60 second 0 if minuteday1 day 1 mon if mon 12 mon 1 year if year 99 year 0 if hour1 hour if temp 250 0 每 ms S flag

温馨提示

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

评论

0/150

提交评论