完整word版六位LED八段数码管显示.docx
- 文档编号:12368824
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:17
- 大小:398.46KB
完整word版六位LED八段数码管显示.docx
《完整word版六位LED八段数码管显示.docx》由会员分享,可在线阅读,更多相关《完整word版六位LED八段数码管显示.docx(17页珍藏版)》请在冰点文库上搜索。
完整word版六位LED八段数码管显示
八段数码管显示
1.实验目的:
(1)了解数码管动态显示的原理。
⑵了解74LS164扩展端口的方法。
2.实验内容:
利用实验仪提供的显示电路,动态显示一行数据
3.实验线路:
PB0数据输入
PBi时钟输入
说明:
这里只是显示草图,详细原理参见"8155接口实验"
4.实验器材:
(1)QTH200下载式综合实验仪1台
(2)QTH2008仿真器1台
(3)计算机1台
5.实验说明:
(1)本实验仪提供了8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8段码是由8155的PB0PB1经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
r1
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
「°
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
r1
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•程序框图:
示参数
输出位选通信号
董所有位显示
延时
取显示教据
位选適信号移位
I
7.参考程序(SY10.ASM):
OUTBITequ0e101h;位控制口
CLK164equ0e102h;段控制口(接164时钟位)
DAT164equ0e102h;段控制口(接164数据位)INequ0e103h;键盘读入口
LEDBufequ60h;显示缓冲
Numequ70h;显示的数据
DelayTequ75h
org0000h
IjmpStart
LEDMAP:
;八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
Delay:
;延时子程序
movr7,#0
DelayLoop:
djnzr7,DelayLoop
djnzr6,DelayLoopretDisplayLED:
movr0,#LEDBufmovr1,#6;共6个八段管movr2,#00100000b;从左边开始显示Loop:
movdptr,#OUTBITmova,#00hmovx@dptr,a;关所有八段管mova,@r0movB,#8;送164DLP:
rlcamovr3,amovacc.0,cANLA,#0FDHmovdptr,#DAT164movx@dptr,amovdptr,#CLK164orla,#02hmovx@dptr,aanla,#0fDhmovx@dptr,amova,r3djnzB,DLPmovdptr,#OUTBITmova,r2movx@dptr,a;显示一位八段管movr6,#1callDelaymova,r2;显示下一位rramovr2,aincr0djnzr1,Loopmovdptr,#OUTBITmova,#0movx@dptr,a;关所有八段管ret
Start:
movdptr,#0e100hmova,#03hmovx@dptr,amovsp,#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
@DPTR,A
;写入控制字。
A口、B口为输出,
C口为输入
INC
DPTR
;指向8155A口
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位数码管和键盘电路图
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位显示清零,从头开始显
示O
软件设计如下:
以单片机内部RAM的30H〜35H单元作为显示数据缓冲区,六位数码管段码的获
取及每位数码管的显示时间均由显示子程序完成。
采用定时器中断方式实现动态扫描,每隔
50ms扫描一次,每位数码管点亮的时间为1ms。
单片机每接收一次按键信号(即模拟交通
灯改变计数信号),显示缓冲区的待显示数据被刷新一次,数码管相应的显示数值也就随之发生变化。
如连续按键进行测试,即可产生计数数据从左至右循环移动的效果。
根据图中10/、与单片机的连接可知,可以确定命令/状态字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—35H
显示缓冲区
30H:
秒的个位
31H:
秒的十位
32H:
分的个位
33H:
分的十位
34H:
小时的个位
35H:
小时的十位
00H
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:
MOVR0,
#30H
;显示缓冲区首址
MOVR7,
#00H
;设定每位显示延时时间
MOVR2,
#06H
;显示位数
MOVR3,
#20H
;共阳管位码初始值,从右端先亮
MOVA,
@R0
;取显示缓冲区的一个数据
DISP1:
MOVDPTR,#TAB;查表首址给DPTR
MOVC
A,@A+DPTR;查表得到显示字符的字型码
MOV
P0,A
;将字型码送P0口
MOV
DPTR,
#0101H
MOVX
@DPTR,
A;字型码送8155A口
MOV
A,R3
;位选码送A
MOV
P2,A
;位码送P2口
MOV
DPTR,
#0103H
MOVX
@DPTR,
A;位码送8155C口
DJNZ
R7,
$
;延时
DJNZ
R7,
$
;延时
RRA
;
位码右移
MOV
R3,
A;
位码回送R3
INC
R0
;
指向下一位
MOV
A,
@R0;
取显示缓冲区下一个数据
DJNZ
R2,
DISP1
;6位显示一遍吗?
RET
TAB:
DBOCOH,0F9H,0A4H,OBOH,99H,92H,82H,0F8H,80H,90H
主程序流程图:
主程序
;定时器中断子程序:
;功能:
50MS执行一次,完成秒、分、小时单元的刷新并拆开放到显示缓冲区
;出口:
显示缓冲区30H—35H中存放待显示的6个数据
CONT:
PUSH
ACC
MOV
TH0,#3CH
MOV
TL0,#0B0H
DJNZ
MSEC,RN;判断到20次吗?
(暨1秒)到1秒,返回主程序
MOV
MSEC,#14H;1秒到;重置
MSEC=20
INC
SECOND
MOV
A,SECOND
MOV
R1,#31H;指向显示缓冲区的
31H单元
LCALL
BINBCD;调用拆字子程序,
将秒拆开为十位、个位,分别放31H,30H
MOV
A,SECOND
CJNEA,#60,RN;到60秒?
未到返主程序
MOVA,#0
MOVSECOND,A;60秒到,秒单元清零
显示子程序流程图:
c子程序入口
MOVR1,#31H;指向31H单元
LCALLBINBCD;调用拆字子程序
MOVA,MIN
INCA;分单元内容加1
MOVMIN,A
MOVR1,#33H;R1指向33H单元
LCALLBINBCD;调用拆字子程序,将分单元拆开为十位、个位,分别存放
33H和32H单元
MOVA,MIN
RN:
CJNE
A,#60,RN
;到60分吗?
未到返主程序
MOV
A,#00
MOV
MIN,A;
60分到,分单元清零
MOV
R1,#33H;
指向33H单元
LCALL
BINBCD;
调用拆字子程序
MOV
A,HOUR
INC
A;小时单元内容加1
MOV
HOUR,A
MOV
R1,#35H;
R1指向35H单元
LCALL
BINBCD;
调用拆字子程序,将小时拆开为十位
IH单元
MOV
A,HOUR
CJNE
A,#24,RN
;到24小时吗?
未到返回主程序
MOV
A,#00
MOV
HOUR,A
;到24小时,小时单元清零
MOV
R1,#35H
LCALL
BINBCD
POP
ACC
个位,分别存放到
35H和
RETI
定时中断子程序流程图:
;BCD码拆字子程序:
;入口参数:
A,待拆开的BCD码
⑴丄
;R1:
拆开后BCD码存放的末地址
;功能:
将A中的两个十六进制数拆开为哦两个BCD码,分别存放到R1指向的两个缓冲单元
BINBCD:
MOVB,#10
DIV
AB
MOV
@R1,A
DEC
R1
MOV
A,B
MOV
@R1,A
RET
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 版六位 LED 数码管 显示
![提示](https://static.bingdoc.com/images/bang_tan.gif)