数码闪烁显示器Word文档下载推荐.docx

上传人:b****3 文档编号:18438819 上传时间:2022-12-16 格式:DOCX 页数:22 大小:195.49KB
下载 相关 举报
数码闪烁显示器Word文档下载推荐.docx_第1页
第1页 / 共22页
数码闪烁显示器Word文档下载推荐.docx_第2页
第2页 / 共22页
数码闪烁显示器Word文档下载推荐.docx_第3页
第3页 / 共22页
数码闪烁显示器Word文档下载推荐.docx_第4页
第4页 / 共22页
数码闪烁显示器Word文档下载推荐.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

数码闪烁显示器Word文档下载推荐.docx

《数码闪烁显示器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数码闪烁显示器Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。

数码闪烁显示器Word文档下载推荐.docx

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

**********************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1