单片机实习总结报告

单片机实习总结报告

专业综合实习总结

专业班级: 电子信息工程0801

学生学号: ***

指导教师:

实习时间:20XX.6.20—20XX.7.15

机 电 工 程 学 院

一、实习目的和意义

1、实习目的:

(1)利用单片机小系统实习板,掌握电路原理图;

(2)通过对系统板的测试,了解系统板的工作原理及性能,掌握元器件及系统故障的排除方法;

(3)通过单片机系统的调试、程序编制及运行,掌握单片机系统的工作原理、开发方法和操作方法。

2、实习意义:

通过本实习不但可以掌握单片机软、硬件的综合调试方法,而且可以熟练掌握电路原理图,激发对单片机智能性的探索精神,提高学生的综合素质,培养学生应用单片机实现对工业控制系统的设计、开发与调试的能力。在制作学习过程中,不但可以掌握软、硬件的综合调试方法,而且可以使学生对单片机智能性产生强烈的欲望。达到最大限度地掌握微机应用技术,软件及接口设计和数据采集与处理的技能,培养电综合实践素质的目的。

二、实习内容

1.熟悉“单片机课程实习”电路板,领会、掌握该电路板的设计原理及硬件布局。

2.掌握单片机技术应用平台keil软件的学习。

3.借助平台软件,学习开发板的使用,按照要求编制、调试出正确的汇编语言程序。

4.学习适合本开发平台软件STC-ISP的在线单片机烧录。

5.针对实习电路板的功能,编制、调试、编译汇编语言程序,下载烧录并在实验板上运行,或利用软件ISIS 7 Professional进行软件仿真。

实现的功能:

1.led显示模块:单向循环流水led显示、双向循环流水led显示、花样流水灯的显示,使用查表方法编制任意点亮历程的实现,使用软件延时;

2.数码管显示模块:一位静态数码管显示0到9和0到F、二位静态数码管显示0到99、三位静态数码管显示0到999、四位静态数码管显示0到9999;阴极和阳极四位动态数码管显示;74LS驱动4位静态数码管显示;利用74HC595四位静态数码管显示;使用串行静态显示和动态扫描显示两种方式;

3.键盘模块:利用4×4矩阵键盘按键对应置数显示“0~F”;使用键盘的行列扫描方式;

三、硬件介绍

(一)LED显示模块:

图1 流水灯显示

图2 键盘控制循环灯

(二)数码管显示模块:

图3 1位静态数码管显示

图4 4位静态数码管显示

图5 4位动态数码管显示

图6 独立键盘加减清零数码管显示

图7 4位74LS驱动静态数码管显示

图8 4位74HC595静态显示

图9 0到F矩阵键盘

四、软件程序流程图

1、流水灯循环左移右移程序框图:

单片机实习总结报告

2、0到F一位静态显示程序框图:

单片机实习总结报告

3、0到9一位静态显示程序框图:

单片机实习总结报告

4、动态数码显示程序框图:

单片机实习总结报告

5、4×4矩阵矩阵键盘数码显示程序框图:

主程序图:

单片机实习总结报告

判别是否有键按下程序:

单片机实习总结报告

五、实习的心得体会

回顾起此次课程设计,感觉受益匪浅,从拿到题目到完成整个编程,从理论到实践,学到很多很多的课堂理论中没学到过的东西,不仅对键盘的识别技术这一章节的知识点有了深刻的认识,而且对这学期开设的单片机这门课程有了更全面的了解,尤其是在学习使用proteus软件片编程和仿真时收获良多。通过这次单片机课程设计,还使我懂得了实践的重要性。同时在程序调试的过程中提高自己的发现问题、解决问题、实际动手和独立思考的能力。

本次单片机实习我们一共完成了三个模块的程序设计,包括:led显示模块、数码管显示模块和键盘模块。分别实现了流水灯的循环点亮控制、数码管的静态和动态计数显示,还有矩阵键盘按键控制数码管显示的程序设计。然后我们分别用protues系统仿真软件对各个模块进行了模拟仿真,用keil软件编制了汇编语言程序,验证了我们所设计的程序。

当然,这其中也有很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课设是对我的学习态度的一次检验。对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。

通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。

这次课程设计能顺利的完成,除了我们的努力外,当然也离不开指导老师申老师的辛勤指导,致使我在设计的过程中学到了很多实用性的知识。同时,对给过我帮助的所有同学和各位指导老师表示忠心的感谢!

