第14-15讲 单片机动态扫描技术(数码动态显示&矩阵键盘&LED点阵显示)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字型 9 A B C D E F 灭
共阳极代码 90H 88H 83H C6 H A1H 86H 84H FFH
共阳极代码 6FH 77H 7CH 39H 5EH 79H 71H 00H
提问:共阳极代码与共阴极代码之间有关系吗?
4
LED动态接口电路
P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7
实验报告中的问题讨论

比较:1、用按钮连接外部中断,实现类似秒表的 程序, 和 2、定时中断显示秒数的程序中 为什么后者的SHOW程序中不用ACALL DELAY? 在使用定时T0中断的程序中,误将TMOD设置为 #10H时,为什么速度很慢?

1
第8章 单片机I/O扩展及应用
第14讲
问题:多个输入(如键盘)、多个输出(如8个 数码管)时,I/0接口不够,怎么办?
思考:将这段程序改作为 动态显示子程序,那么 如何做成一个数字时钟 程序?
8
8-2 矩阵式键盘接口技术
(参考教材P155 第8.3节)
编码键盘: 硬件Байду номын сангаас式产生编码
非编码键盘:软件方式产生编码
非编码键盘:结构简单、成本低廉 键按行列构成矩阵,每一个交叉点对应一个键,实际是一个 机械开关。非编码键盘的接口技术的主要内容是如何确定被 按键的行列位置。
11
扫描读键法(见教材P157图示)



先送1110到P2.3~P2.0,判断P2.7~P2.4的值, 若无低电平,则无按钮按下;若有,则对应按 钮按下; 送1101到P2.3~P2.0, 判断P2.7~P2.4的值; 依此类推,送1011到P2.3~P2.0, 判断 P2.7~P2.4的值;送0111到P2.3~P2.0, 判断 P2.7~P2.4的值;
00010010
11110000 00000000
12H
0F0H 00H
20
LED点阵显示电路设计
21
LED点阵显示电路元件
其中: MATRIX-8x8-GREEN:8x8点阵 74154: 74LS245:

22
8X8点阵: MATRIX-8x8-GREEN
注意方向:0度旋转如左图 上方:行号选择 (引脚低电平有效) 下方:点阵亮暗(高电平为亮) 原理:同矩阵键盘(将按钮换成 LED)的场扫描法 (1)送低电平选中第0行,给该行 送点阵字节; (2)依此类推,到第7行结束一过 程。
11110000 00000000
10H
0F0H 00H
11 00001001
12 00101000 13 00101000
09H
28H 28H
00000000
10000100 10010010
00H
84H 92H
14 01101000
15 00000111 16 00000000
68H
07H 00H
观察与思考:如何将这段程 序改为显示准确的数据?
15
简易计算器


在这个基础上,可以实现简易计算 器的功能 参考:isis中的样例CALC
16
实验


1、8个数码管显示当前的日期(例 如:“10-12-01”) 2、使用keypad-smallcalc实现一个 数码管显示按键的值。
17
8-3 单片机LED点阵显示技术
11110000 00010000
00H
0F0H 10H
5 00011111
6 00010000 7 00011111
1FH
10H 1FH
11110000
00010000 11110000
0F0H
10H 0F0H
8 00010000
9 00011111 10 00000000
10H
1FH 00H
00010000
驱 动 器
89C51
P 2 .5 P 2 .4 P 2 .3 P 2 .2 P 2 .1 P 2 .0
C5
驱 动 器
C4
C3
C2
C1
C0
5
显示缓冲区
在RAM中设置,用于存放要显示的数字或字符。
数码管 内存单元 显示举例
LED0 7FH 2 LED1 7EH 1 LED2 7DH LED3 7CH 2 LED4 7BH 5 LED5 7AH LED6 79H 0 LED7 78H 0
01100000
01000000 11111110
60H
40H 0FEH
5 00110000
6 00110011 7 01010000
30H
33H 50H
00000000
11111000 00000000
00H
0F8H 00H
8 10010011
9 00010000 10 00010011
93H
10H 13H
24
程序框架设计
要求: 1、74154输出代表行号 P1.4 P1.3 P1.2 P1.1 P1.0 第i行 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 2 …… 0 1 1 1 1 15 方法: (R4)从0每次加1,送P1,循环次数R6=16次 2、每一行有两个字节,先是左一字节,再是有一字节,分 别对应P0和P2(查表:TAB中2字节)R0表示指针 3、行之间扫描显示延迟时间:1ms,并置P0、P2为零 4、每个汉字显示50次(循环次数R1=50次) 25
13H
12H 00H
11111000
00001000 00000000
0F8H
08H 00H
19

行号
点阵二进 制 1 00000001
十六进 制 01H
点阵二进制 00000000
十六进 制 00H
2 00000010
3 00011111 4 00010000
02H
1FH 10H
00000000
键码的识别问题
9
按键识别:常用行扫描法
输出口
0 1
0 1
1 1 0
1 1
1 1
1 1
1 1
1 1
输 入 口
1 1 1 1 11 0 1 1
5V
10
按键识别
1)测试有无键按下:检查输入端,是否有端口为低电平 2)去抖动 硬件方法: 软件方法:采用延迟躲过抖动,待信号稳定后,再进行 键扫描。延迟时间10~20ms。 3)确定按键物理位置,计算键码 4)等待键释放 通过时间延迟实现
23
74154 4线-16线译码器
74154译码器的逻辑: D C B A 第i线(低电平) 0 0 0 0 0 0 0 0 1 1 0 0 1 0 2 1 1 1 1 15 条件:E1、E2为低电平时
74LS245 三态OC门(双向)
引脚1:=1,从A到B; =0, 从B到A 引脚19(片选端):=0 选中

