简易电子时钟LED数码管显示

上传人:20****03 文档编号:170368215 上传时间:2021-03-02 格式:DOC 页数:5 大小:20KB
返回 下载 相关 举报
简易电子时钟LED数码管显示_第1页
第1页 / 共5页
简易电子时钟LED数码管显示_第2页
第2页 / 共5页
简易电子时钟LED数码管显示_第3页
第3页 / 共5页
简易电子时钟LED数码管显示_第4页
第4页 / 共5页
简易电子时钟LED数码管显示_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《简易电子时钟LED数码管显示》由会员分享,可在线阅读,更多相关《简易电子时钟LED数码管显示(5页珍藏版)》请在金锄头文库上搜索。

1、转】简易电子时钟,LED数码管显示2010-05-14 19:06转载自 alexy000最终编辑 alexy000/* 描述: * 简易电子时钟,LED数码管显示 串口发送命令: * 0x34-时调整 * 0x35-分调整 * * 上电时初始化显示: 12-00-00 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * P0为8位数据位 P2为8位数码管选择位,低电平选通

2、 8位共阳极7段数码管*/#include #include #define T2H_RELOAD 0xff /11.0592MHz 9600 baud rate at 12 clock#define T2L_RELOAD 0xdcunsigned char data dis_digit;unsigned char code dis_code11=0xc0,0xf9,0xa4,0xb0, / 0, 1, 2, 3 0x99,0x92,0x82,0xf8,0x80,0x90, 0xff;/ 4, 5, 6, 7, 8, 9, offunsigned char data dis_buf8;unsi

3、gned char data dis_index;unsigned char hour,min,sec;unsigned char sec100;void proc_key();void inc_sec();void inc_min();void inc_hour();void display();void delayms(unsigned char ms);void main(void)P0 = 0xff;P2 = 0xff;TMOD = 0x11; / 定时器0, 1工作模式1, 16位定时方式TH1 = 0xdc; /定时10msTL1 = 0;TH0 = 0xFC; / 定时1msTL

4、0 = 0x17;hour = 12;min = 00;sec = 00;sec100 = 0;dis_buf0 = dis_codehour / 10; / 时十位dis_buf1 = dis_codehour % 10; / 时个位dis_buf3 = dis_codemin / 10; / 分十位dis_buf4 = dis_codemin % 10; / 分个位dis_buf6 = dis_codesec / 10; / 秒十位dis_buf7 = dis_codesec % 10; / 秒个位dis_buf2 = 0xbf; / 显示-dis_buf5 = 0xbf; / 显示- d

5、is_digit = 0x7f;dis_index = 0x00;TCON = 0x01;IE = 0x8a; / 使能timer0,1 中断TR0 = 1;TR1 = 1;SCON=0x50;TH2=T2H_RELOAD; /t2 used for uartRCAP2H=T2H_RELOAD;TL2=T2L_RELOAD;RCAP2L=T2L_RELOAD;T2CON=0x34; /9600bit per secondwhile(1) delayms(10); if(RI) RI=0; proc_key(); void proc_key()EA = 0;if(0x34=SBUF) / K1

6、inc_hour();else if(0x35 = SBUF) / K2 min+; if(min 59) min = 0; dis_buf3 = dis_codemin / 10; / 分十位 dis_buf4 = dis_codemin % 10; / 分个位EA = 1;void timer0() interrupt 1/ 定时器0中断服务程序, 用于数码管的动态扫描/ dis_index - 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量/ dis_digit - 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时,/ 选通P2.0口数码/ dis_buf -

7、显于缓冲区基地址TH0 = 0xFC;TL0 = 0x17;P2 = 0xff; / 先关闭所有数码管P0 = dis_bufdis_index; / 显示代码传送到P0口P2 = dis_digit; /dis_digit = _cror_(dis_digit,1); / 位选通值左移, 下次中断时选通下一位数码管dis_index+;dis_index &= 0x07; / 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描 /void timer1() interrupt 3TH1 = 0xdc;sec100+;if(sec100 = 100) sec100 = 0; inc_se

8、c();void inc_sec()sec+;if(sec 59) sec = 0; inc_min();dis_buf6 = dis_codesec / 10; / 秒十位dis_buf7 = dis_codesec % 10; / 秒个位void inc_min()min+;if(min 59) min = 0; inc_hour();dis_buf3 = dis_codemin / 10; / 分十位dis_buf4 = dis_codemin % 10; / 分个位void inc_hour()hour+;if(hour 23) hour = 0;if(hour 9) dis_buf0 = dis_codehour / 10; / 时十位else dis_buf0 = 0xff; / 当小时的十位为0时不显示dis_buf1 = dis_codehour % 10; / 时个位void delayms(unsigned char ms)/ 延时子程序 unsigned char i;while(ms-) for(i = 0; i 120; i+);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

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