附录:程序清单

P1口闪亮:ORG 0000H

LOOP:MOV P1,#01H

ACALL DELAY

MOV P1,#00H

ACALL DELAY

SJMP LOOP

DELAY:MOV R7,#250

DEL1:MOV R6,#250

DJNZ R6,$

DJNZ R7,DEL1

RET

END

流水灯循环左移右移:

方法一:ORG 0000H

MOV A,#01H

LOOP: MOV P1,A

MOV R5,#10

LOOP1:ACALL DELAY

DJNZ R5,LOOP1

RL A

JB ACC.7, LOOP2

SJMP LOOP

LOOP2:MOV P1,A

MOV R5,#10

LOOP3:ACALL DELAY

DJNZ R5,LOOP3

RR A

JB ACC.0,LOOP

SJMP LOOP2

DELAY:MOV R7,#250

DEL1:MOV R6,#250

DJNZ R6,$

DJNZ R7,DEL1

RET

END

方法二:ORG 0000H

MOV A,#80H

LOOP:RL A

MOV P1,A

ACALL DELAY

CJNE A,#80H,LOOP

LOOP1:RR A

MOV P1,A

ACALL DELAY

CJNE A,#01H,LOOP1

SJMP LOOP

DELAY:MOV R7,#0FFH

DELAY1:MOV R6,#0FFH

DELAY2:MOV R5,#03H

DELAY3:DJNZ R5,DELAY3

DJNZ R6,DELAY2

DJNZ R7,DELAY1

RET

END

方法三:ORG 0000H

MOV A,#80H

MOV R0,#08H

LOOP:RL A

MOV P1,A

ACALL DELAY

DJNZ R0,LOOP

MOV R0,#07H

LOOP1:RR A

MOV P1,A

ACALL DELAY

DJNZ R0,LOOP1

MOV R0,#07H

SJMP LOOP

DELAY:MOV R7,#0FFH

DELAY1:MOV R6,#0FFH

DELAY2:MOV R5,#03H

DELAY3:DJNZ R5,DELAY3

DJNZ R6,DELAY2

DJNZ R7,DELAY1

RET

END

方法四:ORG 0000H

MOV A,#00H

SETB CY

LOOP:RLC A

JC LOOP1

MOV P1,A

ACALL DELAY

SJMP LOOP

LOOP1:RRC A

JC LOOP

MOV P1,A

ACALL DELAY

SJMP LOOP1

DELAY:MOV R7,#0FFH

DELAY1:MOV R6,#0FFH

DELAY2:MOV R5,#03H

DELAY3:DJNZ R5,DELAY3

DJNZ R6,DELAY2

DJNZ R7,DELAY1

RET

END

从中间向两边,再从两边向中间循环点亮: ORG 0000H

STAR:MOV R0,#00H

MOV R1,#07

MOV A,R0

MOV DPTR,#TAB

LOOP: MOVC A,@A+DPTR

MOV P1,A

MOV R5,#10

LOOP1:ACALL DEL

DJNZ R5,LOOP1

INC R0

MOV A,R0

DJNZ R1,LOOP

SJMP STAR

DEL:MOV R7,#200

DEL1:MOV R6,#250

DJNZ R6,$

DJNZ R7,DEL1

RET

TAB:DB 18H,24H,42H,81H,42H,24H,18H

END

键盘控制流水灯循环点亮:

ORG 0000H

AJMP MAIN

ORG 0003H

AJMP ET

ORG 0030H

MAIN:MOV SP,#60H

SETB EA

SETB IT0

SETB EX0

CLR C

MOV A,#0FFH

MOV P2,A

LCALL DEL

LOOP:JNB 21H.1,L ;检测标志

RRC A ;右移动

MOV P2,A

AJMP DEE

L: RLC A ;左移动

MOV P2,A

DEE: LCALL DEL

AJMP LOOP

ET: CLR EA

PUSH ACC

PUSH PSW

LCALL DELAY

MOV A,#0FFH

MOV P1,A

NOP

NOP

MOV A,P1 ;读键值

ANL A,#0F0H

CJNE A,#0F0H,NEXT1

AJMP NEXT

NEXT1:JB ACC.5,NEXT2

CLR 21H.1 ;按键后产生标志

AJMP NEXT

