单片机课程设计

发布网友 发布时间:2022-04-24 06:57

我来回答

3个回答

热心网友 时间:2022-06-17 05:49

刚给一个兄弟做的

KEYVALEQU 30H

KEYTMEQU 31H

KEYSCANEQU 32H

DATEQU 33H

SCANLEDEQU 39H

CLKEQU 77H

SECEQU 78H

MINEQU 79H

HOUREQU 7AH

PAUSEBIT 00H

DOTBIT 01H

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T0ISR;50ms定时

ORG 001BH

LJMP T1ISR;扫描显示

ORG 0030H

MAIN:

MOV SP,#5FH

MOV TMOD,#11H

MOV TH0,#03CH

MOV TL0,#0B0H

MOV TH1,#0ECH

MOV TL1,#078H

MOV KEYVAL,#0

MOV SCANLED,#0

MOV 33H,#10H

MOV 34H,#10H

MOV 35H,#10H

MOV 36H,#10H

MOV 37H,#10H

MOV 38H,#10H

MOV SEC,#0

MOV MIN,#0

MOV HOUR,#0

MOV CLK,#0

CLR PAUSE

SETB EA

SETB ET1

SETB TR1

LOOP:

LCALL KEYSEL

MOV A,KEYVAL

CJNE A,#0FFH,LOOP1

SJMP LOOP

LOOP1:

CJNE A,#10,LOOP2;“ON”启动

SETB TR0

SETB ET0

SETB PAUSE

SJMP LOOP

LOOP2:

CJNE A,#11,LOOP3;“=”清零

MOV SEC,#0

MOV MIN,#0

MOV HOUR,#0

LCALL DISCHG

SJMP LOOP

LOOP3:

CJNE A,#15,LOOP4;“+”暂停

CLR TR0

CLR ET0

CLR PAUSE

SJMP LOOP

LOOP4:

CJNE A,#14,LOOP5;“-”清显示暂停

MOV 33H,#10H

MOV 34H,#10H

MOV 35H,#10H

MOV 36H,#10H

MOV 37H,#10H

MOV 38H,#10H

CLR TR0

CLR ET0

CLR PAUSE

SJMP LOOP

LOOP5:

CJNE A,#10,LOOP6;数字键

LOOP6:

JC LOOP7

LJMP LOOP

LOOP7:

JNB PAUSE,LOOP8;暂停状态可以输入数字键

LJMP LOOP

LOOP8:

MOV 33H,34H

MOV 34H,35H

MOV 35H,36H

MOV 36H,37H

MOV 37H,38H

MOV 38H,KEYVAL

MOV A,34H

SWAP A

ORL A,33H

LCALL BCDH

MOV HOUR,A

MOV A,36H

SWAP A

ORL A,35H

LCALL BCDH

MOV MIN,A

MOV A,38H

SWAP A

ORL A,37H

LCALL BCDH

MOV SEC,A

LJMP LOOP

;------------------

;BCD转换为十六进制

BCDH:

MOV B,#10H

DIV AB 

MOV R7,B

MOV B,#10

MUL AB 

ADD A,R7

RET 

;------------------

;十六进制转换为BCD

HBCD:

MOV B,#10

DIV AB 

SWAP A 

ORL A,B

RET 

;------------------

KEYSEL:

MOVKEYVAL,#0

MOVKEYSCAN,#0EFH

LCALLGETKEY

MOVA,KEYTM

JZKEYS1

MOVKEYVAL,A

SJMPKEYRTN

KEYS1:

MOVKEYSCAN,#0DFH

LCALLGETKEY

MOVA,KEYTM

JZKEYS2

CLRC

ADDA,#4

MOVKEYVAL,A

SJMPKEYRTN

KEYS2:

MOVKEYSCAN,#0BFH

LCALLGETKEY

MOVA,KEYTM

JZKEYS3

CLRC

ADDA,#8

MOVKEYVAL,A

SJMPKEYRTN

KEYS3:

MOVKEYSCAN,#7FH

LCALLGETKEY

MOVA,KEYTM

JZKEYRTN

CLRC

ADDA,#12

MOVKEYVAL,A

KEYRTN:

LCALL CHGKEY

RET

;--------------------

GETKEY:

MOV KEYTM,#0

MOVA,KEYSCAN

MOVP3,A

NOP

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKEY

MOV R2,#10

LCALL DELAY

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKEY

MOVA,P3

ANLA,#0FH

MOVR7,A

SF:

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JNZSF

MOVA,R7

CJNEA,#0EH,NK1

MOVKEYTM,#1

SJMPNOKEY

NK1:

CJNEA,#0DH,NK2

MOVKEYTM,#2

SJMPNOKEY

NK2:

CJNEA,#0BH,NK3

MOVKEYTM,#3

