怎么写60秒倒计时的程序,在51单片机液晶屏
ORG 00H ; SJMP STAR ; ORG 1BH; SJMP TIS; 转T1中断服务程序 ORG 30H; STAR: MOV R2,#60H; 倒计时初值 MOV R4,#20H; 定时中断溢出计数器 MOV IE,#88H; 开中断 MOV TMOD,#10H; MOV TH1,#3CH; 定时初值 MOV TL1,#0B0H; 定时初值 SETB TR1; 启动 ACALL DIS; 调用显示子程序 SJMP $; TIS: MOV TH1,#3CH; MOV TL1,#0B0H; DJNZ R4,T1S1; 定时1S到否 MOV R4,#20; 到1S,重置R4=20 DJNZ R2,T1S0; 倒计时递减 CLR TR1; 倒计时结束,关定时器 T1S0: ACALL DIS; 调显示 T1S1: RETI ; 中断返回 SEG7: INC A; A的值加一 MOVC A,@A+PC; 取显示断段 RET; ; DB 0C0H,0F9H,0A4H,0B0H; ; 0至3的共阳型显示码 DB 99H,92H,82H,0F8H;; 4至7的共阳型显示码 DB 80H,90H,88H,83H; 8至B的共阳型显示码 DB 0C6H,0A1H,86H,8EH;; C至F的共阳型显示码 DIS: MOV A,R2; ; 单字节十六进制数转为十进制数 MOV B,#10 ; DIV AB ; ACALL SEG7 ; MOV P1,A; ; 显示十位 MOV A,B;; ACALL SEG7;; MOV P2,A; ; 显示个位 RET; ; 子程序返回 END ;
/*代码你可以参考一下,晶振按11.059200MHz写的。 提示一下,按你这仿真是不能做实物的,要加上限流电阻*/#include "reg52.h"unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //共阳数码管段选void main(){TMOD = 0x01; TH0 = 0xFC; TL0 = 0x66; EA = 1; ET0 = 1; TR0 = 1;while(1);}void Timer0Interrupt(void) interrupt 1{static unsigned int i = 0;static char time = 60; TH0 = 0xFC; TL0 = 0x66;P3 = table[time%10];P2 = table[time/10];i++;if (i >= 1000){i = 0;time--;if (time < 0){time = 60;}}}
有数码管做的。
ORG 0000H
JMP BEGIN
ORG 000BH
LJMP T0INT
ORG 001BH
LJMP T1INT
LEDD EQU 30H
LEDC EQU 36H
SECC EQU 37H
TCNT EQU 3AH
ORG 0030H
;---------------------------------------
TABLE: ; 共阴极数码管显示代码表
DB 0FCH ;"0" 00H
DB 60H ;"1" 01H
DB 0DAH ;"2" 02H
DB 0F2H ;"3" 03H
DB 66H ;"4" 04H
DB 0B6H ;"5" 05H
DB 0BEH ;"6" 06H
DB 0E0H ;"7" 07H
DB 0FEH ;"8" 08H
DB 0F6H ;"9" 09H
DB 0EEH ;"A" 0AH
DB 3EH ;"B" 0BH
DB 9CH ;"C" 0CH
DB 7AH ;"D" 0DH
DB 9EH ;"E" 0EH
DB 8EH ;"F" 0FH
DB 00H ;" " 10H
; DB 3FH,06H,5BH,4FH,66H ;12345
; DB 6DH,7DH,07H,7FH, ;6789
;---------------------------------------
DELAY:
MOV R6,#25
DLY01:
MOV R7,#100
DJNZ R7,$
DJNZ R6,DLY01
RET
;---------------------------------------
BEGIN:
MOV SP,#5FH
MOV TMOD,#11H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TH1,#0F4H
MOV TL1,#48H
MOV LEDC,#0
MOV R0,#LEDD
CLR A
INIT:
MOV @R0,A
INC R0
DJNZ LEDC,INIT
SETB ET1
SETB TR1
MOV P2,#0
MOV TCNT,#0
MOV SECC,#0
SETB ET0
SETB EA
MOV SECC,#60
LCALL DISSEC
SETB TR0
SETB TR1
LOOP:
SJMP $
;---------------------------------------
T1INT:
PUSH ACC
CLR TR1
MOV TH1,#0F4H
MOV TL1,#48H
SETB TR1
MOV DPTR,#TABLE
MOV R0,#LEDD
MOV A,LEDC
T1INT0:
JNZ T1INT1
MOV P2,#01H
MOV A,@R0
MOVC A,@A+DPTR
CPL A
MOV P0,A
SJMP T1INTD
T1INT1:
MOV P2,#02H
INC R0
MOV A,@R0
MOVC A,@A+DPTR
CPL A
MOV P0,A
T1INTD:
INC LEDC
MOV A,LEDC
CJNE A,#2,T1INT6
T1INT6:
JC T1INTE
MOV LEDC,#0
T1INTE:
POP ACC
RETI
;---------------------------------------
HBCD:
MOV B,#10
DIV AB
SWAP A
ORL A,B
RET
;---------------------------------------
T0INT:
PUSH ACC
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
INC TCNT
MOV A,TCNT
CJNE A,#20,T0INT1
T0INT1:
JC T0INTE
MOV TCNT,#0
MOV A,SECC
DEC A
MOV SECC,A
JNZ T0INT2
MOV SECC,#60
T0INT2:
LCALL DISSEC
T0INTE:
POP ACC
RETI
;---------------------------------------
DISSEC:
MOV A,SECC
LCALL HBCD
PUSH ACC
ANL A,#0FH
MOV 30H,A
POP ACC
SWAP A
ANL A,#0FH
MOV 31H,A
RET
;---------------------------------------
END
怎么用51单片机倒计时60秒(不用显示),60s后控制电路断开啊
在。。很简单啊,,一个80c51,一个继电器,引脚出发定时,然后执行60s,然后断开
51单片机汇编语言倒计时60秒循环程序
可以在SJMP $这里改成判断R2是不是为0,如是就重新载入60…如果不是就跳回重新判断R2
关于51单片机60秒倒计时的c语言程序,delay和dispiay部分分别什么意思啊...
delay(int t)这个是延时子程序,如果采用20M晶振的话,调用一次延时t毫秒。display()是数码管动态扫描显示子程序,位控位为P3.0、P3.1,段码控制为P1。扫描间隔时间为5毫秒左右。
编程实现倒计时的秒表,2位LED数码管显示,延时采用硬件延时的方法
用单片机的定时器T0定时,计时1秒,实现倒计时的秒表的功能。程序如下 include<reg51.h> unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};\/\/共阳数码管段码表 unsigned char second;\/\/秒倒计时变量 unsigned char t0n;\/\/T0中断次数计数 sbit k1=P3^2;\/...
求两位数码管显示一个倒数时间的单片机程序,比如显示从99到0
\/\/两位数码管显示倒计数99~00,51单片机。include<reg52.h> \/\/ 倒计数 define uint unsigned int define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar bai,shi;uint a1,a2;sbit D1=P3^...
AT89C51单片机60.00到00.00倒计时程序 4位数码管显示 C语..._百度知 ...
程序比较简单,主要的地方都有注释,我原来回答的是60秒,小数点自己解决吧,简单! 祝你好运!!! 参考资料:...一帆风顺年年好 万事如意步步高 吉星高照 本...51单片机原理及应用 单片机& 单片机编程 单片机输入倒计时 小时倒计时单片机 51单片机流水灯电路图 单片机最小系统 单片机 倒计时 显示 倒计时软件...
求C51单片机汇编语言控制两位数码管倒计时程序,从60秒到30秒再到90秒...
是立即改为60吗? 追问 是倒计时,就像红绿灯的倒计时那样。从60秒倒计时开始到01,之后变成30秒倒计时到01,之后,变成90秒倒计时到01,之后再到60秒,就跟前边的接上了 追答 轮流使用三种初始时间:60、90、30,分别倒计时到1。 追问 如何编写程序呀?您能帮我改下我的程序吗? 更多追问 本回答由提问者推荐 ...
单片机60秒倒计时程序怎么写啊!!!这个图的!!!急用啊!!!
ET0 = 1; TR0 = 1;while(1);}void Timer0Interrupt(void) interrupt 1{static unsigned int i = 0;static char time = 60; TH0 = 0xFC; TL0 = 0x66;P3 = table[time%10];P2 = table[time\/10];i++;if (i >= 1000){i = 0;time--;if (time < 0){time =...
怎样用51单片机实现累加计时和倒计时,并用六个共阴极数码管显示出来。用...
BUZZER:扬声器,在程序规定的情况下,发出声音,提示计时完毕。74LS373:地址锁存器,将P0口的地址和数据分开,分别输入到2764的数据和地址端口。2764:EPROM,为单片机提供外部的程序存储区。开关K0、K1、K2分别调整秒、分、时。按键RESET:在复位电路中,起到程序复位的作用。按键PULSE:提供单脉冲,从而实现单片机对外部脉冲的...
单片机 60秒倒计时
我是用汇编语言做的,如果显示的速度不理想 你改下延时程序段的数值就OK了,课堂上这个60S倒计时的课题用了很多方法做过 ORG 0000H LJMP START ORG 0100H START:MOV R0, #59 MOV DPTR, #TABLE LOOP:LCALL DISPLAY DEC R0 CJNE R0,#0,LOOP JMP START DISPLAY:MOV ...