完整word版六位LED八段数码管显示doc.docx
《完整word版六位LED八段数码管显示doc.docx》由会员分享,可在线阅读,更多相关《完整word版六位LED八段数码管显示doc.docx(25页珍藏版)》请在冰豆网上搜索。
![完整word版六位LED八段数码管显示doc.docx](https://file1.bdocx.com/fileroot1/2023-1/11/7e0a2f52-9af3-446a-8705-d4bba637051b/7e0a2f52-9af3-446a-8705-d4bba637051b1.gif)
完整word版六位LED八段数码管显示doc
八段数码管显示
1.实验目的:
(1)了解数码管动态显示的原理。
(2)了解74LS164扩展端口的方法。
2.实验内容:
利用实验仪提供的显示电路,动态显示一行数据。
3.实验线路:
PB0数据输入
PB1时钟输入
说明:
这里只是显示草图,详细原理参见"8155接口实验"
4.实验器材:
(1)QTH2008下载式综合实验仪1台
(2)QTH2008仿真器1台
(3)计算机1台
5.实验说明:
(1)本实验仪提供了8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8段码是由8155
的PB0、PB1经74LS164“串转并”后输出得到。
6位位码由8155(或8255)的PA0-5
口输出,经uA2003反向驱动后,选择相应显示位。
74LS164是串行输入并行输出转换电路,串行输入的数据位由8155
的PB0
控制,时钟位由8155
的PB1控制输出。
写程序时,只要向数据位地址输出数据,
然后向时钟位地址输出一高一低两个电平就可以将数据位置到
74LS164中,并且
实现移位。
向显示位选通地址输出高电平就可以点亮相应的显示位。
本实验仪中数据位输出地址为0e102H,时钟位输出地址为0e102H,位选通输
出地址为0e101H。
本实验涉及到了8155I0/RAM
扩展芯片的工作原理以及
74LS164器件的工作原理。
(2)七段数码管的字型代码表如下表:
显示字
g
f
e
d
c
b
a
段码
形
0
0
1
1
1
1
1
1
3fh
1
0
0
0
0
1
1
0
06h
2
1
0
1
1
0
1
1
5bh
3
1
0
0
1
1
1
1
4fh
4
1
1
0
0
1
1
0
66h
5
1
1
0
1
1
0
1
6dh
6
1
1
1
1
1
0
1
7dh
7
0
0
0
0
1
1
1
07h
8
1
1
1
1
1
1
1
7fh
9
1
1
0
1
1
1
1
6fh
A
1
1
1
0
1
1
1
77h
b
1
1
1
1
1
0
0
7ch
C
0
1
1
1
0
0
1
39h
d
1
0
1
1
1
1
0
5eh
E
1
1
1
1
0
0
1
79h
F
1
1
1
0
0
0
1
71h
6.程序框图:
7.参考程序(SY10.ASM):
OUTBITequ0e101h;位控制口
CLK164equ0e102h;段控制口(接164时钟位)DAT164equ0e102h;段控制口(接164数据位)
INequ0e103h;键盘读入口
LEDBufequ60h;显示缓冲
Numequ70h;显示的数据
DelayTequ75h
org0000h
ljmpStart
LEDMAP:
;八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
Delay:
;延时子程序
movr7,#0
DelayLoop:
djnzr7,DelayLoop
djnzr6,DelayLoop
ret
DisplayLED:
movr0,#LEDBuf
movr1,#6;共6
个八段管
movr2,#00100000b;从左边开始显示
Loop:
movdptr,#OUTBIT
mova,#00h
movx@dptr,a;关所有八段管
mova,@r0
movB,#8;送164
DLP:
rlca
movr3,a
movacc.0,c
ANLA,#0FDH
movdptr,#DAT164
movx@dptr,a
movdptr,#CLK164
orla,#02h
movx@dptr,a
anla,#0fDh
movx@dptr,a
mova,r3
djnzB,DLP
movdptr,#OUTBIT
mova,r2
movx@dptr,a;显示一位八段管
movr6,#1
callDelay
mova,r2;显示下一位
rra
movr2,a
incr0
djnzr1,Loop
movdptr,#OUTBIT
mova,#0
movx@dptr,a;关所有八段管
ret
Start:
movdptr,#0e100h
mova,#03h
movx@dptr,a
movsp,#40h
movNum,#0
MLoop:
incNum
mova,Num
movb,a
movr0,#LEDBuf
FillBuf:
mova,b
anla,#0fh
movdptr,#LEDMap
movca,@a+dptr;数字转换成显示码
mov@r0,a;显示在码填入显示缓冲
incr0
incb
cjner0,#LEDBuf+6,FillBuf
movDelayT,#30
DispAgain:
callDisplayLED;显示
djnzDelayT,DispAgain
ljmpMLoop
END
八位数码管显示:
8155控制
参考程序2:
对8155初始化,使I/O口控制LED的显示情况。
ORG
0000H
MOV
DPTR,#4400H
;指向
8155命令寄存器
MOV
A,#03H
MOVX
INC
@DPTR,ADPTR
;写入控制字。
A口、B口为输出,
;指向8155A口
C口为输入
MOV
A,#00H
MOVX
@DPTR,A
;向A口写入00H,
;输出选中所有8个
LED
INC
DPTR
;指向
8155B
口
MOV
A,#0FFH
MOVX
@DPTR,A
;向
B口写入某个字型
码,输出点亮
8
个
LED
SJMP$
8155控制8位数码管和键盘电路图
1
P1.0
P0.0
39
2
P1.1
P0.
38
3
1
37
4
P1.2
P0.2
36
P1.3
P0.3
5
P1.4
P0.4
35
6
P1.5
P0.5
34
7
P1.6
P0.6
33
8
32
13
P1.7
P0.7
21
INT1
P2.0
12
INT0
8031
P2.1
22
15
P2.2
23
T1
P2.3
24
14
25
T0
P2.4
P2.5
26
31
27
EA/VP
P2.6
28
19
X1
P2.7
18
X2
9
RESET
RXD
10
17
TXD
11
RD
30
16
ALE/P
29
WR
PSEN
WR
12
AD0
PA0
21
13
22
AD1
PA1
14
23
AD2
PA2
15
24
AD3
PA3
16
25
AD4
PA4
17
AD5
PA5
26
18
AD6
PA6
27
19
AD7
PA7
28
PB0
29
8
30
CE
PB1
9
8155
31
RD
PB2
10
WR
PB3
32
接8031P227
33
IO/M
PB4
11
34
ALE
PB5
接8031ALE
PB6
35
6
TMROUT
PB7
36
37
PC0
38
3
PC1
TMRIN
PC2
39
1
PC3
4
RESET
PC4
2
PC5
5
接8031RESET
3
D0
Q0
2
11
D0
A0
10
4
5
12
9
D1
Q1
D1
A1
7
D2
Q2
6
13
D2
A2
8
8
3
9
15
7
D3
Q3
D3
A3
13
D4
7
Q4
12
16
D4
A4
6
14
3
15
17
5
D5
S
Q5
D5
A5
17
L
16
18
4
D6
4
Q6
D6
A6
18
D7
7
Q7
19
19
D7
A7
3
1
A8
25
OE
A9
24
11
21
LE
P20
A10
23
P21
6264
A11
2
P22
A12
P23
OE
22
接8031RD
P24
WE
27
接8031WR
CS2
26
CS1
20
P251
A
Y0
15
VCC
P262
8
14
P273
B
Y1
13
C
3
Y2
12
1
Y3
S
11
4
L
Y4
4
Y5
10
5
E17
9
E2
Y6
6
E3
Y7
7
VCC
8
×
0
0
2
p
gf
edcba
d
0
1
2
3
4
5
6
7
PC0
0
1
2
3
5.1k×4
PC14
5
6
7
PC2
8
9
10
11
12
13
14
15
PC3
PA0~PA7
VCC
2)多位动态显示接口应用采用8051与8155接口,再采用8155的I/O口控制数码管的段码
和位码,同时,采用动态扫描方式依次循环点亮各位数码管,即可构成多位动态数码管显示
电路。
整体设计思路如下:
由8155的A口控制段码输出,C口控制位码输出。
采用定时器中断方式实现动态扫描,
每隔20ms扫描一次,每位数码管点亮的时间为1ms。
在单片机内部RAM设置待显示数据
缓冲区,由查表程序完成显示译码。
将缓冲区内待显示数据转换成相应的段码,再将段码通过8051的P0口送至8155的A
口;位码数据由累加器循环左移指令产生,再通过P0口送至8155的C口。
硬件电路设计如下:
上图为数码管动态显示电路。
其中,8路驱动采用74LS244总线驱动器,6路驱动采用
74LS07OC门驱动器。
74LS244输出经300上拉(或限流)电阻后接至电源,同时,接至
数码管的各段,控制数码管的显示字符。
74LS07输出经1k上拉电阻接至电源,同时接至各位数码管的公共端,控制每位数码管的显示时间,实现动态扫描。
模拟生产线计数的按键信号接至P3.3口。
六位实现6位显示的秒表:
从左到右每2位LED分别显示小时、分和秒,
并正常计数进位;上电后小时000000,当显示到235959后,6位显示清零,从头开始显
示。
300
×8
1
P1.0
P0.0
39
12
AD0
PA0
21
2
1A1
1Y1
18
2
38
13
22
4
16
P1.1
P0.1
AD1
PA1
1A2
1Y2
3
37
14
23
6
14
P1.2
P0.2
AD2
PA2
1A3
1Y3
4
36
15
24
8
12
P1.3
P0.3
AD3
PA3
1A4
1Y4
5
35
16
25
P1.4
P0.4
AD4
PA4
9
6
34
17
26
11
P1.5
P0.5
AD5
PA5
2A1
2Y1
7
33
18
27
13
7
P1.6
P0.6
AD6
PA6
2A2
2Y2
8
32
19
28
15
5
P1.7
P0.7
AD7
PA7
2A3
2Y3
+5V
1k
PB
17
2A4
2Y4
3
13
INT1
P2.0
21
29
PB
12
INT0
P2.1
22
8
CE
0
30
1
1G
74LS244
PB
T
8031
P2.2
23
9
RD
8155
1
31
19
2G
W
PB
15
T
P2.3
24
10
2
32
R
PB
14
1
P2.4
25
7
3
33
0
IO/M
PB
P2.5
26
11
ALE
4
34
31
PB
1k
×6
EA/VP
P2.6
27
5
35
PB
P2.7
28
TMROU
6
36
1
1A
1Y
2
19
X1
6
7
3
4
2A
2Y
18
X2
T
PC
37
5
6
PC
3A
3Y
RESE
TMRI
0
38
9
4A
4Y
8
9
PC
RXD
10
3
1
39
11
5A
5Y
10
T
N
PC
TXD
11
2
1
13
6A
6Y
12
17
RD
ALE/P
30
PC
2
RESE
3
74LS07
16
W
PSEN
29
4
PC
5
R
T
4
5
+5V
1
a
DPY
1
a
DPY
1
a
DPY
1
a
DPY
1
a
DPY
1
a
DPY
2
b
a
2
b
a
2
b
a
2
b
a
2
b
a
2
b
a
3
cf
g
b
3
cf
g
b
3
cf
g
b
3
cf
g
b
3
cf
g
b
3
cf
g
b
4
d
4
d
4
d
4
d
4
d
4
d
5
ee
d
c
5
ee
d
c
5
ee
d
c
5
ee
d
c
5
ee
d
c
5
ee
d
c
6
f
6
f
6
f
6
f
6
f
6
f
7
g
dp
7
g
dp
7
g
dp
7
g
dp
7
g
dp
7
g
dp
8
dp
8
dp
8
dp
8
dp
8
dp
8
dp
软件设计如下:
以单片机内部RAM的30H~35H单元作为显示数据缓冲区,六位数码管段码的获
取及每位数码管的显示时间均由显示子程序完成。
采用定时器中断方式实现动态扫描,每隔
50ms扫描一次,每位数码管点亮的时间为1ms。
单片机每接收一次按键信号(即模拟交通灯改变计数信号),显示缓冲区的待显示数据被刷新一次,数码管相应的显示数值也就随之发生变化。
如连续按键进行测试,即可产生计数数据从左至右循环移动的效果。
根据图中
IO/、与单片机的连接可知,可以确定命令/状态字A口、B口、C口、计数值低8位寄存器及高6位和方式寄存器地址分别为:
0100H、0101H、0102H、0103H、0104H、0105H。
片内资源分配如下表:
名称
地址分配
用途
初始化值
MSEC
20H
定时器50MS计数单元
14H
SECOND
21H
秒计数单元
00H
MIN
22H
分计数单元
00H
HOUR
23H
小时计数单元
00H
显示缓冲区
30H:
秒的个位
31H:
秒的十位
30H—35H
32H:
分的个位
00H
33H:
分的十位
34H:
小时的个位
35H:
小时的十位
40H以上
堆栈区
软件流程图如下页图所示:
主程序:
MSEC
EQU
20H
;50MS计数单元
SECONDEQU
21H
;秒单元
MIN
EQU
22H
;分单元
HOUR
EQU
23H
;小时单元
ORG
0000H
LJMP
MAIN
ORG
000BH
LJMP
CONT
MAIN:
MOV
SP,#3FH
MOV
TMOD
#01H
MOV
TH0,#3CH
MOV
TL0,#0B0H
MOV
IE,#82H
MOV
SECOND,
#00H
MOV
MIN,
#00H
MOV
HOUR,
#00H
MOV
MSEC,
#14H
MOV
35H,
#00H
MOV
34H,
#00H
MOV
33H,
#00H
MOV
32H,
#00H
MOV
31H,
#00H
MOV
30H,
#00H
SETB
TR0
START:
LCALL
DISP
SJMP
START
;LED动态显示子程序
;功能:
动态显示六个数码管
;入口:
显示缓冲区30H—35H中待显示的6个数据
DISP:
MOV
R0,#30H
;显示缓冲区首址
MOV
R7,#00H
;设定每位显示延时时间
MOV
R2,#06H
;显示位数
MOV
R3,#20H
;共阳管位码初始值,从右端先亮
MOV
A,@R0
;取显示缓冲区的一个数据
DISP1:
MOV
DPTR,#TAB
;查表首址给
DPTR
MOVC
A,@A+DPTR
;查表得到显示字符的字型码
MOV
P0,A
;将字型码送
P0口
MOV
DPTR,
#0101H