NEXT2:JB ACC.6,NEXT

SETB 21H.1 ;按键后产生标志

NEXT: SETB EA

POP PSW

POP ACC

HHH: RETI

DEL:MOV R6,#250

DEL11:MOV R5,#250

DJNZ R5,$

DJNZ R6,DEL11

RET

DELAY:MOV R6,#10

DEL1: MOV R5,#200

DEL2: DJNZ R5,$

DJNZ R6,DEL1

RET

END

花样流水灯:

ORG 0000H

START:MOV R0,#00H

MOV P1,#00H

LOOP:MOV A,R0

ADD A,#0CH

MOVC A,@A+PC

CJNE A,#01H,XSH

SJMP START

XSH:MOV P1,A

ACALL DELAY

INC R0

SJMP LOOP

DB0FFH,00H,0FFH,00H,0FFH,00H,0FFH,00H,0FH,0F0H,0FH,0F0H,0FH,0F0H,0FH

DB0F0H,0FH,0F0H,0AAH,55H,0AAH,55H,0AAH,55H,0AAH,55H,0AAH,55H,81H,42H

DB24H,18H,24H,42H,81H,42H,24H,18H,24H,42H,81H,42H,24H,18H,24H,42H,81H

DB42H,24H,18H,24H,42H,81H,03H,06H,0CH,18H,30H,60H,0C0H,60H,30H,18H,0CH

DB06H,03H,06H,0CH,18H,30H,60H,0C0H,60H,30H,18H,0CH,06H,03H,01H

DELAY:MOV R7,#0FFH

DELAY1:MOV R6,#0FFH

DELAY2:MOV R5,#03H

DELAY3:DJNZ R5,DELAY3

DJNZ R6,DELAY2

DJNZ R7,DELAY1

RET

END

1位静态数码显示:

ORG 0000H

MOV R0,#0FFH

DISPLY: INC R0

CJNE R0,#0AH,DISPLY1

MOV R0,#0FFH

SJMP DISPLY

DISPLY1:MOV A,R0

ADD A,#06H

MOVC A,@A+PC

MOV P0,A

ACALL DELAY

SJMP DISPLY

DTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH

DELAY:MOV R7,#0FFH

DELAY1:MOV R6,#0FFH

DELAY2:MOV R5,#03H

DELAY3:DJNZ R5,DELAY3

DJNZ R6,DELAY2

DJNZ R7,DELAY1

RET

2位静态数码显示:

ORG 0000H

MOV R0,#0FFH

MOV R1,#00H

DISPLY: INC R0

CJNE R0,#0AH,DISPLY1

INC R1

CJNE R1,#0AH,DISPLY2

MOV R0,#0FFH

MOV R1,#00H

MOV P0,#0FFH

AJMP DISPLY

DISPLY2:MOV A,R1

ADD A,#10H

MOVC A,@A+PC

MOV P0,A

MOV R0,#0FFH

AJMP DISPLY

DISPLY1:MOV A,R0

ADD A,#06H

MOVC A,@A+PC

MOV P2,A

ACALL DELAY

AJMP DISPLY

DTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH

DELAY:MOV R7,#0FFH

DELAY1:MOV R6,#0FFH

DELAY2:MOV R5,#03H

DELAY3:DJNZ R5,DELAY3

DJNZ R6,DELAY2

DJNZ R7,DELAY1

RET

END

3位静态数码显示:

ORG 0000H

START: MOV R0,#0FFH

MOV R1,#00H

MOV R2,#00H

MOV P3,#0FFH

MOV P2,#0FFH

MOV P0,#0FFH

DISPLY: INC R0

CJNE R0,#0AH,DISPLY1

MOV R0,#0FFH

INC R1

CJNE R1,#0AH,DISPLY2

MOV R1,#00H

MOV P2,#0C0H

INC R2

CJNE R2,#0AH,DISPLY3

SJMP START

DISPLY3:MOV A,R2

ADD A,#16H

MOVC A,@A+PC

MOV P0,A

SJMP DISPLY

DISPLY2:MOV A,R1

ADD A,#0EH

MOVC A,@A+PC

MOV P2,A

SJMP DISPLY

DISPLY1:MOV A,R0

ADD A,#06H

MOVC A,@A+PC

MOV P3,A

ACALL DELAY

SJMP DISPLY

DTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH

