6位数码管的MCS51单片机秒表设计实验

利用51单片机,6个数码管设计一个秒表,要求在数码管上显示的数据从0开始每0.1秒加1,有启动,暂停,清零键 谢谢大家了。。要个完整的程序!!!谢谢了。满分
用哪个显示都成!!!急需。。谢谢!!! 不考虑什么数码管,也不考虑什么外围电路,能运行就成,学校的课设 要交拉 !!急

第1个回答  2019-07-16
HD7279A.
ORG0000H
lJMPWAIT0
ORG001BH
LJMPBRT
ORG0030H
WAIT0:LCALLDISP
MOVC,P1.4
JCWAIT0
LCALLREAD
MOVA,28H
CJNEA,#01H,WAIT0
MIAOBIAO:MOV79H,#00H;1键开始
MOV7AH,#00H;2键停止
MOV7BH,#00H;再按3键清零
MOV7CH,#00H;再按1键重新开始
MOV7DH,#00H
MOV7EH,#00H
MOVTMOD,#10H
MOVTH1,#0D8H
MOV1,#0F0H
MOVIE,#88H
SETBPT1;中断优先级
SETBTR1;开启定时器T1
;*********************************************************************************************
MAIN:ACALLDISP
MOVC,P1.4
JCMAIN;等按键,按2停止
ACALLREAD
MOVA,28H
CJNEA,#02H,MAIN
CLRTR1
WAIT1:LCALLDISP
MOVC,P1.4
JCWAIT1;按3键清零
LCALLREAD
MOVA,28H
CLR28H
CJNEA,#03H,WAIT1
MOV79H,#00H
MOV7AH,#00H
MOV7BH,#00H
MOV7CH,#00H
MOV7DH,#00H
MOV7EH,#00H
WAIT2:LCALLDISP
MOVC,P1.4;第三次按1键重新开始
JCWAIT2
LCALLREAD
MOVA,28H
CLR28H
CJNEA,#01H,EXIT
LJMPMIAOBIAO
EXIT:LJMPWAIT0
;EXIT:POPPSW
;POPACC
;RET
DISP:MOVR0,#79H
MOVR1,#0C8H
MOVR2,#06H
DISP_LOOP:MOV29H,R1
ACALLSEND
MOV29H,@R0
ACALLSEND
INCR1
INCR0
DJNZR2,DISP_LOOP
RET
SEND:CLRP1.7
MOVR3,#08H
lCALLLONG
SEND_LOOP:MOVC,29H.7
MOVP1.6,C
SETBP1.5
ACALLSHORT
CLRP1.5
ACALLSHORT
MOVA,29H
RLA
MOV29H,A
DJNZR3,SEND_LOOP
CLRP1.6
RET
LONG:MOVR5,#28H
LLP:DJNZR5,LLP
SHORT:MOVR6,#08H
SLP:DJNZR6,SLP
RET
BRT:MOVTL1,#0F0H
MOVTH1,#0D8H
PUSHPSW
PUSHACC
INC79H
MOVA,79H
CJNEA,#0AH,FH
MOV79H,#00H
INC7AH
MOVA,7AH
CJNEA,#0AH,FH
MOV7AH,#00H
INC7BH
MOVA,7BH
CJNEA,#0AH,FH
MOV7BH,#00H
INC7CH
MOVA,7CH
CJNEA,#06H,FH
MOV7CH,#00H
INC7DH
MOVA,7DH
CJNEA,#0AH,FH
MOV7DH,#00H
INC7EH
MOVA,7EH
CJNEA,#06H,FH
MOV7EH,#00H
FH:POPACC
POPPSW
RETI
READ:MOV29H,#15H
ACALLSEND
LCALLRESE
RET
RESE:MOV71H,#8;=8
SETBP1.6;P1.2(DATA)
CALLLONG;
RECEIVE_LOOP:SETBP1.5;CLK
CALLSHORT;
MOVA,28H;
RLA
MOV28H,A
MOVC,P1.6;
MOV28H.0,C
CLRP1.5;CLK
CALLSHORT
DJNZ71H,RECEIVE_LOOP;8
CLRP1.6;DAT
RET
第2个回答  2009-07-18
HD7279A.
ORG 0000H
lJMP WAIT0
ORG 001BH
LJMP BRT
ORG 0030H
WAIT0: LCALL DISP
MOV C,P1.4
JC WAIT0
LCALL READ
MOV A,28H
CJNE A,#01H,WAIT0
MIAOBIAO: MOV 79H,#00H ;1键开始
MOV 7AH,#00H ; 2键停止
MOV 7BH,#00H ; 再按3键清零
MOV 7CH,#00H ; 再按1键重新开始
MOV 7DH,#00H
MOV 7EH,#00H

