基于汇编语言AT89C51单片机的数字钟设计问题 20
1个回答
展开全部
BI:4脚是消隐输入控制端,当BI=0 时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。消附能力还可以。
至于秒信号产生的工作原理:基本的有两种方法
1.用延时的方法,不过误差太大
2.用定时器定时的方法,比较精确
不过你要用AT89C51单片机做数字钟的设计的话可以不用4511的
可以直接在单片机的输入输出引脚上接数码管或液晶都可以。。。
下面是我写的一个简单的时钟程序
可以给你参考一下
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP INTT0
ORG 0030H
MAIN:MOV TMOD,#01H
MOV TL0,#88
MOV TH0,#158
MOV A,#00H
MOV R4,#0
MOV 30H,A;SEC
MOV 31H,A;MIN
MOV 32H,A;HOUR
MOV 33H,A;SEC DI EI
MOV 34H,A ;MIAO GAO WEI
MOV 35H,#10
MOV 36H,A
MOV 37H,A
MOV 38H,#10
MOV 39H,A
MOV 3AH,A
MOV 40H,A
MOV DPTR,#TAB
SETB EA
SETB EX0
SETB IT0
SETB ET0
SETB TR0
LOOP:LCALL SLECT
LCALL JIA1
LCALL JIAN1
LCALL DISPLAY
SJMP LOOP
DISPLAY:MOV R0,#33H
MOV R1,#07FH
MOV R2,#08H
LCALL CONVERT
SCAN1:
MOV A,R1
MOV P1,A
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
INC R0
MOV A,R1
RR A
MOV R1,A
MOV P3,#0FFH
DJNZ R2,SCAN1
MOV P2,#00H
RET
TAB: DB 03FH;0
DB 006H;1
DB 05BH;2
DB 04FH;3
DB 066H;4
DB 06DH;5
DB 07DH;6
DB 007H;7
DB 07FH;8
DB 06FH;9
DB 040H;-
DELAY: MOV R6,#14H
DL1:MOV R7,#19H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
CONVERT:PUSH ACC
PUSH PSW
MOV A,30H
MOV B,#10
DIV AB
MOV 34H,A
MOV 33H,B
MOV A,31H
MOV B ,#10
DIV AB
MOV 37H,A
MOV 36H,B
MOV A,32H
MOV B ,#10
DIV AB
MOV 3AH,A
MOV 39H,B
POP PSW
POP ACC
RET
INTT0:PUSH ACC
PUSH PSW
MOV TL0,#88
MOV TH0,#158
INC R4
CJNE R4,#40,LLL
MOV R4,#0
MOV A,30H
INC A
MOV 30H,A
CJNE A,#60,LLL
MOV 30H,#00H
MOV 34H,#00H
MOV 33H,#00H
MOV A,31H
INC A
MOV 31H,A
CJNE A,#60,LLL
MOV 31H,#00H
MOV 36H,#00H
MOV 37H,#00H
MOV A,32H
INC A
MOV 32H,A
CJNE A,#24,LLL
MOV 32H,#00H
MOV 39H,#00H
MOV 3AH,#00H
LLL:POP PSW
POP ACC
RETI
DELAY10MS:
MOV R7,#10H
DS1:MOV R6,#0FFH
DS2:DJNZ R6,DS2
DJNZ R7,DS1
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SLECT: JB P3.0,KEYOUT
LCALL DELAY10MS
JB P3.0,KEYOUT
WAIT0: JNB P3.0,WAIT0
INC 40H
MOV A,40H
CLR ET0
CLR TR0
CJNE A,#3,KEYOUT
MOV 40H,#0
SETB ET0
SETB TR0
SJMP KEYOUT
RET
JIA1: JB P3.1,KEYOUT
LCALL DELAY10MS
JB P3.1,KEYOUT
WAIT1: JNB P3.1,WAIT1
MOV A,40H
CJNE A,#02H,KEY1
INC 31H
MOV A,31H
CJNE A,#60,KEYOUT
MOV 31H,#00
SJMP KEYOUT
KEY1: INC 32H
MOV A,32H
CJNE A,#24,KEYOUT
MOV 32H,#00
SJMP KEYOUT
RET
JIAN1: JB P3.2,KEYOUT
LCALL DELAY10MS
JB P3.2,KEYOUT
WAIT2: JNB P3.2,WAIT2
MOV A,40H
CJNE A,#02H,KEY2
DEC 31H
MOV A,31H
CJNE A,#0FFH,KEYOUT
MOV 31H,#59
SJMP KEYOUT
KEY2: DEC 32H
MOV A,32H
CJNE A,#0FFH,KEYOUT
MOV 32H,#23
SJMP KEYOUT
RET
KEYOUT: RET
END
至于秒信号产生的工作原理:基本的有两种方法
1.用延时的方法,不过误差太大
2.用定时器定时的方法,比较精确
不过你要用AT89C51单片机做数字钟的设计的话可以不用4511的
可以直接在单片机的输入输出引脚上接数码管或液晶都可以。。。
下面是我写的一个简单的时钟程序
可以给你参考一下
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP INTT0
ORG 0030H
MAIN:MOV TMOD,#01H
MOV TL0,#88
MOV TH0,#158
MOV A,#00H
MOV R4,#0
MOV 30H,A;SEC
MOV 31H,A;MIN
MOV 32H,A;HOUR
MOV 33H,A;SEC DI EI
MOV 34H,A ;MIAO GAO WEI
MOV 35H,#10
MOV 36H,A
MOV 37H,A
MOV 38H,#10
MOV 39H,A
MOV 3AH,A
MOV 40H,A
MOV DPTR,#TAB
SETB EA
SETB EX0
SETB IT0
SETB ET0
SETB TR0
LOOP:LCALL SLECT
LCALL JIA1
LCALL JIAN1
LCALL DISPLAY
SJMP LOOP
DISPLAY:MOV R0,#33H
MOV R1,#07FH
MOV R2,#08H
LCALL CONVERT
SCAN1:
MOV A,R1
MOV P1,A
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
INC R0
MOV A,R1
RR A
MOV R1,A
MOV P3,#0FFH
DJNZ R2,SCAN1
MOV P2,#00H
RET
TAB: DB 03FH;0
DB 006H;1
DB 05BH;2
DB 04FH;3
DB 066H;4
DB 06DH;5
DB 07DH;6
DB 007H;7
DB 07FH;8
DB 06FH;9
DB 040H;-
DELAY: MOV R6,#14H
DL1:MOV R7,#19H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
CONVERT:PUSH ACC
PUSH PSW
MOV A,30H
MOV B,#10
DIV AB
MOV 34H,A
MOV 33H,B
MOV A,31H
MOV B ,#10
DIV AB
MOV 37H,A
MOV 36H,B
MOV A,32H
MOV B ,#10
DIV AB
MOV 3AH,A
MOV 39H,B
POP PSW
POP ACC
RET
INTT0:PUSH ACC
PUSH PSW
MOV TL0,#88
MOV TH0,#158
INC R4
CJNE R4,#40,LLL
MOV R4,#0
MOV A,30H
INC A
MOV 30H,A
CJNE A,#60,LLL
MOV 30H,#00H
MOV 34H,#00H
MOV 33H,#00H
MOV A,31H
INC A
MOV 31H,A
CJNE A,#60,LLL
MOV 31H,#00H
MOV 36H,#00H
MOV 37H,#00H
MOV A,32H
INC A
MOV 32H,A
CJNE A,#24,LLL
MOV 32H,#00H
MOV 39H,#00H
MOV 3AH,#00H
LLL:POP PSW
POP ACC
RETI
DELAY10MS:
MOV R7,#10H
DS1:MOV R6,#0FFH
DS2:DJNZ R6,DS2
DJNZ R7,DS1
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SLECT: JB P3.0,KEYOUT
LCALL DELAY10MS
JB P3.0,KEYOUT
WAIT0: JNB P3.0,WAIT0
INC 40H
MOV A,40H
CLR ET0
CLR TR0
CJNE A,#3,KEYOUT
MOV 40H,#0
SETB ET0
SETB TR0
SJMP KEYOUT
RET
JIA1: JB P3.1,KEYOUT
LCALL DELAY10MS
JB P3.1,KEYOUT
WAIT1: JNB P3.1,WAIT1
MOV A,40H
CJNE A,#02H,KEY1
INC 31H
MOV A,31H
CJNE A,#60,KEYOUT
MOV 31H,#00
SJMP KEYOUT
KEY1: INC 32H
MOV A,32H
CJNE A,#24,KEYOUT
MOV 32H,#00
SJMP KEYOUT
RET
JIAN1: JB P3.2,KEYOUT
LCALL DELAY10MS
JB P3.2,KEYOUT
WAIT2: JNB P3.2,WAIT2
MOV A,40H
CJNE A,#02H,KEY2
DEC 31H
MOV A,31H
CJNE A,#0FFH,KEYOUT
MOV 31H,#59
SJMP KEYOUT
KEY2: DEC 32H
MOV A,32H
CJNE A,#0FFH,KEYOUT
MOV 32H,#23
SJMP KEYOUT
RET
KEYOUT: RET
END
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询