DELAY: MOV R7,#0FFH

DELAY1:MOV R6,#0FFH

DELAY2:MOV R5,#03H

DELAY3:DJNZ R5,DELAY3

DJNZ R6,DELAY2

DJNZ R7,DELAY1

RET

END

4位静态数码显示:

ORG 0000H

START: MOV R0,#0FFH

MOV R1,#00H

MOV R2,#00H

MOV R3,#00H

MOV P1,#0FFH

MOV P3,#0FFH

MOV P2,#0FFH

MOV P0,#0FFH

DISPLY: INC R0

CJNE R0,#0AH,DISPLY1

MOV R0,#0FFH

INC R1

CJNE R1,#0AH,DISPLY2

MOV R1,#00H

MOV P3,#0C0H

INC R2

CJNE R2,#0AH,DISPLY3

MOV R2,#00H

MOV P2,#0C0H

INC R3

CJNE R3,#0AH,DISPLY4

SJMP START

DISPLY4:MOV A,R3

ADD A,#1EH

MOVC A,@A+PC

MOV P0,A

SJMP DISPLY

DISPLY3:MOV A,R2

ADD A,#16H

MOVC A,@A+PC

MOV P2,A

SJMP DISPLY

DISPLY2:MOV A,R1

ADD A,#0EH

MOVC A,@A+PC

MOV P3,A

SJMP DISPLY

DISPLY1:MOV A,R0

ADD A,#06H

MOVC A,@A+PC

MOV P1,A

ACALL DELAY

SJMP DISPLY

DTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH

DELAY: MOV R7,#0AH

DELAY1:MOV R6,#0FFH

DELAY2:MOV R5,#03H

DELAY3:DJNZ R5,DELAY3

DJNZ R6,DELAY2

DJNZ R7,DELAY1

RET

END

74HC595四位稳定显示:

1)最大数为9999的计数器

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP CRT0

ORG 0020H

MAIN:MOV R1,#33H

MOV R2,#04H

CLEAR:MOV @R1,#33H

DEC R1

DJNZ R2,CLEAR

MOV SP,#60H

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H

SETB EA

SETB ET0

SETB TR0

MOV R7,#1

MOV DPTR,#DTAB

LOOP: MOV R1,#33H

MOV R2,#04H

MOV R3,#08H

MOV R4,#01H

LOOP1:MOV A,R3

MOV P2,A

RR A

MOV R3,A

MOV A,@R1

CJNE R4,#00H,MODE

XSH: LCALL DIS

LCALL DEL

DEC R1

DJNZ R2,LOOP1

AJMP LOOP

MODE: CJNE A,#00H,FH

MOV R4,#01H

MOV A,#0AH

SJMP XSH

FH: MOV R4,#00H

SJMP XSH

CRT0: DJNZ R7,RRR

MOV R7,#1

INC 30H

MOV R0,30H

CJNE R0,#0AH,RRR

MOV 30H,#00H

INC 31H

MOV R0,31H

CJNE R0,#0AH,RRR

MOV 31H,#00H

INC 32H

MOV R0,32H

CJNE R0,#0AH,RRR

MOV 32H,#00H

INC 33H

MOV R0,33H

CJNE R0,#0AH,RRR

MOV 33H,#00H

RRR: MOV TH0,#3CH

MOV TL0,#0B0H

RETI

DIS: MOVC A,@A+DPTR

MOV P0,A

RET

DEL: MOV R6,#20

DEL1: MOV R5,#150

DEL2: DJNZ R5,$

DJNZ R6,DEL1

RET

DTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH

DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH

END

2)最高位为零时,最高位不显示

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP CRT0

ORG 0020H

MAIN: MOV R1,#33H

MOV R2,#04H

CLEAR: MOV @R1,#00H

DEC R1

DJNZ R2,CLEAR

MOV SP,#60H

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H

SETB EA

SETB ET0

SETB TR0

MOV R7,#1

MOV DPTR,#DTAB

LOOP: MOV R1,#33H

MOV R2,#04H

MOV R3,#08H

LOOP1: MOV A,R3

MOV P2,A

RR A

MOV R3,A

MOV A,@R1

LCALL DIS

LCALL DEL

DEC R1

DJNZ R2,LOOP1

AJMP LOOP

CRT0: DJNZ R7, RRR

MOV R7,#1

MOV R0,#30H

