实验三、单片机键盘、显示器电路实验
一、实验目的
1.熟悉LED显示原理和接口电路的设计。 2.熟悉键盘接口电路的设计和工作方式。 3.掌握LED显示的编程方法。 二、实验原理
图为LED数码管的引脚图,COM为公共端,有“共阳极”,“共阴极”两种结构形式,DVCC实验箱中的6位LED显示器使用“共阴极”LED管。上端为“数码管控制端”,显示字符的驱动码由此端输入。下端为“数位控制”端,此端接通低电位,数码管才被点亮光。
字符或数字由7段发光管构成,故显示的字符与驱动码具有确定的对应关系。例如显示数字1,需点亮数码管中1、2两段,驱动码为QBH、F9H。 三、LED数码管和键盘的接口电路
下图为DVCC实验箱中6位LED显示器和键盘的接口电路:
1.LED的数码控制:用反向驱动器74LS240驱动,故对于单片机数码管输出为低电平有效(点亮)。反向驱动器74LS240自带锁存器可锁存字符驱动码。字符驱动码由8155芯片的PB口输入。
2.LED的数位控制:通过反向驱动器75452与LED相联,故对于单片机数位驱动为高电平有效。数位信号由8155芯片的PA口输入。
10
四、编程内容
编制软件使显示器作如下方式的显示:
1.“P.”字左、右移位循环显示每次点亮一只LED数码管。
2.以方式1循环显示三次,然后逐步加快位移速度直到6只LED管同时点亮(动态显示),维持一段时间后返回程序起始点。
3.“迪斯科”舞显示:6只LED管同时显示舞蹈动作。
4.从左端开始先由一只数码管跳“跳迪斯科”舞蹈3次,然后跟上第二只数码管共同跳舞蹈3次,依次类推直至6只数码管同时显示,跳舞6次后返回程序起始点。
5.动态交替显示。 显示
上述方式中可任选1~2种,方式1~3为基本要求,方式2、4、5为提高内容。
六、参考程序
11
1.“P.”字左移循环显示程序 1)程序流程
DPTR←数码锁存器地址 输出字符号“P.”的驱动码
2)程序
2010 90 80 2013 74 0C 2015 F0 2016 90 60 2019 78 06 201B 74 01 201D F0 201E 11 50
DPTR←数位锁存器地址 设置移位循环次数8 A ←数位控制码01 输出数位控制码 延时(维持点亮) A中数位控制码左移一位 循环计数器-1并N 判断=0(DJNZ) Y DRG 2010H ;主程序 00 MAIN: MOV DPTR, #8000H ;数码锁存器地址→DPTR MOV A ,#0CH ;P. 驱动码→A
MOVX @DPTR, A ;P. 驱动码→8000H单元 00 MOV DPTR, #6000H ;数码锁存器地址→DPTR L00P2: MOV R0 , #06H ;设左移6次→R0 MOV A ,#01 ;DG0数位控制码01H→A L00P1: MOVX @DPTR, A 01H→6000H单元,DG0
显示“P.”
ACALL DELAY1 ;调延时0.4S子程序
12
2020 23 RL A , ;P.左移一次,即02H→A 2021 D8 FA DJNZ R0 , L00P1 ;R0-1≠0转移 2023 02 20 19 LJMP L00P2 ; END ;
DRG 2050H ;延时子程序1(~0.4S) 2050 7F 08 DELAY1: MOV R7 , #08H ;设外循环8次→R7 2052 7E 80 L00P3: MOV R6 , #80H ;设中循环128次→R6 2054 7D 80 L00P2: MOV R5 , #80H ;设内循环128次→R5 2056 DD FE L00P1: DJNZ R5 , L00P1 ;F[16] -2=FEH 2058 DE FA DJNZ R6 , L00P2 ;F[16] -6=FAH 205A DF F6 DJNZ R7 , L00P3 ;F[16] -10=F6H 205C 22 RET
2.动态交替显示程序 1)程序流程
循环计数器-1并判断=0? 将片内驱动码首地址存入缓冲单元B (B=50H) 将显示驱动码转存片内RAM区(50~5FH) 设置重复显示次数 调用动态显示一遍的子程序 N 显示次数-1并判断=0? Y N Y 指向第二组显示器驱动码首地址(B=56H) 13 2)主程序
DRG 2410H ;主程序
2410 78 50 MAIN: MOV R0, #50H ;设片内RAM首地址为50H
→R0
2412 79 0C MOV R1 ,#0CH ;设显示次数为12次→R1 2414 90 25 00 MOV DPTR, #2500H ;数表首地址 →DPTR 2417 E0 L00P1: MOVX A , @DPTR;“0”驱动码COH→A/“1” 驱动码F9H→A/??? 2148 F6 MOV @R0, A ;A→50H/51H单元/??? 2419 A3 INC DPTR, ;2501H→DPTR 241A 08 INC R0 , ;51H→R0
241B D9 FA DJNZ R0 , L00P1 ;12个显示驱动码存于片内 RAM50H~51H单元 241D 75 F0 50 L00P3: MOV B , #50H;片内RAMSH首地址50H→B 2420 7B FF DSS: MOV R3 , #0FFH;设“显示3s时间”的参数 为FFH→R3
2422 12 24 50 L00P2: LCALL DISPLAY ;调显示子程序显示一遍 2425 DB FB DJNZ R3 , L00P2 ;“0~5”8个符号显示3秒 2427 B8 56 F3 CJNE R0 , #56H , L00P3
242A 75 F0 56 MOV B , #56H ;“A”驱动码地址→B 242D 02 24 20 LJMP DSS ;显示一遍“A~F” END
EQU 2500H ;数表首地址为2500H 2500 C0 F9 A4 TABLE: DB C0H, F9H, A4H ; 2503 B0 99 92 B0H, 99H, 92H ; 2506 88 83 C6 88H, 83H, C6H ; 2559 A1 86 8E A1H,86H, 8EHH;
3)从RAM区取驱动码动态显示一遍的子程序
14