数码闪烁显示器.docx
- 文档编号:5451316
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:22
- 大小:195.49KB
数码闪烁显示器.docx
《数码闪烁显示器.docx》由会员分享,可在线阅读,更多相关《数码闪烁显示器.docx(22页珍藏版)》请在冰豆网上搜索。
数码闪烁显示器
课程
微型计算机原理与接口技术
课程设计名称
数码闪烁显示器
数码闪烁显示器
1.题义分析及解决方案
1.1题义需求分析
1.1.1设计内容
应用接口芯片作为八个七段LED数码管的输出,编写一个程序,使八个LED数码管依次闪烁左移显示从输入口的逻辑开关读入的两位数,闪烁频率为每秒一次。
1.1.2设计分析
根据设计内容的要求可分析得出:
即要求从逻辑开关读入的两位数字,依次左移从八个LED数码管上显示出来,而且显示的时间间隔要求为一秒。
为了减少所用器件的数量,这个电路可以和三个口相连,八个显示器共用同一组段代码输出线,但通过数位选择线,在任何时间内只有一个显示器能够显示其代码。
所以可以选用8255A作为8位数字显示电路和微处理器的接口芯片。
由于8255A的负载能力较小,所以输出口PA经驱动器74LS244同七段LED显示器连接。
另外还需要地址锁存器74LS373,锁存CPU发出的地址信号。
1.2问题的提出及解决方法
1.2.1硬件部分
提出问题
首先是输入和输出问题,输入该选什么?
选键盘还是逻辑开关?
为什么?
其次是输入接口和输出接口的选择。
为什么选择8255A而不选择8279或者其他的芯片。
解答问题
首先输入设备选择的是逻辑开关而没有选择小键盘的原因如下:
表1-1比较1
器件名称
特点
小键盘
键盘(Keyboard)是常用的输入设备,键盘通过一根螺旋形的电缆与主机相联,该电缆有屏蔽,其内芯有电源(+5V)、地线和两根双向信号线,电缆长度约为183cm,键盘内还有一单片微处理器,负责控制整个键盘的工作,故结构相对复杂,一般价格为50多元。
逻辑开关
只有两种状态,开关闭合表示输入0,开关断开表示输入1,4位开关可以置0~15的数。
结构简单,使用方便,价格便宜,高电平:
+5V、低电平:
0V
经过比较得知:
我们选择数字开关电路作为输入设备较方便。
其次本课题选择的输出设备是七段LED显示器,而没有选择LCD,原因如下:
表1-2比较2
LED
与LCD相比,LED在亮度,功耗可视角度和刷新速率等方面更具有优势,其最显著的特点是使用寿命长,光电转换效能高,绿色环保。
LCD
LCD占用空间小,功耗低,低辐射,能降低视觉疲劳,但会出现闪烁现象。
1.2.2软件部分
初始化8255A的端口地址设置初值,8255A是一种通用可编程并行I/O接口芯片,可由程序来改变其功能,通用性强,使用灵活,通过8255A,CPU可直接同外设相连接,是应用最广
的并行I/O接口芯片。
2.硬件设计
2.1.8255芯片:
并行输入/输出接口。
2.1.18255引脚图:
8255是可编程并行接口,内部有3个相互独立的8位数据端口,即A口、B口和C口。
三个端口都可以作为输入端口或输出端口。
A口有三种工作方式:
即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作为联络信号使用。
8255的工作只有当片选CS有效时才能进行。
而控制逻辑端口实现对其他端口的控制。
2.1.2CPU接口(数据总线缓冲器和读/写控制逻辑)
数据总线缓冲器
这是一个8位双向三态缓冲器,三态是由读/写控制逻辑控制的。
这个缓冲器是8255A与CPU数据总线的接口。
所有数据的输入/输出,以及CPU用输出指令向8255A发出的控制字和用输入指令从8255A读入的外设状态信息,都是通过这个缓冲器传递的。
读/写控制逻辑
它与CPU的6根控制线相连,控制8255A内部的各种操作。
控制线RESET用来使8255A复位。
和地址线A1及A0用于芯片选择和通道寻址。
控制线和用来决定8位内部和外部数据总线上信息传送的方向,即控制把CPU的控制命令或输出的数据送到相应的通道,或把状态信息或输入数据送到CPU。
8255A的读/写控制逻辑的作用,是从CPU的地址和控制总线上接受输入的信号,转变成各种命令送到A组或B组控制电路进行相应的操作。
2.1.38255A的引脚信号
与外设相连的
PA7~PA0:
A口数据信号线。
PB7~PB0:
B口数据信号线。
PC7~PC0:
C口数据信号线。
与CPU相连的
RESET:
复位信号。
当此信号来时,所有寄存器都被清除。
同时三个数据端口被自动置为输入端口。
D7~D0:
它们是8255A的数据线和系统总线相连。
CS:
片选信号。
在系统中,一般根据全部接口芯片来分配若于低位地址(比如A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平,于8255A被选中。
只有当有效时,读信号写才对8255进行读写。
RD:
读信号。
当此信号有效时,CPU可从8255A中读取数据。
WR:
写信号。
当此信号有效时,CPU可向8255A中写入数据。
A1、A0:
端口选择信号。
8255A内部有3个数据端口和1个控制端口,共4个端口。
规定当A1、A0:
为00时,选中A端口;为01时,选中B端口;为10时,选中C端口;为11时,选中控制口。
8255的基本操作:
图3-18255的基本操作
2.28255A的技术参数
标识符
最小
最大
测试条件
输入低电平(VIL)
-0.5V
0.8V
输入高电平(VIH)
2.0V
5V
输出低电平(VOL)DB
0.45V
IOL=2.5mA
输出低电平(VOL)PER
0.45V
IOL=1.7mA
输出高电平(VOH)DB
2.4V
IOH=-400μA
输出高电平(VOH)PER
2.4V
IOH=-200μA
驱动电流
-1.0mA
-4.0mA
REXT=750Ω,VEXT=1.5V
供应电流
120mA
IIL(INPUTLOADCURRENT
±10μA
VIN=0V~5V
IOFL(Outputfloatleakage
±10μA
VOUT=0.45~5V
图3-28255A的技术参数
其中PER为peripheralport的缩写,
输入最低电压:
min-0.5V,max0.8V,输入最高电压:
2.0V。
输出最低电压:
0.45V
输出最高电压:
2.4V。
8255A的方式控制字:
图4-18255A的方式控制字
2.2.1方式0的工作特点
这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。
其功能为:
①两个8位通道:
通道A、B。
两个四位通道:
通道C高4位和低四位;
②任何一个通道可以作输入/输出;
③输出是锁存的;
④输入是不锁存的;
⑤在方式0时各个通道的输入/输出可有16种不同的组合。
置位/控制字:
图4-2置位/控制字
2.2.2选择器件LED
LED在本设计中的作用
LED发光二级管(Light-EmittingDiode),在本设计中采用7段数字发光二级管,做为终端显示。
LED功能分析
物理构造:
LED发光二级管,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。
工作原理:
当在发光二极管PN结上加正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现。
数字成像:
将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字。
LED技术参数
发光二极管的压降一般为1.5~2.0V,其工作电流一般取10~20mA为宜。
发光二极管的发光颜色有:
红色光、黄色光、绿色光、红外光等。
发光二极管应用电路有四种,即直流驱动电路、交流驱动电路、脉冲驱动电路、变色发光驱动电路。
LED显示管段选码编码表
表4-1LED显示管段选码编码表
数字
DP
g
f
e
d
c
b
a
二进制编码(字形)
0
0
0
1
1
1
1
1
1
3FH
1
0
0
0
0
0
0
1
1
03H
2
0
1
0
1
1
0
1
1
5BH
3
0
1
0
0
1
1
1
1
4FH
4
0
1
1
0
0
1
1
0
66H
5
0
1
1
0
1
1
0
1
6DH
6
0
1
1
1
1
1
0
1
7DH
7
0
0
0
0
0
1
1
1
07H
8
0
1
1
1
1
1
1
1
7FH
9
0
1
1
0
1
1
1
1
6FH
A
0
1
1
1
0
1
1
1
77H
B
0
1
1
1
1
1
0
0
7CH
C
0
0
1
1
1
0
0
1
69H
D
0
1
0
1
1
1
1
0
5EH
E
0
1
1
1
1
0
0
1
79H
F
0
1
1
1
0
0
0
1
71H
LED数字显示原理:
如下图为LED数码管及其框图
图5-1LED数字显示原理
上面两图分别为外形图和原理图,当七段数码管点亮其中几段可显示数字和简单的西文字符,将七段数码管负极连接到一起称为公共端,而发光二极管的正极则分别由引脚引出,便于控制哪个发光二极管点亮,在右图中如果在COM端接低电平,而在其他引出线上施加不同的电平,则对高电平的发光二极管就会点亮,由于将8个发光二极管负极全部连接在一起,称为共阴极数码管,还有将8个发光二极管的正极连接在一起,故称之为共阳极数码管,
本次实验用的数码管需动态扫描显示,其接口电路将所有数码管的笔画控制段与a~h同名端连在一起,接到一个并行端口,每个公共极COM端由独立的I/O线控制,CPU向字模输出口送出字形码时,所有数码管接收到相同的字形码,究竟哪个数码管显示,取决于每个LED的COM端,所谓动态扫描,就是显示一位信息时,其他位不能显示,必须采用分时方法,轮流控制COM端。
2.374LS373芯片
2.3.1芯片的作用:
此芯片在本设计中的作用主要为增加LED驱动电流
2.3.274LS373内部结构:
图6-174LS373内部结构
2.3.374LS373逻辑图:
图6-274LS373逻辑图
2.4开关
2.4.1开关的作用:
本次设计需要用八位开关置数,故要用到开关,输入0时,开关闭合,输入1时,开关断开。
2.4.2开关功能的分析:
如图所示,开关未合时,与5V电压相连,输入1,当合上之后,开关就将A口接地,也就输入为0,4位开关可以置0~15的数。
2.4.3逻辑开关及其编码
表6-1逻辑开关及其编码
编码
数字
编码
数字
0000
0
1000
8
0001
1
1001
9
0010
2
1010
A
0011
3
1011
B
0100
4
1100
C
0101
5
1101
D
0110
6
1110
E
0111
7
1111
F
图7-18路二进制开关
开关高电平:
+5V、低电平:
0V
2.5硬件总逻辑图及其说明
图7-2硬件总逻辑图及其说明
3.控制程序设计
3.1控制程序设计思路说明
本实验的重点在于利用控制程序通过改变外接开关控制量来控制灯的闪烁量及闪烁次序,8255A设置为方式0,因此关键在于通过8255A将PC口所连接的开关控制写入8255A做初值。
在实验中8255A的PA和PB口都用做输出,PA口用作段选码,提供段驱动器的7段代码信息,PB口用作位选码,提供数位驱动器的选择信号.
本程序的译码不复杂,通过选中8255A的相关端口,于是可得到芯片的相关地址如下:
8255的端口地址:
04b6h
8255A口地址:
04b0h
8255B口地址:
04b2h
8255C口地址:
04b4h
3.2.程序流程图
图9-1流程图
3.3控制程序
START:
MOVAX,@DATA
MOVDS,AX
NOP
CALLInitPCI
CALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址
;******************************************************************
;设置8255的工作方式:
A口、B口均用于输出且都工作于方式0,C口用于输入。
MOVDX,COM_ADD;8255控制端口地址,(DX)=34F3
MOVAL,10001001B;(AL)=89H
OUTDX,AL
;-----------------
MOVSI,OFFSETDATE
;*******************************************************************
;判断PC7:
若PC7=1,则跳出循环,否则循环等待
RESTART:
MOVDX,PC_ADD
INAL,DX
TESTAL,80H
JZRESTART
;*******************************************************************
;判断PC6:
若PC6=1,则跳出循环,否则循环等待;注:
之前要先设置好开关量
RESTART1:
MOVDX,PC_ADD
INAL,DX
TESTAL,40H
JZRESTART1
;*******************************************************************
;输入个位数,并存储在[SI]中
;--------------------------
;通过8255A的C口,将开关量送入AL口
MOVDX,PC_ADD;C口地址,(DX)=34F2
INAL,DX
ANDAL,0FH;屏蔽高四位
MOVBX,OFFSETssegcode
xlat;字节转换指令。
它将BX的内容(代码表格首地址)和
;AL的内容(表格偏移量)相加作为有效地址,并从中
;取出此地址单元中的内容送到AL中
;注:
此时AL中存储的才是要显示的段码
mov[si],al;将个位数的段码存储在[SI]中
MOVAH,0H
;--------------------------
;显示个位数
MOVDX,PA_ADD
OUTDX,AL;通过8255A的A口(用于段选),将AL中存储的段码输出
MOVDX,PB_ADD
MOVAL,0FEH;(AL)=11111110B
OUTDX,AL;通过8255A的B口(用于位选),控制哪个灯显示
;*********************************************************************
;判断PC6:
若PC6=0,则跳出循环,否则循环等待;注:
之前要先设置好开关量
RESTART2:
MOVDX,PC_ADD
INAL,DX
TESTAL,40H
JNZRESTART2
;*********************************************************************
;输入十位数,并存储在[SI+1]中
;--------------------------
;通过8255A的C口,将开关量送入AL口
MOVDX,PC_ADD;C口地址,(DX)=34F2
INAL,DX
ANDAL,0FH;屏蔽高四位
MOVBx,OFFSETssegcode
xlat;字节转换指令。
它将BX的内容(代码表格首地址)和
;AL的内容(表格偏移量)相加作为有效地址,并从中
;取出此地址单元中的内容送到AL中
mov[si+1],al;将十位数的段码存储在[SI+1]中
MOVAH,0H
;--------------------------
CALLdelay
;显示十位数
MOVDX,PA_ADD
OUTDX,AL;通过8255A的A口(用于段选),将AL中存储的段码输出
MOVDX,PB_ADD
MOVAL,0fdH;(AL)=11111101B
OUTDX,AL;通过8255A的B口(用于位选),控制哪个灯显示
;--------------------------
;让显示的十位数逗留片刻,以确认是否输入正确
MOVCX,100H
L5:
MOVDI,CX
;--------------------------
;内循环
MOVCX,6000H
L6:
DECCX
JNZL6
;--------------------------
MOVCX,DI
DECCX
JNZL5
calldelay
;*********************************************************************************
;进入循环显示程序段
;--------------------------
MOVAH,11111110B;;(AH)=11111110B,用于位码选择
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ABF:
MOVBP,4000H
AB:
;#############################################################
;外循环
MOVCX,4
DISP1:
PUSHCX
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;内循环,用于同时显示两位数
;-------------------------
MOVBL,AH;BL=11111110B
ROLAH,1
MOVBH,AH;BH=11111101B
;-------------------------
movch,60H
abc:
moval,[si];AL中存放的是个位数字节码
movdx,pa_add
outdx,al;通过8255A的A口(用于段选),将[SI]中
;存储的个位数段码输出
;-------------------------
MOVAL,BL;AL=11111110B
MOVDX,PB_ADD;通过8255A的B口(用于位选),控制哪个灯显示
OUTDX,AL
;-------------------------
calldelay;延时并刷新
;------------------------------------------
MOVAL,[SI+1];AL中存放的是十位数字节码
MOVDX,PA_ADD
OUTDX,AL;通过8255A的A口(用于段选),将[SI+1]中
;存储的十位数段码输出
;-------------------------
MOVAL,BH;AL=11111101B
MOVDX,PB_ADD;通过8255A的B口(用于位选),控制哪个灯显示
OUTDX,AL
;-------------------------
calldelay
decch
jnzabc
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;左移循环显示
;-------------------
ROLAL,1;循环左移一位,(AL)=11111011(FB)--->
;11101111(EF)--->10111111(BF)--->
;11111110(FE)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;左移间隔时间(有待优化)
MOVCX,20H;100H
L3:
MOVDI,CX
;-------------------------
MOVCX,6000H;6000H
L4:
DECCX
JNZL4
;-------------------------
MOVCX,DI
DECCX
JNZL3
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
POPCX
LOOPDISP1;先CX减1,后判断CX:
若CX≠0,则跳转到DISP1
;#############################################################
;判断PC7:
若PC7=0,则跳出循环,否则继续循环
;MOVDX,PC_ADD
;INAL,DX
;MOVCL,7
;SHRAL,CL
;CMPAL,0
;JNZasd
;JNZasd
;asd:
jmprestart
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DECBP
JNZAB
;----------------------------
JMPABF;LOOPABF改成的左边的形式
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;***********************************************************************************
delayproc
pushcx
pushax
;---------------
;用于延时
movcx,6000h
lop:
looplop
;--------------------
;起屏蔽作用(即刷新)
moval,0ffh;(AL)=11111111B
movdx,PB_ADD;通过8255A的B口(用于位选),控制哪个灯显示
outdx,al
;---------------------
popax
popcx
ret
delayendp
;**********************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数码 闪烁 显示器