第4章附LED显示、键盘 ▲LED显示 键盘与单片机接口
第4章附 LED显示、键盘 ▲ LED显示 ▲ 键盘与单片机接口 键盘与单片机接口
LED显示器 (Light-Emitting Diode g dp 寸 共阳极 共阴极 外形图
▲ LED显示器 (Light-Emitting Diode) Emitting Diode) 共阳极 共阴极 外形图
8段LED字型码(段码) “1”的段码(共阳极):“F9H” f PLO p g PLI P1.7P1.6P1.5P14P1.3P1.2P1.1P1.0 g P1.3 e P1.4 e “5”的段码(共阴极):“6DH” P1.5 g d Pl.6 dp g f d c b a P1.7 中cmP17P6P1.5P14P3P12P1.1P1.0 共阳极段码 0 1234 6789Ab“黑 CoH. F9H A4H. BoH. 99H. 92H. 82H. F8H. 80H. 90H. 88H. 83H. FFH 共阴极段码: 3FH. 06H 5BH. 4FH 66H. 6DH. 7DH. 07H. 7FH. 6FH77H. 7CH. OOH
8段LED字型码(段码) 字型码(段码) “1” 的段码(共阳极):“ F9H ” dp g f e d c b a P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 1 1 1 1 1 0 0 1 “5” 的段码(共阴极): “ 6DH ” dp g f e d c b a P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 0 1 1 0 1 1 0 1 5V 89c51 a P1.0 P1.1 P1.2 P1.5 P1.3 P1.4 P1.6 P1.7 com dp g f dp g f e d c b a b c d e 共阳极段码: 0 1 2 3 4 5 6 7 8 9 A b “黑” C0H, F9H, A4H, B0H, 99H, 92H, 82H, F8H, 80H, 90H, 88H, 83H, FFH 共阴极段码: 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH, 77H, 7CH, 00H
单片机LED显示原理图 k 89c5 DS? P10/T P0039 P11/T P01 P12 P02 key 3 P14 P04 P15 P05 P16 33 P17 RESET led 1 200 P20 INTO P21 INTI P22 15T1 P25 P27 30p 17(R ALEP X1 PSEN
单片机LED显示原理图
显示红黄绿灯程序 RED EQU P2.0 YELLOW EQU P2.4 DELAY:MoⅤR7,#10 GREEN EQU P2.7 DELO: MOV R6.#200 红灯亮 DELI: MOV R5 #250 ORG 0000H DEL2: DJNZ R5. DEL2 延时1秒 MAIN: CLR RED DNZ R6. DELI SETB YELLOW DNZ R. DELO SETB GREEN RET 黄灯亮 ACALL DELAY END SETB RED 延时1秒 CLR YELLOW SETB GREEN 绿灯亮 ACALL DELAY SETB RED SETB YELLOW 延时1秒 CLR GREEN ACALL DELAY AJMP MAIN
显示红黄绿灯程序 显示红黄绿灯程序 RED EQU P2.0 YELLOW EQU P2.4 GREEN EQU P2.7 ORG 0000H MAIN: CLR RED SETB YELLOW SETB GREEN ACALL DELAY SETB RED CLR YELLOW SETB GREEN ACALL DELAY SETB RED SETB YELLOW CLR GREEN ACALL DELAY AJMP MAIN DELAY: MOV R7, #10 DEL0: MOV R6, #200 DEL1: MOV R5, #250 DEL2: DJNZ R5, DEL2 DJNZ R6, DEL1 DJNZ R7, DEL0 RET END 红灯亮 延时 1 秒 黄灯亮 延时 1 秒 绿灯亮 延时 1 秒
显示0~9程序延时方案) ORG 000OH 初始化 MAIN MOV RO.#0 ;存要显示的数 R0=0;显示内容 MOVR4,#10;存循环次数 R4=10;循环次数初值 LOOP: MOV A. RO MOV DPTR,#AB;段码表首地址 MOVC A,aA+DPTR;查表 查表、显示 MOV PO. A ;段码送P0,显示数字 ACALL DELAY ;延时1秒 延时1秒 INC RO ;显示数加1 DNZ R4,LOOP;循环次数减1 AJMP MAIN 显示内容 DELAY: MOV R7.#10 Ro=RO+1 DELO: MOV R6.#200 DELI: MOV R5 #250 DEL2: DNZ R5. DEL2 循环次数N DNZ R6. DELI R4-1=0? DNZ R. DELO RET ORG 0100H ;段码表首地址 TAB: DB 3Fh06h5Bh 4Fh 66h R0=0,R4 END
显示0~9程序(延时方案) ORG 0000H MAIN : MOV R0, #0 ;存要显示的数 MOV R4, #10 ;存循环次数 LOOP: MOV A, R0 MOV DPTR, #TAB ;段码表首地址 MOVC A, @A+DPTR ; 查表 MOV P0, A ;段码送P0,显示数字 ACALL DELAY ;延时1秒 INC R0 ;显示数加1 DJNZ R4, LOOP ;循环次数减1 AJMP MAIN DELAY: MOV R7, #10 DEL0: MOV R6, #200 DEL1: MOV R5, #250 DEL2: DJNZ R5, DEL2 DJNZ R6, DEL1 DJNZ R7, DEL0 RET ORG 0100H ;段码表首地址 TAB: DB 3Fh,06h,5Bh,4Fh,66h … END 查表、显示 延时 1 秒 循环次数 R4-1=0? 显示内容 R0=R0+1 Y N R0=0,R4=10 初始化 R0=0;显示内容 R4=10;循环次数初值
▲键盘与单片机接口 键盘处理程序任务 1)键输入 检査键盘是否有键被按下,消除按键 0 抖动。确定被按键的键号,获取键号。 抖动时间 100ms 键号为键盘位置码,根据键号查表得 出被按键的键值。如:数字键0~9、字 符键0AH~0FH、功能键10H~。 3)键处理 & 根据键值转移到不同程序段。 若键值属于数字、字符键,则调用 显示数字和字符的子程序。 单片机 & 若键值属于功能键,则进行多分支 转移,执行各个功能程序段。 消除抖动电路
▲ 键盘与单片机接口 键盘与单片机接口 键盘处理程序任务 1)键输入 检查键盘是否有键被按下,消除按键 抖动。确定被按键的键号, 获取键号。 硬件电路消除抖动或软件消除抖动。 2)键译码 键号为键盘位置码,根据键号查表得 出被按键的键值。如:数字键0~9、字 符键0AH~0FH、功能键10H~ 。 3)键处理 根据键值转移到不同程序段。 若键值属于数字、字符键,则调用 显示数字和字符的子程序。 若键值属于功能键,则进行多分支 转移,执行各个功能程序段。 抖动时间 <10ms 开关动作时间 >100ms “ 1 ” “ 0 ” <10ms +5v & & +5v 消除抖动电路 开关 单片机
独立式键盘电路(1) 10k3 KEY: MOV Pl #OFFH MOV A PI P10 CUNE A,#0FFH,KEY1;有键按下 SJMP KEY ;无键按下 KEY1: ACALL DELAY;延时,防止抖动 P12 MOV PI.#OFFH MOV A, PI CUNE A,#FFH,PKEY;有键按下 SJMP KEY 无键按下 <有按键信号? PKEY: JNB ACC 0, PKEYO JNB ACC. 1. PKEY1 延时等待10ms JNB ACC. 7. PKEY7 <仍有按键信号? SMP KEY PKEYO 匚键盘处理 PKEYI
8031 5V P1.0 P1.1 P1.2 10kx3 独立式键盘电路 独立式键盘电路(1) KEY: MOV P1, #0FFH MOV A, P1 CJNE A, #0FFH, KEY1;有键按下 SJMP KEY ;无键按下 KEY1: ACALL DELAY ;延时,防止抖动 MOV P1, #0FFH MOV A, P1 CJNE A, #0FFH, PKEY;有键按下 SJMP KEY ;无键按下 PKEY:JNB ACC.0, PKEY0 JNB ACC.1, PKEY1 … JNB ACC.7, PKEY7 SJMP KEY PKEY0: …… PKEY1: …… 延时等待10ms 仍有按键信号? Y 有按键信号? N Y N 键盘处理
独立式键盘电路(2) 8031 KEYO: SETB P1.0 JBP1.0,KEY1;有键按下P10=0 P3.1 ACALL DELAY;延时,防止抖动 P22 SETB P1.O JB PLO. KEYO ACALL Pkey0;转键处理程序 KEYI: sETB P3. JBP3L,KEY2有键按下30N ACALL DELAY;延时,防止抖动 Y SETB P3. 延时等待10ms JB P3. 1. KEYI acaLl Pkey1;转键处理程序 仍有按键信号? KEY2 键盘处理
独立式键盘电路 独立式键盘电路(2) 延时等待10ms 仍有按键信号? Y 有按键信号? N Y N 键盘处理 KEY0: SETB P1.0 JB P1.0, KEY1 ;有键按下P1.0=0 ACALL DELAY ;延时,防止抖动 SETB P1.0 JB P1.0, KEY0 ACALL Pkey0 ;转键处理程序 KEY1: SETB P3.1 JB P3.1, KEY2 ;有键按下P3.1=0 ACALL DELAY ;延时,防止抖动 SETB P3.1 JB P3.1, KEY1 ACALL Pkey1 ;转键处理程序 KEY2: …… 8031 P1.0 P3.1 P2.2
矩阵式键盘 89c51 P1.0 P1.1 048 P1.2 14 P1.3 100 P14 100 P1.5 100 P16 100 P1.7 1.扫描法 2反转法 列线输出,行线输入。 列线输出低电平,读行线; 列线逐行输出0,某行有按键,行线输出低电平,读列线 行线输入有0,若无按键,行线输两步合成,获键号。 入全部为1(先置行线为1)
矩阵式键盘 1.扫描法 列线输出,行线输入。 列线逐行输出0,某行有按键, 行线输入有0,若无按键,行线输 入全部为1(先置行线为1)。 100 100 100 100 P1.0 P1.1 P1.2 P1.5 P1.3 P1.4 P1.6 P1.7 89c51 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2.反转法 列线输出低电平,读行线; 行线输出低电平,读列线; 两步合成,获键号