收藏 分享(赏)

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

上传人:weiwoduzun 文档编号:5169586 上传时间:2019-02-11 格式:DOC 页数:5 大小:32.50KB
下载 相关 举报
简易电子时钟,LED数码管显示.doc_第1页
第1页 / 共5页
简易电子时钟,LED数码管显示.doc_第2页
第2页 / 共5页
简易电子时钟,LED数码管显示.doc_第3页
第3页 / 共5页
简易电子时钟,LED数码管显示.doc_第4页
第4页 / 共5页
简易电子时钟,LED数码管显示.doc_第5页
第5页 / 共5页
亲,该文档总共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, 30x99,0x92,0x82,0xf8,0x80,0x90, 0xff;/ 4, 5, 6, 7, 8, 9, offunsigned char data dis_buf8;unsig

3、ned 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; / 定时1msTL0

4、 = 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; / 显示“-

5、“dis_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) / K1inc

6、_hour();else if(0x35 = SBUF) / K2min+;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 / 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描/void timer1() interrupt 3TH1 = 0xdc;sec100+;if(sec100 = 100)sec100 = 0;inc_sec();void inc_se

8、c()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; / 时十位elsedis_buf0 = 0xff; / 当小时的十位为0时不显示dis_buf1 = dis_codehour % 10; / 时个位void delayms(unsigned char ms)/ 延时子程序 unsigned char i;while(ms-)for(i = 0; i 120; i+);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 通信信息 > 无线电电子学/电信技术

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报