51单片机设置的电子闹钟(可调时间和闹钟)

上传人:大米 文档编号:560801368 上传时间:2024-01-13 格式:DOC 页数:9 大小:118.50KB
返回 下载 相关 举报
51单片机设置的电子闹钟(可调时间和闹钟)_第1页
第1页 / 共9页
51单片机设置的电子闹钟(可调时间和闹钟)_第2页
第2页 / 共9页
51单片机设置的电子闹钟(可调时间和闹钟)_第3页
第3页 / 共9页
51单片机设置的电子闹钟(可调时间和闹钟)_第4页
第4页 / 共9页
51单片机设置的电子闹钟(可调时间和闹钟)_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《51单片机设置的电子闹钟(可调时间和闹钟)》由会员分享,可在线阅读,更多相关《51单片机设置的电子闹钟(可调时间和闹钟)(9页珍藏版)》请在金锄头文库上搜索。

1、.#include#define uint unsigned int#define uchar unsigned char#define LED P0 / 数码管的段选#define LIGHT P1 / 时分秒位的指示灯#define WS P2 / 数码管的位选sbit key1=P30; / 时间暂停/开始sbit key2=P31; / 时间/闹钟设置sbit key3=P32; / 增加sbit key4=P33; / 减少sbit alarm=P36; / 闹铃uchar tab10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f

2、; / 0-9uchar tab_dp10=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef; / 0.-9.带小数点uchar data1=0,0,0,0,0,0;uchar data2=0,0,0,0,0,0;uint t,k,kk,k1,flag;uint bbh,bbm,bbs,bbh1,bbm1,bbs1;uint sec,min,hour,sec1,min1,hour1; / 定义 秒,分,时void init();void display();void display_bb();void delay( uint );void ke

3、yscan();void main() init(); while(1) keyscan();if(k1=0|k1=1|k1=2|k1=3) / 显示调节时间 display(); if(k1=4|k1=5|k1=6) / 显示调节闹钟 display_bb(); if(bbh=hour)&(bbm=min)&data14=0&data15=5) / 5s报时alarm=alarm;delay(1); if(bbs=sec)&(bbm=min)&(bbh=hour) / 可调报时alarm=alarm;delay(1); void init() WS=LIGHT=flag=0; sec=min

4、=hour=0; / 将0赋给时分秒 TMOD=0x01; / 方式1 P129见课本 TH0=0x3c; / 65536-50000=15536=0x3cb0(50ms) P128见课本 TL0=0xb0; EA=1; / 开总中断 P161见课本 TR0=1; / 定时/计数器0开启 ET0=1; / 定时器/计数器0溢出中断启动 P161见课本void delay( unsigned int t) / 延时函数 unsigned int i; while(t-)for(i=0;i125;i+);void display() / 显示时间函数 if(TF0=1) / 定时器/计数器溢出 P

5、130见课本 TF0=0; / 清中断标志位 t+; if(t=20)/ (50ms*20=1s) t=0; sec+; / 秒加1 if(sec=60) / 秒为60,那么清零,分加1 sec=0; min+; if(min=60) / 分为60,那么清零,时加1 min=0; hour+; if(hour=24)/ 时为24,那么清零 hour=0; data15=sec%10; data14=sec/10; data13=min%10; data12=min/10; data11=hour%10; data10=hour/10; WS=0xdf; / 1101 1111 ,低电平显示 L

6、ED=tabdata15; delay(1); WS=0xef; / 1110 1111 LED=tabdata14; delay(1); WS=0xf7; / 1111 0111 LED=tab_dpdata13; delay(1); WS=0xfb; / 1111 1011 LED=tabdata12; delay(1); WS=0xfd; / 1111 1101 LED=tab_dpdata11; delay(1); WS=0xfe;/ 1111 1110 LED=tabdata10; delay(1); void display_bb() / 显示闹钟函数 data25=bbs%10;

7、 data24=bbs/10; data23=bbm%10; data22=bbm/10; data21=bbh%10; data20=bbh/10; WS=0xdf; / 1101 1111 ,低电平显示 LED=tabdata25; delay(1); WS=0xef; / 1110 1111 LED=tabdata24; delay(1); WS=0xf7; / 1111 0111 LED=tab_dpdata23; delay(1); WS=0xfb; / 1111 1011 LED=tabdata22; delay(1); WS=0xfd; / 1111 1101 LED=tab_d

8、pdata21; delay(1); WS=0xfe;/ 1111 1110 LED=tabdata20; delay(1); void keyscan() / 键盘扫描 if(key1=0) / 暂停/开始 +kk; while(!key1) display(); if(kk=1) TR0=0; if(k1=0|k1=1|k1=2|k1=3) / 显示调节时间 display(); if(k1=4|k1=5|k1=6) / 显示调节闹钟 display_bb(); if(key2=0)/ 模式选择调节时间/闹钟k1+;while(!key2) if(k1=1) / 第1次按下 sec1=se

9、c; / 保存秒的数值 sec=88; / 显示88,表示可以调节秒的数值了 display(); / 显示88 sec=sec1; / 恢复前一刻秒的数值 if(k1=2) min1=min; min=88; display(); delay(1); min=min1; if(k1=3) hour1=hour; hour=88; display(); delay(1); hour=hour1; if(k1=4) sec1=bbs; / 保存秒的数值 bbs=66; / 显示66,表示可以调节秒的数值了 display_bb(); / 显示66 bbs=sec1; / 恢复前一刻秒的数值 if(k1=5) min1=bbm; bbm=66; display_bb(); delay(10); bbm=min1;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号