LED点阵设计报告文档格式.docx
《LED点阵设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《LED点阵设计报告文档格式.docx(68页珍藏版)》请在冰豆网上搜索。
”,“再见”(延时10秒);
(4)、具备本地及远程(串行方式)功能。
三、设计目的的意义
在大型商场、车站、码头、地铁站以及各类办事窗口等以及越来越多的公共场所需要用LED点阵显示图形和汉字。
LED行业已成为一个快速发展的新兴产业,市场空间巨大,前景广阔。
随着信息产业的高速发展,LED显示作为信息传播的一种重要手段,已广泛应用于室内外需要进行服务内容和服务宗旨宣传的公众场所,例如户内外公共场所广告宣传、机场车站旅客引导信息、公交车辆报站系统、证券与银行信息显示、餐馆报价信息豆示、高速公路可变情报板、体育场馆比赛转播、楼宇灯饰、交通信号灯、景观照明等。
显然,LED显示已成为城市亮化、现代化和信息化社会的一个重要标志。
在设计过程中,自己亲自或参考资料完成系统电路的接线,然后利用汇编语言和C语言编写程序,从而更加熟悉自己所学过的东西,为以后的学习与工作打下基础。
四、系统硬件
可编程外围接口芯片8255A、基本输入输出端口、八段数码管、小键盘、16550远程控制器
五、元器件介绍
5.1可编程外围接口芯片8255A
5.1.18255A的引脚
8255A是可编程的三端口并行输入输出接口芯片,具有40个引脚,双列直插式封装,由+5V供电,其引脚与功能如示意图所示:
A、B、C三个端口各有8条端口I/O线:
PA7?
PA0,PB7?
PB0,PC7?
PC0,共32个引脚,用于8255A与外设之间的数据(或控制、状态信号)的传送。
D0~D7:
8位三态数据线,接至系统数据总线。
CPU通过它实现与8255之间数据的读出与写入,以及控制字和状态字的写入与读出等。
A0~A1:
地址信号。
A0和A1经片内译码产生四个有效地址分别对应A、B、C三
图18255A引脚及功能示意图
B组
(b)功能示意图
(a)引脚
A组
表18255A各端口读写操作时的信号关系
CS
RD
WR
A1
A0
操作
1
写端口A
写端口B
写端口C
写控制寄存器
读端口A
读端口B
读端口C
无操作
个独立的数据端口以及一个公共的控制端口。
在实际使用中,A1、A0端接到系统地址总线的A1、A0。
CS#:
片选信号,由系统地址译码器产生,低电平有效。
读写控制信号RD#和WR#:
低电平有效,用于决定CPU和8255A之间信息传送的方向:
当RD#=0时,从8255A读至CPU;
当WR#=0时,由CPU写入8255A。
CPU对8255各端口进行读写操作时的信号关系如表1所示。
RESRT:
复位信号,高电平有效。
8255A复位后,A、B、C三个端口都置为输入方式。
5.1.
2.8255A的内部结构
如图2所示,8255A的内部由以下四部分组成:
(1)端口A、端口B和端口C
端口A、端口B和端口C都是8位端口,可以选择作为输入或输出。
还可以将端口C的高4位和低4位分开使用,分别作为输入或输出。
当端口A和端口B作为选通输入或输出的数据端口时,端口C的指定位与端口A和端口B配合使用,用作控制信号或状态信号。
(2)A组和B组控制电路
这是两组根据CPU送来的工作方式控制字控制8255工作方式的电路。
它们的控制寄存器接收CPU输出的方式控制字,由该控制字决定端口的工作方式,还可根据CPU的命令对端口C实现位置位或复位操作。
(3)数据总线缓冲器
这是一个8位三态数据缓冲器,8255A正是通过它与系统数据总线相连,实现8255A与CPU之间的数据传送。
输入数据、输出数据、CPU发给8255A的控制字等都是通过该部件传递的。
(4)读/写控制逻辑
读/写控制逻辑电路的功能是负责管理8255A与CPU之间的数据传送过程。
它接收CS及地址总线的信号A1、A0和控制总线的控制信号RESET、WR、RD,将它们组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令送给这两个部件,再由它们控制完成对数据、状态信息和控制信息的传送。
各端口读写操作与对应的控制信号之间的关系见表1所示。
图28255A内部结构框图
5.1.8255A的各种工作方式
及控制字
1.8255A的工作方式
8255A在使用前要先写入一个工作方式控制字,以指定A、B、C三个端口各自的工作方式。
8255A共有三种工作方式:
方式0——基本输入输出方式,即无须联络就可以直接进行8255A与外设之间的数据输入或输出操作。
A口、B口、C口的高四位和低四位均可设置为方式0。
方式1——选通输入输出方式,此时8255A的A口和B口与外设之间进行输入或输出操作时,需要C口的部分I/O线提供联络信号。
只有A口和B口可工作于方式1。
方式2——选通双向输入输出方式,即同一端口的I/O线既可以输入也可以输出,只有A口可工作于方式2。
此种方式下需要C口的部分I/O线提供联络信号。
2.8255A的控制字
(1)工作方式选择控制字
8255A的工作方式可由CPU写一个工作方式选择控制字到8255A的控制寄存器来选择。
控制字可以分别选择端口A、端口B和端口C上下两部分的工作方式。
端口A有方式0、方式1和方式2共三种工作方式,端口B只能工作于方式0和方式1,而端口C仅工作于方式0。
注意:
在端口A工作于方式1或方式2,端口B工作于方式1时,C口部分I/O线被定义为8255A与外设之间进行数据传送的联络信号线,此时,C口剩下的I/O线仍工作于方式0,是输入还是输出则由工作方式控制字的D0和D3位决定。
(2)C口按位置位/复位控制字
8255A的C口具有位控功能,即端口C的8位中的任一位都可通过CPU向8255A的控制寄存器写入一个按位置位/复位控制字来置1或清0,而C口中其他位的状态不变。
例如,要使端口C的PC4置位的控制字为00001001B(09H),使该位复位的控制字为00001000B(08H)。
应注意的是,C口的按位置位/复位控制字必须跟在方式选择控制字之后写入控制字寄存器,即使仅使用该功能,也应先选送一个方式控制字。
方式选择控制字只需写入一次,之后就可多次使用C口按位置位/复位控制字对C口的某些位进行置1或清0操作。
5.28X8点阵式LED
5.2.1其内部结构如下:
图3X8点阵式结构图
5.2.28x8点阵式LED的工作原理
由LED的结构图可知道,8x8点阵式LED是由64个发光二极管构成,每行8个二极管的阳极串接在一起,每列8个二极管的负端串接在一起。
当要选中某个点时就得把该点的行接高电平,列接低电平。
如:
要选中第二行第三个点,即要求DC7接5伏,DR3接地。
通过不同的接线可以用点构成所需要的图形。
5.3基本输入输出端口
如图4所示,CPU可以通过基本输入输出端口与外设进行信息交换。
其中IA0~IA7与IB0~IB7为两个输入端口,CPU可通过这两个端口从外设获得信息;
OA0~OA7与OB0~OB7是两个输出端口,CPU可通过其将信息输出给外设。
图4
5.4键盘与数码管
5.4.1.矩阵式键盘的结构及原理
矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,其结构如图5所示。
由图可知,一个4×
4的行、列结构可以构成一个含有16个按键的键盘,显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口。
图5
矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到+5V上。
当无键按下时,行线处于高电平状态;
当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。
这是识别按键是否按下的关键。
然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。
5.4.2数码管
八段数码管如图6所示。
当数码管被选中后,对其相应的代码段施加高电平,数码管便产生相应的图形。
例如在数码管被选中后,对端A、B、C、D、E、F、G、DP分别置1(高电平)、1、1、1、1、1、0(低电平)、0,则数码管就会显示0的字形,因此0的数码管代码为11111100B。
相应地可以求出其他数字的数码管代码。
图6
5.4.3数码管与小键盘
图7数码管与小键盘显示单元结构图
如图7,数码管的选通受小键盘的控制,当小键盘的列选通时,即施加低电平,则该列所对应的数码管也被选通。
5.516550串行控制器
5.5.1串行通信方式
异步方式串行异步接口通用异步收发器
同步方式串行同步接口通用同步收发器
5.5.2串行接口的基本结构
5.5.31655内部结构图
六、设计过程
6.1设计思路
电路设计及元器件选择时,为了结果实现的方便,所以没有选择中断芯片。
设计中,用基本输入输出的两个端口作为8X8点阵LED的控制端,8255_A的A口味输出,控制小键盘的列,即选通,同时选通相应列所对应的数码管;
C口低四位为输入,读入小键盘的行状态;
B口为输出,输出数码管的代码,控制数码管。
6.2电路接线图
图8电路接线图
6.3程序流程图
图9程序流程图
6.4源程序
6.4.1C语言
#include<
stdio.h>
stdlib.h>
bios.h>
ctype.h>
process.h>
conio.h>
#defineIOY00xC400
#defineIOY10xC440
#defineIOY20xC480
#defineMYIO_AIOY0
#defineMYIO_BIOY1
#defineMY8255_AIOY2
#defineMY8255_CIOY2+0x02*4
#defineMY8255_MODEIOY2+0x03*4
unsignedchardesign[56]={0xff,0xef,0x08,0x5a,0xdd,0xaa,0x7f,0xff,
0xff,0xef,0x15,0x50,0x53,0xd3,0xd9,0x03,
0xff,0xf5,0x05,0x58,0xdd