单片机实习总结报告

专业综合实习总结

2010-2011(2)

专业班级: 电子信息工程0801 学生学号: 0414080123 学生姓名: 吴锦

指导教师:张云、包长春、马崇霄、杜殿会 实习时间:

机 电 工 程 学 院

一、实习目的和意义

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、流水灯循环左移右移程序框图:

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

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

2

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,0FF H,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,0C 0H,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

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 ,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

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 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,0F 3H,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,0F 3H,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,0F 3H,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

#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

专业综合实习总结

2010-2011(2)

专业班级: 电子信息工程0801 学生学号: 0414080123 学生姓名: 吴锦

指导教师:张云、包长春、马崇霄、杜殿会 实习时间:

机 电 工 程 学 院

一、实习目的和意义

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、流水灯循环左移右移程序框图:

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

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

2

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,0FF H,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,0C 0H,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

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 ,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

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 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,0F 3H,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,0F 3H,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,0F 3H,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

#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


相关文章

  • 校内,实习报告
  • 校内实习总结报告 一.实习的目的意义 (一) 增强师范技能 (二) 检验和巩固专业知识 (三) 提高综合素质和能力 二. 实习基本情况 (一) 实习时间:2013年3月4号至2013年3月17号 (二) 实习地点:校内 (三) 实习内容:选 ...查看


  • 单片机实习报告
  • 毕业实习报告 实习单位: 实习时间: 3月1日 至 3月21日 学院(系): 电气工程与自动化学院 专 业: 电子信息科学与技术 学生姓名: 学号: 2013 年 3月 26日 目录 报告正文........................ ...查看


  • 自动化专业毕业实习报告
  • 目录 第一章 实习目的及单位简介 ....................................................................................................... ...查看


  • 制造机械类实习报告
  • 西南科技大学毕业实习报告 第1页 前 言 毕业实习是离校前的最后一次实习,也是最有针对毕业设计的一次实习,它不但能是帮助我们顺利完成毕业设计.避免和减少许多不必要的弯路:也能使我们毕业设计更具有实际用途,也减少了我们在设计时的空想及不合理的 ...查看


  • 北京邮电大学实习报告2
  • 北京邮电大学实习报告 学生实习总结 起初,刚进入实验室的时候,实验室的一切对我来说都是陌生的.没有接触过任何焊接的任务,即将在短短的十几天内.实际学习基本的电子工艺,掌握一般的电子工艺技能,了解电子产品的生产流程:掌握电子技术安全常识.元器 ...查看


  • 通信工程专业认识实习总结
  • 计算机与信息工程学院 通信工程专业认识实习总结 学生姓名: 班级:通信02-8班学号:19号 实习指导老师: 成绩: 实习起止日期:2005年7月4日--2005年7月15日 本次认识实习定期为两周.前一周由指导老师组织在学校内进行学习,分 ...查看


  • 实习总结:电子毕业实习总结
  • 转眼间,毕业实习工作已结束,在这一个月中,虽比较辛苦,但是收益颇多.在这份实习总结报告中,我将把这一个月所做的工作及完成工作后的感受如实记录下来. 实习地点:合肥学院电子系 指导教师:高先和 XX-2-28 下午: 在系里统一安排下,我和其 ...查看


  • 电子焊接工艺实习报告
  • 长安大学电子与控制工程学院 电子焊接工艺实习报告 学 专 班 学 姓 院:电子与控制工程学院 业:电气工程及其自动化 级: 号: 名: 2013320401 [1**********]3 张磊 2015 年 6 月 28 日 一. 实习目的 ...查看


  • 单片机原理与应用实验(实习.实训)报告
  • 北京联合大学 实验(实习.实训)报告 课程名称: 单片机原理与应用 专 业: 通信工程 班 级: 通信1404B 学 号:201408033.2014 指导教师: 胡字滢 姓 名: 成 绩: 2016年10月22日 实验一 一.实验设备:计 ...查看


热门内容