程序清单
LN1: LN2: LN3: ORG 0000H MOV 20H,#00H MOV DPTR,#TAB MOV R1,#32H MOV R6,#10H MOV R4,#00H MOV R0,20H MOV A,R4 MOV P1,A INC R4 MOV A,R0 MOVC A,@A+DPTR MOV P0,A INC R0 MOV A,R0 MOVC A,@A+DPTR MOV P2,A INC R0 MOV R3,#02H MOV R5,#0F8H DJNZ R5,$ DJNZ R3,LN5 MOV P0,#0 MOV P2,#0 DJNZ R6,LN4 DJNZ R1,LN3 MOV 20H,R0 CJNE R0,#64,LN2 LJMP LN1 TAB: ; "信" DB 08H,80H,0CH,60H,18H,40H,17H,0FEH,30H,0 0H,33H,0F8H,50H,00H,93H,0F8H DB 10H,00H,13H,0F8H,12H,08H,12H,08H,12H,08 H,13H,0F8H,12H,08H,00H,00H ; "息" DB 01H,00H,02H,00H,1FH,0F0H,10H,10H,1FH,0 F0H,10H,10H,1FH,0F0H,10H,10H DB 1FH,0F0H,00H,00H,09H,00H,28H,84H,28H,9 2H,68H,12H,07H,0F0H,00H,00H END
2
8-1 单片机LED数码管动态显示接口技术 (参考教材P147 第8.1节)
R8
g
f GND a
b
a b
a
c
f
g
b
d e
e
d
c
dp
f
共阴极连接
e
d GND c dp
g dp
3
十六进制数字型代码表
字型 0 1 2 3 4 5 6 7 8
共阳极代码 共阴极代码 C0 H F 9H A 4H B0H 99H 92H 82H F 8H 80H 3FH 06H 5BH 4FH 66H 6DH 7 DH 07H 7FH
假定位控口地址0101(PA口),段控口地址0102(PB口) R0中存放当前位控值。
显示时,每隔一小段时间(小于视觉暂留时间),扫描显示
6
数字时钟
7
程序
START: MOV P0,#0FFH MOV P2,#0FFH MOV 7FH,#02 ;显示21-25-00 MOV 7EH,#01 MOV 7DH,#15H MOV 7CH,#02 MOV 7BH,#05 MOV 7AH,#15H MOV 79H,#00H MOV 78H,#00H ST1: MOV R0,#78H MOV R1,#0FEH MOV R3,#0 ST2: MOV A,@R0 ACALL SEG7 MOV P0,A MOV A,R1 MOV P2,A ACALL DELAY MOV P0,#0FFH INC R3 CJNE R3,#08,ST3 SJMP ST1 ST3: MOV A,R1 RL A MOV R1,A INC R0 SJMP ST2 DELAY: MOV R7,#5 D1: MOV R6,#0 D2: DJNZ R6,D2 DJNZ R7,D1 RET SEG7: INC A MOVC A,@A+PC RET DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H,88H,83H DB 0C6H,0A1H,86H,8EH,0FFH,91H,89H,0 C7H,0C1H,0BFH END
11111000
00000000 11111000
0F8H
00H 0F8H
11 00010010
12 00010010 13 00010010
12H
12H 12H
00001000
00001000 00001000
08H
08H 08H
14 00010011
15 00010010 16 00000000
12
键码编排
00H 08H
01H
09H
02H

06H
07H
0 AH
0EH 16H
0FH
10H 18H
11H
19H
12H 1AH

17H
1FH
1EH
键码计算公式: 键码=行首键号+列号
13
电路:
图中:计算键盘为(keypad-smallcalc)
14
程序:
ORG 0000H START: ACALL DE100 KEY: MOV R3,#0FEH MOV R1,#0 KEY1: MOV A,R3 MOV P2,A MOV A,P2 SWAP A MOV R4,A SETB C MOV R5,#4 KEY2: RRC A JNC KEYIN INC R1 DJNZ R5,KEY2 MOV A,R3 SETB C RLC A MOV R3,A JB ACC.4,KEY1 JMP KEY KEYIN: ACALL DE100 K1: MOV A,P2 XRL A,R4 JZ K1 ACALL KEYV MOV P1,A SJMP KEY KEYV: MOV A,R1 SEG1: MOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,A RET DE100: MOV R7,#200 D1: MOV R6,#255 D2: DJNZ R6,D2 DJNZ R7,D1 RET DE10: MOV R7,#20 D3: MOV R6,#255 D4: DJNZ R6,D4 DJNZ R7,D3 RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H ; 共阳极,012345;6789Ab DB 82H,0F8H,80H,90H,88H,83H DB 0C6H,0A1H,86H,8EH,0FFH,91H,89H,0 C7H,0C1H,8CH,00H ;CdEF yHLUP停 止符 END
(参考教材:P214 第12.4和P270 第15.17)
第15讲
问题和目标:显示汉字
技术:点阵(Dot Matrix)
18

行号
点阵二进 制 1 00001000
十六进 制 08H
点阵二进制 10000000
十六进 制 80H
2 00001100
3 00011000 4 00010111
0CH
18H 17H
相关文档
最新文档