数码闪烁显示器Word文档下载推荐.docx
《数码闪烁显示器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数码闪烁显示器Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
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
IOH=-200μA
驱动电流
-1.0mA
-4.0mA
REXT=750Ω,VEXT=1.5V
供应电流
120mA
IIL(INPUTLOADCURRENT
±
10μA
VIN=0V~5V
IOFL(Outputfloatleakage
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
二进制编码(字形)
1
3FH
03H
2
5BH
3
4FH
4
66H
5
6DH
6
7DH
7
07H
8
7FH
9
6FH
A
77H
B
7CH
C
69H
D
5EH
E
79H
F
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
1000
0001
1001
0010
1010
0011
1011
0100
1100
0101
1101
0110
1110
0111
1111
图7-18路二进制开关
开关高电平:
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
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
通过8255A的B口(用于位选),控制哪个灯显示
*********************************************************************
若PC6=0,则跳出循环,否则循环等待;
RESTART2:
JNZRESTART2
输入十位数,并存储在[SI+1]中
INAL,DX
MOVBx,OFFSETssegcode
xlat;
mov[si+1],al;
将十位数的段码存储在[SI+1]中
MOVAH,0H
CALLdelay
显示十位数
通过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;
OUTDX,AL
calldelay;
延时并刷新
------------------------------------------
MOVAL,[SI+1];
AL中存放的是十位数字节码
MOVDX,PA_ADD
通过8255A的A口(用于段选),将[SI+1]中
存储的十位数段码输出
MOVAL,BH;
AL=11111101B
OUTDX,AL
calldelay
decch
jnzabc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
左移循环显示
-------------------
ROLAL,1;
循环左移一位,(AL)=11111011(FB)--->
11101111(EF)--->
10111111(BF)--->
11111110(FE)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
左移间隔时间(有待优化)
MOVCX,20H;
100H
L3:
MOVCX,6000H;
6000H
L4:
JNZL4
JNZL3
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
POPCX
LOOPDISP1;
先CX减1,后判断CX:
若CX≠0,则跳转到DISP1
若PC7=0,则跳出循环,否则继续循环
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;
outdx,al
---------------------
popax
popcx
ret
delayendp
**********************