MOV TMOD,#10H
MOV TH1,#0D8H
MOV 1,#0F0H
MOV IE,#88H
SETB PT1; 中断优先级
SETB TR1 ;开启定时器T1
;*********************************************************************************************
MAIN:ACALL DISP
MOV C,P1.4
JC MAIN ; 等按键,按2停止
ACALL READ
MOV A,28H
CJNE A,#02H,MAIN
CLR TR1
WAIT1: LCALL DISP
MOV C,P1.4
JC WAIT1 ;按3键清零
LCALL READ
MOV A,28H
CLR 28H
CJNE A,#03H,WAIT1
MOV 79H,#00H
MOV 7AH,#00H
MOV 7BH,#00H
MOV 7CH,#00H
MOV 7DH,#00H
MOV 7EH,#00H
WAIT2: LCALL DISP
MOV C,P1.4 ;第三次按1键重新开始
JC WAIT2
LCALL READ
MOV A,28H
CLR 28H
CJNE A,#01H,EXIT
LJMP MIAOBIAO
EXIT:LJMP WAIT0
; EXIT:POP PSW
; POP ACC
; RET
DISP:MOV R0,#79H
MOV R1,#0C8H
MOV R2,#06H
DISP_LOOP:MOV 29H,R1
ACALL SEND
MOV 29H,@R0
ACALL SEND
INC R1
INC R0
DJNZ R2,DISP_LOOP
RET
SEND:CLR P1.7
MOV R3,#08H
lCALL LONG
SEND_LOOP:MOV C,29H.7
MOV P1.6,C
SETB P1.5
ACALL SHORT
CLR P1.5
ACALL SHORT
MOV A,29H
RL A
MOV 29H,A
DJNZ R3,SEND_LOOP
CLR P1.6
RET
LONG:MOV R5,#28H
LLP:DJNZ R5,LLP
SHORT:MOV R6,#08H
SLP:DJNZ R6,SLP
RET

BRT: MOV TL1,#0F0H
MOV TH1,#0D8H
PUSH PSW
PUSH ACC
INC 79H
MOV A,79H
CJNE A,#0AH,FH
MOV 79H,#00H
INC 7AH
MOV A,7AH
CJNE A,#0AH,FH
MOV 7AH,#00H
INC 7BH
MOV A,7BH
CJNE A,#0AH,FH
MOV 7BH,#00H
INC 7CH
MOV A,7CH
CJNE A,#06H,FH
MOV 7CH,#00H
INC 7DH
MOV A,7DH
CJNE A,#0AH,FH
MOV 7DH,#00H
INC 7EH
MOV A,7EH
CJNE A,#06H,FH
MOV 7EH,#00H
FH:POP ACC
POP PSW
RETI
READ: MOV 29H,#15H
ACALL SEND
LCALL RESE
RET

RESE:MOV 71H,#8 ; =8
SETB P1.6 ; P1.2(DATA)

CALL LONG ;
RECEIVE_LOOP: SETB P1.5 ; CLK
CALL SHORT ;
MOV A,28H ;
RL A
MOV 28H,A
MOV C,P1.6 ;
MOV 28H.0,C
CLR P1.5 ; CLK
CALL SHORT
DJNZ 71H,RECEIVE_LOOP; 8
CLR P1.6 ; DAT
RET本回答被提问者采纳
第3个回答  2009-07-16
www.willar.com上面有个电子钟程序,你可以进行简单的改一下,就是了。
第4个回答  2009-07-14
没钱不想动脑筋 这个也算毕设啊 太简单了
第5个回答  2009-07-13
楼主还是自己写个吧。写这个挺费时的,而且你用的什么数码管,还有单片机的外围电路怎样分布的,都不清楚,写了估计也不适合。
你把问题补充下,再等下一位大侠来替你解围吧
相似回答