我想用51单片机编个倒计时的c程序,要求用两位数码管显示分钟的,并用一个按键
在设计倒计时计划时,建议直接悬挂数字管的一个和两个端口或合理连接。
建议使用两个全局变量分别表示单个和1 0位。
这使您可以避免在显示过程中重复计算并简化程序逻辑。
对于编程,您需要设置主响应中断以控制标志变量标志的值。
该按钮可以在三个状态之间切换:正常,暂停和时间。
如果当前状态是第三个状态,则可以考虑重置关联的变量或使它们保持不变。
计时器设置为1 0 ms,每1 0 ms每1 0 ms向全局第二变量添加1 个。
当第二个变量达到1 00时,1 秒钟将第二个变量值重置,将全局第二变量降低1 如果第二个变量降低到0,则将第二个变量恢复为6 0,将全局部分的单个位减少1 如果单个位没有充分降低,则将1 0位减少1 位,而单位钻头设置为9 位。
如果1 0位数字不够减少,则意味着时间到了,并标记了第三个状态。
在主函数初始化各种状态之后,它不断更新数字管上显示的数字以实现倒计时功能。
怎么让一组数码管显示完60秒倒计时后让下一组接着显示,然后以此不断循环,求大神指点,电路和代码是啥
可以使用两个两合一的数字管,即两组。
后计时器用于计时器,并计算出2 0次的中断,持续1 秒钟。
使用变量计算秒,每时每刻都可以减少一个,并且可以实现背部。
第一组倒计时模拟第一组数字管如下。
第二组数字管显示了结果。
求C51单片机汇编语言控制两位数码管倒计时程序,最好能说明下思路
查询方法:org00hstart:movr0,#2 0movr4 ,#6 0lp0:movtmod,#01 hmovth0,#3 chmovtl0,#0b0hmovdptr,#tablesetbtr0lp1 :jbctf0 DJNZ0, LPABAJMPLP1 LP1 : DJNZ0, LPABAJMPER 0Clrtr0movr0,#2 0mova, r4 cjnea,#0, dec1 movr4 ,#6 0ajp1 dec1 : Decamovr4 , AJP1 : acalldisp0disp: mova, R4 MOVB,#1 0DIVAB,这是当前值,即1 0MOV2 0H,a; mov2 1 h,b; 0retd elay:; 错误0USMOVR6 ,#1 0DL0:MOVR5 ,#5 0DJNZR5 ,$ DJNZR6 ,DL0RETTABLE:DB0C0H,0F9 H,0A4 H,0B0H,0B0H,9 9 H; NORG0BHAJMPT0INTORG3 0HMAIN:MOVTMOD,#01 HMOVH0,#3 CHMOVTL0,#0B0H; 5 0ms-movr0,#2 0; Main1 :Mova,R4 MOVB,#1 0Divab; +dptrmovp0,asetbp2 .1 lcalld elayclrp2 .1 mova,2 1 h; movr4 ,#6 0rti:retidelay:; 错误0USMOVR6 ,#1 0DL0:MOVR5 ,#5 0DJNZR5 ,$ DJNZR6 ,DL0RETTABLE:DB0C0H,0F9 H,0A4 H,0B0H,0B0H,9 9 H;
求两位数码管显示一个倒数时间的单片机程序,比如显示从99到0
//两个数字数字管显示9 9 〜00的倒计时,微控制器为5 1 #include // rebours#defineuintunsigna#defineucharunsignedCharCodetable [] 0x6 6 .0x6 d,0x7 D,0x07 .0x7 f,0x6 f,0x7 7 .0x7 c,0x3 9 .0x5 e,0x7 7 .0x7 c,0x3 9 .0x5 e,0x7 7 .0x7 7 .0x7 c,0x3 9 .0x5 e,0x3 9 .0x5 e,0x7 7 .0x7 7 .0x7 c,0x3 9 }; UCharbai,Shi; uinta1 ,a2 ; sbitd1 = p3 ^ 0; // BIT选择端口段代码1 P1 SBITD2 输出= p3 ^ 1 ; //位select 2 sbitkey = p3 ^ 7 ; //开始 /停止位; {tmod = 0x01 ; th0 =(6 5 5 3 6 -1 0000) / 2 5 6 ; 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 {th0 =(6 5 5 3 6 -1 0000) / 2 5 6 ; TL0 =(6 5 5 3 6 -1 0000)%2 5 6 ; A1 ++; y = 〜y; if(a1 == 1 00){a1 = 0; if(key == 1 )a2 -; if(a2 > = 1 00)a2 = 9 9 ;} d1 = 1 ; d2 = 1 ; if(y == 1 ){p1 = table [a2 / 1 0]; d1 = 0;} else {p1 = table [a2 %1 0]; d2 = 0;}}