当前位置:主页 > 38365365体育在线投注 > 文章内容

基于电子时钟程序的8位数码管显示C51单片机

来源:365bet足球赔率 作者:365bet足球开户 发布时间:2019-08-25

/ * 8位数码管显示时间格式05-50-00标记05点50分00秒S1 +每小时1次操作S2-1每小时1次操作S3 + 1操作S4 + 1操作/#containsbitKEY1 = P3 ^ 0; //定义端口参数sbitKEY2 = P3 ^ 1; sbitKEY3 = P3 ^ 2; sbitKEY4 = P3 ^ 3; sbitLED = P1 ^ 2; //定义指标参数代码unsignedchartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管0-9unsignedcharStrTab[8]; // unsignedcharminute buffer = 19,time = 23,define seconds; / /定义在12:30 pm初始化voiddelay(unsignedintcnt){while(-cnt);}/ ****************************************************************** // *显示处理功能*// ****************************************************************** / voidDisplaypro(void){StrTab[0]= tab[hour / 10]; //显示时间StrTab[1]= tab[小时%10]; StrTab[2]= 0x40; //显示“ - ”StrTab[3]= tab[分钟/10]; // StrTab[4]=显示分钟= tab[min%10]; StrTab[5]= 0x40; //显示“ - ”StrTab[6]= tab[second / 10]; // secondDisplay StrTab[7]= tab[second%10];}main(){TMOD | = 0x01; // Timer 010msinMcrystal用于寄存器TH0 = 0xd8。//初始值TL0 = 0xf0; ET0 = 1; TR0 = 1; TMOD | = 0x10; // Timer1 TH1 = 0xF8; //初始值TL1 = 0xf0; ET1 = 1; TR1 = 1; EA= 1; Displaypro(); // /(1){if(!
KEY1)// /按钮1的转塔和动作{延迟(10000);如果(!
KEY1){hour ++; if(hour == 24)time = 0; // time time hour plus 1Displaypro();}}if(!
KEY2)//按钮2对转塔和动作{延迟(10000);如果(!
KEY2){time-; if(time == 255)hour = 23; // normal time -1 Displaypro();}}if(!
KEY3)//反炮塔和动作按钮{延迟(10000);如果(!
KEY3){min ++; if(min == 60)min = 0; // 1Displaypro();}}如果添加(!
KEY4)//炮塔和动作按钮{延迟(10000);如果(!
KEY4){min-; if(min == 255)min = 59; // minus1Displaypro();}}}}/ ****************************************************************** // *定时器中断1 * // ****************************************************************** / voidtime1_isr(void)interrupt3using0 //定时器1重新进入{statICunsignedcharnum; TH1 = 0xF8; //值TL1 = 0xf0;switch(num){case0:P2 = 0; P0 = StrTab[num]; break; //调用缓冲区值来搜索case1:P2 = 1; P0 = StrTab[num]; break; Case2:P2 = 2; P0 = StrTab[num];中断; case3:P2 = 3; P0 = StrTab[num];中断; case4:P2 = 4; P0 = StrTab[num];中断; case5:P2 = 5; P0= StrTab[num]; break; case6:P2 = 6; P0 = StrTab[num]; break; case7:P2 = 7; P0 = StrTab[num]; break;默认值:break;}num ++; // 8如果(num == 8)num = 0,则扫描8次并使用8个数码管;}/}******************************************************************* * *计时器0中断* // ****************************************************************** / voidtim(void)interrupt1using1{staticuNsignedcharcount; //定义内部局部变量TH0 = 0xd8; //重新创建TL0 = 0xf0和分配。Count + +; switch(count){case0:case20:case40:case60:case80:Displaypro(); break; //在一定时间后调用显示案例50:P1 =?P1;暂停//默认0.5秒LED闪烁:暂停;}if(account == 100){account = 0; 2nd ++; // second + 1if(second = = 60){second = 0; minute ++; // 1if added(分钟== 60){min = 0;小时++; // 1if(小时== 24)小时= 0;}}}}



(阅读次数:
上一篇:下载电影应用程序   下一篇:没有了