单单单单单单单 点点点点点点点点点 点点点点 1.5
Jan 03, 2016
单片机基本训练
点阵显示电子广告牌
学习情境 1.5
单片机基本训练
单色条屏 双色室内屏 全彩室外屏
单片机基本训练
做什么?
基本任务:利用单片机制作一个 8×8点阵的电子广告牌,显示出字符“大”。
单片机基本训练
跟我做 1------- 认识 8×8 点阵屏的原理
单片机基本训练
高电平1
低电平0
单片机基本训练
跟我做 2------- 连接单片机和点阵屏
用 P0口控制点阵的列
用P1
口控制点阵的行
X0
P0.0
Y7P1.7
Y0P1.0
X7
P0.7
单片机基本训练
P1 .01
P1 .12
P1 .23
P1 .34
P1 .45
P1 .56
P1 .67
P1 .78
INT113
INT012
T115
T014
RD17
EA31
WR16
X119
X218
RESET9
P0 .039
P0 .138
P0 .237
P0 .336
P0 .435
P0 .534
P0 .633
P0 .732
P2 .021
P2 .122
P2 .223
P2 .324
P2 .425
P2 .526
P2 .627
P2 .728
RXD10
TXD11
ALE/P30
PSEN29
U1
AT89 C5 1
C1
30 Pf
C2
30 Pf
Y112 M
X1
X2
X1X2
k1
SW -PB
R3
10 K
+
C3
22 uF
D4
IN4 148
+5 V
+5 V
P1 .1P1 .2P1 .3P1 .4P1 .5P1 .6P1 .7
RESET
P1 .0
0 D F 3 A 1 G H
2 5 E 7 C B 6 4
8* 8LED
300×8
A02
A13
A24
A35
A46
A57
A68
A79
B018
B117
B216
B315
B414
B513
B612
B711
E19
DIR1
U2
74 LS2 45
P1 .1P1 .2P1 .3P1 .4P1 .5P1 .6P1 .7
P1 .0 ROW0
ROW1
ROW2
ROW3
ROW4
ROW5
ROW6
ROW7
COL0
COL1
COL2
COL3
COL4
COL5
COL6
COL7
RO
W0
RO
W1
RO
W2
RO
W3
RO
W4
RO
W5
RO
W6
RO
W7
CO
L0C
OL1
CO
L2
CO
L3C
OL4
CO
L5
CO
L6C
OL7
VCC
晶振电路
复位电路
点阵接口电路
单片机基本训练
跟我做 3------- 准备器件、焊板
元件名称 参数 数量 元件名称 参数 数量插座 DIP40 、 DIP14 2 电源 直流 +5V 1
单片机 89C51 1 电阻 300Ω 8
晶体振荡器 6M或 12M 1 电阻 10KΩ 1
瓷片电容 20pf 2 电解电容 22µf 1
8×8LED — 1 芯片 74LS245 1
单片机基本训练
单片机基本训练
跟我做 4------- 用实验板来连接线路
A01 A06
连接 1 +5V/GND +5V/GND
连接 2 P1.0-P1.7 ROW1-ROW8
连接 3 P0.0-P0.7 COL1-COL8
单片机基本训练
P0 口
P1 口
MOV P1,#00000001BMOV P0,#00011000B
ACALLDELAY_1ms
ACALLDELAY_1ms
跟我做 5------- 编写控制程序
SJMP $
MOV P1,#00000010BMOV P0,#00111100B
L1
L1:
反相器
在实验板中,为了方便我们在 P0口加入了反相器,你能说出现在行和列分别是什么
电平点亮吗?
单片机基本训练
点亮全屏的原理图
单片机基本训练
设置初始值
选中 LED 的一行( ROW )
送该行的字型码 (DOT)
延时
ROW 左移指向下一行
DOT 加 1指向下一行的字型码
8行显示完?
MOV DPTR,#TABMOV R7,#08HMOV ROW,#01HMOV DOT,#00H
MOV A,ROWMOV P1,A
MOV A,DOTMOVCA,@A+DPTRMOV P0,A
LCALLDELAY_1ms
MOV A,ROWRL AMOV ROW,A
INC DOT
DJNZR7,NEXT_COLLJMP MAINY
主程序流程图
MAIN
“大”字的字型码是多少呢?
ROW EQU 30HDOT EQU 31H
单片机基本训练
每一行的数据都没有规律,需要采用查表程序。
00001000B ,即 08H00001000B ,即 08H01111111B ,即 7FH00001000B ,即 08H00010100B ,即 14H00100010B ,即 22H01000001B ,即 41H
00000000B ,即 00H
单片机基本训练
ROW EQU 30H DOT EQU 31H ORG 0000H
AJMP ONE_DISP ORG 0030H
ONE_DISP: MOV DPTR,#TAB ;定义字型码表首地址START: MOV ROW,#01H ;送显示行初值
MOV DOT,#00H ;送查表地址修正初值 MOV R7,#08H ;设置扫描显示行数
NEXT_COL: MOVA,ROW ;显示行选择值送 A MOV P1, A ;选中某一显示行 RL A ;修改显示行选择值 MOV ROW,A ;更新行选单元内容,为选下一行作准备 MOV A,DOT ;查表地址修正值送 A MOVC A,@A+DPTR ;查表得行显示字型码 MOV P0,A ;显示字型码送 P0 口 LCALL DELAY_1ms INC DOT ;查表地址修正值加 1 ,为取下一个字型码作准备 DJNZ R7, NEXT_COL ;判断 8 行显示是否全部结束 SJMP START ;重复显示过程
TAB: DB 08H,08H,7FH,08H,14H,22H,41H,00H “ ” ; 大 字字型码表DELAY_1ms:…… RET END
单片机基本训练
进阶任务 1:
多字符轮流显示:0,1,2,3……
单片机基本训练
显示多个字符的流程图
设置初始值
选中 LED 的一行( ROW )
送该行点阵码 (DOT)
延时
ROW 左移指向下一行
DOT 加 1指向下一行的点阵码
8 行显示完?N
Y延时(长)
指向下一个字符的表格首地址
所有字符显示完?
ONE-CHAR
N
设置显示字符个数
设表格首地址
MAIN
Y
为什么? MOV A,DPLADD A,#8MOV DPL,AMOV A,DPHADDC A,#0MOV DPH,A
MOV DPTR,#TAB
单片机基本训练
进阶任务 2:
将字符“大”从右往左滚动显示。