AT89C51单片机6位数码管24小时倒计时程序教程
2025-02-27 14:48:22
告伯晋
思远数码君
单片机 at89c51 6位数码管24小时倒计时程序
#include #defineucharunsignedchar#defineuintunsignedtucharhour,min,sec; uintcount; ucharcodetab [1 0] = {0xc0x9 0xt0xaxa4 ,0x0x0x0x9 0x0x0x0x0x0x0x0x9 0x9 0x9 0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0 X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0 = {0x7 f,0xbf,0xdf,0xef,0xf7 .0xfb};/*************************************************************************************************************** TL0 = 0x3 8 ; 数数-; 在f(counter == 0){sec-; if(sec == -1 ){sec = 5 9 ; 我的-; if(min == -1 ){min = 5 9 ; 小时-; if(time == -1 ){time = 2 3 ;}}}}}}}}}}/******************************************************************************************************************************** ari; uchardisplay [6 ]; 计数= 5 000; sek = min = 5 9 ; 小时= 2 3 ; tmod = 0 x02 ; th0 = 0x00; TL0 = 0x3 8 ; ET0 = 1 ; tr0 = 1 ; EA = 1 ; 而(1 ){display [0] =小时/1 0; 查看[1 ] =时间%1 0; 查看[2 ] =最小/1 0; 显示[3 ; 我的; I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I = I (View 2 = add [i]
我想用51单片机编个倒计时的c程序,要求用两位数码管显示分钟的,并用一个按键
在设计倒计时计划时,1 和2 个数字管端口可能会出现一些问题,可以直接悬浮或连接在一起。
建议正确组合信号传输的稳定性。
建议分别代表一个和十个位的两个全局变量,因为可以通过显示并简化程序逻辑来避免重复计算。
通过编程,您需要按标准变量标准来保留对控制值的密钥答复。
按钮可以切换三个状态,即正常,延迟和时间。
如果您的当前状态是第三个状态,则可以考虑重置相关变量或使它们保持不变。
恐惧设置为1 0毫秒,并将1 个全球第二变量添加1 毫秒。
当第二个变量达到1 00时,第二秒已经过去了。
将变量值重置并降低变量A第二变量从0将变量恢复到6 0,并从I中减少一位。
如果十位数字不够减少,也就是说,时间到了,将标志放在第三部分。
在主函数初始化后,各种状态继续更新数字中显示的数字,以查看倒计时功能。
51单片机30秒倒计时,用数码管显示的,c程序,元件只有at89c51和数码管,没有其他的,
#include #defineuintunsignedint#defineucharnsignedcharsbitdula = p2 ^ 6 ; sbitwela = p2 ^ 7 ; sbitd1 = p1 ^ 0; Ucharnum,num1 ; tt; uCharCodetable [] = {0x3 f,0x06 .0x5 b,0x4 f,0x6 6 .0x6 d,0x06 .0x5 b,0x4 f,0x6 6 .0x6 d。
7 f,0x6 f,0x7 7 .0x7 c,0 x3 9 .0x5 e,0x7 9 .0x7 1 }; voiddelay(uintz); voidmain(){num = 0; tt = 0; tmod = 0x1 1 ; //设置计时器0 6 5 5 3 6 -2 0000)%2 5 6 ; // ea = 1 ; //总开放中断ET0 = 1 ; //打开计时器0中断E T1 = 1 ; tr0 = 1 ; //启动计时器0tr1 = 1 ; wela = 1 ; // 1 1 1 01 01 0p0 = 0xea; wela = 0; dula = 1 ; p0 = 0x3 f; dula = 0; 而(1 ){if(num1 == 2 5 ){num1 = 0; p1 = 〜p1 ;} if(tt == 1 00){tt = 0; dula = 1 ; p0 = table [num]; dula = 0;}}} voidDelay(ui ntz){uintx,y; 对于(x = z; x> 0; x-)for(y = 1 1 0; y> 0; y-);} voidTime0()intrupt1 {th0 =(6 5 5 3 6 -1 0000) / 2 5 6 ; TL0 =(6 5 5 3 6 -1 0000)%2 5 6 ; tt ++; L1 =(6 5 5 3 6 -2 0000)%2 5 6 ; num1 ++;}
求两位数码管显示一个倒数时间的单片机程序,比如显示从99到0
//双数字管道的倒计时为9 9 〜00和5 1 微控制器。
#include // Countdown#denducharunsignedcharucharcodable [] = {0x3 f,0x06 .0x5 b ,0x4 F,0x6 6 .0x6 d,0x07 .0x7 f,0x6 f,0x7 7 .0x7 c,0x3 9 .0x5 e,0x7 9 .0x7 1 }; 选择1 P1 端口代码sbitd2 = p3 ^1 ; TL0 =(6 5 5 3 6 -1 0000)%2 5 6 ; EA = 1 ; ET0 = 1 ; tr0 = 1 ; bai = 0; shi = 0; while(1 ){if(key == 0){}}} voidTimer0()interrupt1 {6 5 5 5 5 5 5 5 5 5 5 3 6 -1 0000)%2 5 6 ; A1 ++; y = 〜y; if(a1 == 1 00){a1 = 0; if(button == 1 )a2 -; if(a2 > = 1 00)a2 = 9 9 ;} d1 = 1 ; d2 = 1 ;