MOV R4,04H

CON: INC @R0

CJNE @R0,#0AH,RRR

MOV @R0,#00H

INC R0

DJNZ R4,CON

RRR: MOV TH0,#3CH

MOV TL0,#0B0H

RETI

DIS: MOVC A,@A+DPTR

MOV P0,A

RET

DEL: MOV R6,#20

DEL1: MOV R5,#150

DEL2: DJNZ R5,$

DJNZ R6,DEL1

RET

DTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH

DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH

END

3)最大数为256的计数器

DAT DATA 30H

BW DATA 31H

SHW DATA 32H

GW DATA 33H

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP COUNT

ORG 0030H

MAIN: MOV SP,#60H

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H

SETB EA

SETB ET0

SETB TR0

MOV R7,#2

MOV DAT,#00H

LOOP: LCALL CHANGE

MOV P2,#01H

MOV A,GW

LCALL DIS

LCALL DEL

MOV P2,#02H

MOV A,SHW

LCALL DIS

LCALL DEL

MOV P2,#04H

MOV A,BW

LCALL DIS

LCALL DEL

MOV P2,#08H

MOV A ,#0AH

LCALL DIS

LCALL DEL

AJMP LOOP

COUNT: DJNZ R7,RRR

MOV R7,#2

INC DAT

RRR: MOV TH0,#3CH

MOV TL0,#0B0H

RETI

CHANGE: MOV A,DAT

MOV B,#100

DIV AB

MOV BW,A

MOV A,#10

XCH A,B

DIV AB

MOV SHW,A

MOV GW,B

RET

DIS: MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV P0,A

RET

DEL: MOV R6,#20

DEL1: MOV R5,#150

DEL2: DJNZ R5,$

DJNZ R6,DEL1

RET

TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH

END

74LS4位静态数码显示:

方法一:ORG 0000H

MOV R3,#04H

MOV R0,#20H

START:LCALL DISPLAY

LCALL COUNT

LCALL DELAY

SJMP START

COUNT:INC @R0

CJNE @R0,#0AH,DON

MOV @R0,#00H

SHW: INC R0

INC @R0

CJNE @R0,#0AH,DE1

MOV @R0,#00HBW: INC R0

INC @R0

CJNE @R0,#0AH,DE2

MOV @R0,#00H

QW: INC R0

INC @R0

CJNE @R0,#0AH,DE3

MOV @R0,#00H

DE3: DEC R0

DE2: DEC R0

DE1: DEC R0

DON: RET

DISPLAY:MOV SCON,#00H

LOOP:MOV A,@R0

ADD A,#0FH

MOVC A,@A+PC

MOV SBUF,A

JNB TI,$

CLR TI

INC R0

DJNZ R3,LOOP

MOV R3,#04H

MOV R0,#20H

DON1:RET

DTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DB77H,7CH,39H,5EH,79H,71H,00H,0F3H,76H,80H,40H

DELAY:MOV R7,#50

DELAY1:MOV R6,#100

DELAY2:MOV R5,#20

DJNZ R5,$

DJNZ R6,DELAY2

DJNZ R7,DELAY1

RET

END

方法二:ORG 0000H

AJMP MAIN

ORG 000BH

AJMP COUNT

ORG 0020H

MAIN: MOV R1,#30H

MOV R2,#04H

CLEAR:MOV @R1,#00H

INC R1

DJNZ R2,CLEAR

MOV SP,#60H

MOV TMOD,#01H

MOV TH0,#0B0H

SETB EA

SETB ET0

SETB TR0

MOV R3,#3

MOV DPTR,#DTAB

MOV SCON,#00H

DISPLY:MOV R1,#30H

MOV R2,#04H

LOOP:MOV A,@R1

MOVC A,@A+DPTR

MOV SBUF,A

JNB TI,$

CLR TI

INC R1

DJNZ R2,LOOP

ACALL DEL

SJMP LOOP

COUNT:DJNZ R3,RRR

MOV R3,#3

MOV R0,#30H

MOV R4,#04H

CON:INC @R0

CJNE @R0,#0AH,RRR

MOV @R0,#00H

INC R0

DJNZ R4,CON

RRR:MOV TH0,#3CH

MOV TL0,#0B0H

RETI

DEL:MOV R6,#250

DEL1:MOV R5,#250

DEL2:DJNZ R5,$