SJMPNOKEY

NK3:

CJNEA,#07H,NOKEY

MOVKEYTM,#4

NOKEY:RET

;--------------------

DELAY:

MOV R3,#50

DELAY1:

MOV R4,#100

DJNZ R4,$

DJNZ R3,DELAY1

DJNZ R2,DELAY

RET

;--------------------

T0ISR:

PUSH ACC

CLR TR0

MOV TH0,#3CH

MOV TL0,#0B0H

SETB TR0

INC CLK

MOV A,CLK

CJNE A,#20,T0ISRE

MOV CLK,#0

INC SEC

MOV A,SEC

CJNE A,#60,T0ISRE

MOV SEC,#0

INC MIN

MOV A,MIN

CJNE A,#60,T0ISRE

MOV MIN,#0

INC HOUR

MOV A,HOUR

CJNE A,#24,T0ISRE

MOV SEC,#0

MOV MIN,#0

MOV HOUR,#0

T0ISRE:

LCALL DISCHG

POP ACC

RETI

;--------------------

DISCHG:

MOV A,HOUR

LCALL HBCD

PUSH ACC

ANL A,#0FH

MOV 34H,A

POP ACC

ANL A,#0F0H

SWAP A

MOV 33H,A

MOV A,MIN

LCALL HBCD

PUSH ACC

ANL A,#0FH

MOV 36H,A

POP ACC

ANL A,#0F0H

SWAP A

MOV 35H,A

MOV A,SEC

LCALL HBCD

PUSH ACC

ANL A,#0FH

MOV 38H,A

POP ACC

ANL A,#0F0H

SWAP A

MOV 37H,A

RET

;--------------------

T1ISR:

PUSH ACC

CLR TR1

MOV TH1,#0ECH

MOV TL1,#78H

SETB TR1

MOV DPTR,#LEDTAB

T100:

MOV R0,#DAT

MOV A,SCANLED

ADD A,R0

MOV R0,A

MOV A,SCANLED

JNZ T101

MOV P2,#01H

CLR DOT

SJMP T1DIS

T101:

DEC A

JNZ T102

MOV P2,#02H

SETB DOT

SJMP T1DIS

T102:

DEC A

JNZ T103

MOV P2,#04H

CLR DOT

SJMP T1DIS

T103:

DEC A

JNZ T104

MOV P2,#08H

SETB DOT

SJMP T1DIS

T104:

DEC A

JNZ T105

MOV P2,#10H

CLR DOT

SJMP T1DIS

T105:

MOV P2,#20H

CLR DOT

T1DIS:

MOV A,@R0

MOVC A,@A+DPTR

JNB DOT,T1DIS1

ORL A,#01H

T1DIS1:

CPL A

MOV P0,A

INC SCANLED

MOV A,SCANLED

CJNE A,#6,T1END

MOV SCANLED,#0

T1END:

POP ACC

RETI

;--------------------

CHGKEY:

MOV A,KEYVAL

JZ KV16

DEC A

JNZ KV01

MOV KEYVAL,#7

RET

KV01:

DEC A

JNZ KV02

MOV KEYVAL,#4

RET

KV02:

DEC A

JNZ KV03

MOV KEYVAL,#1

RET

KV03:

DEC A

JNZ KV04

MOV KEYVAL,#10

RET

KV04:

DEC A

JNZ KV05

MOV KEYVAL,#8

RET

KV05:

DEC A

JNZ KV06

MOV KEYVAL,#5

RET

KV06:

DEC A

JNZ KV07

MOV KEYVAL,#2

RET

KV07:

DEC A

JNZ KV08

MOV KEYVAL,#0

RET

KV08:

DEC A

JNZ KV09

MOV KEYVAL,#9

RET

KV09:

DEC A

JNZ KV10

MOV KEYVAL,#6

RET

KV10:

DEC A

JNZ KV11

MOV KEYVAL,#3

RET

KV11:

DEC A

JNZ KV12

MOV KEYVAL,#11

RET

KV12:

DEC A

JNZ KV13

MOV KEYVAL,#12

RET

KV13:

DEC A

JNZ KV14

MOV KEYVAL,#13

RET

KV14:

DEC A

JNZ KV15

MOV KEYVAL,#14

RET

KV15:

DEC A

JNZ KV16

MOV KEYVAL,#15

RET

KV16:

MOV KEYVAL,#0FFH

RET

;--------------------

LEDTAB: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

;--------------------

END

热心网友 时间:2022-06-17 05:50

2.电子日历 4.数字电压表设计 都简单,都有完整的。

热心网友 时间:2022-06-17 05:50

老兄啊,你这问题放了很就都没人会答了里,你也不给点动力,编程不是问题,可编了之后还要将程序用手机打字啊,手机不给力啊,你给的分也太抠了吧

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com