完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这是主程序 #include #include"leddisplay.h" #define LED P1 ***it dula=P2^6; ***it wela=P2^7; unsigned int SATA,Second,Minutes,Hour,num; void LcdInt() { TMOD = 0x01; //T0为16位定时模式 |Gate|C/T|M1|M0|Gate|C/T|M1|M0| // TMOD = 0x09; //硬启动模式 P3.2为"1"时启动 EA = 1; //开总中断 Interrupt Enable ET0 = 1; //T0允许中断 IE 见reg52.h TH0 = (65536-1000)/256; TL0 = (65536-1000)%256; // timer0 interrupt Flag TR0 = 1; //TCON: |TF1|TR1|TF0|TR0||||| 见reg52.h } void IntTimer0() interrupt 1 { static unsigned char Wei=0; static unsigned int Cnt = 0; unsigned char daojishi; TH0 = (65536-1000)/256; TL0 = (65536-1000)%256; //定时1ms switch(Wei) { case 1: LedDisp_1bit( Wei,daojishi%10,0);break; case 0: LedDisp_1bit( Wei,daojishi/10%10,0);break; default:break; } if(Wei<=1) Wei++;else Wei=0; Cnt++; if (Cnt>=1000) { Cnt = 0; Second++; if(Second<=5) { SATA=1; daojishi=5;daojishi--; } if((Second>5)&&(Second<=30)) { SATA=2; daojishi=25; daojishi--; } if((Second>30)&&(Second<=35)) { SATA=3; daojishi=0x05; daojishi--; } if((Second>35)&&(Second<=60)) { SATA=4; daojishi=25; daojishi--; } } } void main() { LcdInt(); while(1) { switch(SATA) { case 1: P1=0xf9;break; case 2: P1=0xde;break; case 3: P1=0xf6;break; case 4: P1=0xed;break; default: break; } } } 调用的数码管程序 #include "leddisplay.h" unsigned char code LedCode[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; /******LED显示1位函数******** 输入: unsigned char Wei 0~5 0为最左位 unsigned char Data 0~15 显示为0-9ABCDEF bit dot 0-1小数点控制 0:不显示 1:显示 输出:None LED 数据I/O: P0 变量声明: ***it LedWeiLoad = P2^7; ***it LedDuanLoad = P2^6; *****************************/ void LedDisp_1bit(unsigned char Wei,unsigned char Data,bit dot) { //LED段选 if (dot) { LedData = LedCode[Data]+0x80; } else { LedData = LedCode[Data]; } LedDuanLoad = 1; LedDuanLoad = 0; //LED位选择 LedBit =~(1< LedWeiLoad = 0; } leddisplay.h包含的东西 #include #define LedData P0 #define LedBit P0 ***it LedWeiLoad = P2^7; ***it LedDuanLoad = P2^6; extern void LedDisp_1bit(unsigned char Wei,unsigned char Data,bit dot); extern void LedDisp_Int(unsigned int Data); |
|
相关推荐
1个回答
|
|
设总时间为50秒
sec=50; { sec-- if(sec==0) sec=50; secsw=sec/10; //分离秒十位 secgw=sec%10; //分离秒个位 } |
|
|
|
只有小组成员才能发言,加入小组>>
568浏览 0评论
432浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 11:17 , Processed in 1.109577 second(s), Total 69, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号