DJNZ R6,DEL1

RET

DTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DB77H,7CH,39H,5EH,79H,71H,00H,0F3H,76H,80H,40H

END

动态数码显示:ORG 0000H

ACALL START

START1: MOV @R0,#00H

INC R0

DJNZ R2,START1

ACALL START2

COUNT: CJNE @R0,#0AH,ACALLDIS

MOV @R0,#00H

INC R0

INC @R0

CJNE R0,#34H,COUNT

ACALL START

AJMP START1

ACALLDIS:ACALL DISPLAY

INC @R0

AJMP COUNT

DISPLAY: ACALL START

MOV R4,#01H

DISPLAY1:MOV A,@R0

MOV DPTR,#DTAB

MOVC A,@A+DPTR

MOV P0,A

INC R0

MOV A,R3

MOV P2,A

RL A

MOV R3,A

ACALL DELAY

DJNZ R2,DISPLAY1

ACALL START

DJNZ R4,DISPLAY1

RET

DTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DB77H,7CH,39H,5EH,79H,71H,00H,0F3H,76H,80H,40H

START:MOV R3,#0FEH

START2:MOV R0,#34H

MOV R2,#04H

RET

DELAY:MOV R7,#088H

DEL1:MOV R6,#88H

DEL2:MOV R5,#01H

DEL3:DJNZ R5,DEL3

DJNZ R6,DEL2

DJNZ R7,DEL1

RET

END

独立键盘加减清零数码显示:

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit key1=P3^4;

sbit key2=P3^5;

sbit key3=P3^6;

sbit key4=P3^7;

sbit dula=P2^6;

sbit wela=P2^7;

uchar code table[]=

{0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delayms(uint);

uchar numt0,num;

void display(numdis)

{uchar shi,ge;

shi=numdis/10;

ge=numdis%10;

wela=1;

P0=0xfe;

wela=0;

dula=1;

P0=table[shi];

dula=0;

P0=0xff;

delayms(5);

wela=1;

P0=0xfd;

wela=0;

dula=1;

P0=table[ge];

dula=0;

P0=0xff;

delayms(5);}

void delayms(uint x)

{uint i,j;

for(i=x;i>0;i--)

for(j=110;j>0;j--);}

void init()

{TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;}

void keyscan()

{if(key1==0)

{delayms(10);

if(key1==0)

{num++;

if(num==60)

num=0;

while(!key1);}}

if(key2==0)

{delayms(10);

if(key2==0)

{ if(num==0)

num=60;

num--;

while(!key2); }}

if(key3==0)

{delayms(10);

if(key3==0)

{num=0;

while(!key2);}}

if(key4==0)

{delayms(10);

if(key4==0)

{ while(!key4);

TR0=~TR0;}}}

void main()

{init();

while(1)

{keyscan();

display(num);}}

void T0_time() interrupt 1

{TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

numt0++;

if(numt0==20)

{numt0=0;

num++;

if(num==60)

num=0;}}

矩阵键盘0到F显示:

KEY_DATA DATA 30H

ORG 0000H

MOV KEY_DATA,#10H

AJMP MAIN

ORG 0030H

MAIN:MOV SP,#60H

LOOP:LCALL SCAN

MOV A,KEY_DATA

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV P0,A

LCALL DEL

AJMP LOOP

SCAN:MOV A,#0FH

MOV P1,A

MOV A,P1

CJNE A,#0FH,KEYSCAN

RET

KEYSCAN:LCALL DEL

MOV R2,#7FH

MOV R3,#4

MOV R0,#00H

KEYSM1:MOV A,R2

MOV P1,A

RR A

MOV R2,A

MOV A,P1

ANL A,#0FH

CJNE A,#0FH,JSADD

INC R0

DJNZ R3,KEYSM1

RET

JSADD: JB ACC.0,JSADD1

MOV A,#0

AJMP JSADD4

JSADD1:JB ACC.1,JSADD2

MOV A,#4

AJMP JSADD4

JSADD2:JB ACC.2,JSADD3

MOV A,#8

AJMP JSADD4

JSADD3:JB ACC.3,JSADD4

MOV A,#12

JSADD4:ADD A,R0

MOV KEY_DATA,A

DEL: MOV R6,#50

DEL1: MOV R5,#200

DJNZ R5,$

DJNZ R6,DEL1

RET

TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH

END

相关推荐