基于单片机设计双色LED点阵毕业设计 论文Word格式.docx
《基于单片机设计双色LED点阵毕业设计 论文Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机设计双色LED点阵毕业设计 论文Word格式.docx(52页珍藏版)》请在冰豆网上搜索。
【摘要】本文介绍了以单片机STC89C52为核心的红绿双色LED点阵显示屏控制系统,由矩阵键盘、行驱动器74LS154、列驱动器74LS164、单片机控制电路和LED点阵显示屏组成。
该系统可以控制LED点阵显示屏显示可以通行的绿色箭头标志和禁止通行的红色交叉标志,并可显示停车收费金额,显示效果良好。
【关键词】双色LED点阵;
STC89C52;
矩阵键盘;
停车收费显示
1.引言
单片机在上世纪问世以来就以非常高的性价比受到人们的关注和重视,发展迅速和应用广阔。
单片机具有体积小、重量轻、成本低和集成度高、抗干扰能力强以至于可靠性高、灵活性好,易于开发。
如今,单片机已被广泛地应用在工业自动化控制、自动检测、智能仪表、智能化家用电器、航空航天系统和和国防军事、尖端武器等各个方面。
我们可以开发利用单片机系统以获得很高的经济效益。
更重要的意义是单片机的应用改变了控制系统传统的设计思想和方法。
以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。
这种以软件结合硬件或取代硬件并能提高系统性能的控制技术称为微控制技术。
本文所要描述得设计就是通过单片机来控制LED点阵显示。
发光二极管(英语:
Light-EmittingDiode,简称LED)是一种能发光的半导体电子元件。
这种电子元件早在1962年出现,早期只能发出低光度的红光,之后发展出其他单色光的版本,时至今日能发出的光已遍及可见光、红外线及紫外线,光度也提高到相当的光度。
而用途也由初时作为指示灯、显示板等;
随着技术的不断进步,发光二极管已被广泛的应用于显示器、电视机采光装饰和照明。
本设计采用基于单片机的点阵LED来实现停车场出入口的信号控制和计费显示。
采用的是4块8×
8像素的LED点阵显示屏。
LED显示屏(LEDpanel):
LED就是lightemittingdiode,发光二极管的英文缩写,简称LED。
它是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
LED点阵显示屏特点有混色好、抗静电性能优势超强、可靠性能强、可视角度大、亮度高。
本设计显示方式为先根据所需要的汉字提取汉字点阵,将点阵文件存入ROM,形成新的汉字编码。
而在使用时则需要先根据新的汉字编码组成语言,再由MCU根据新编码提取相应的点阵进行汉字显示。
具体显示技术和原理将会在正文中得到详细论述。
2.系统整体设计方案
2.1需要实现的功能
设计一个半户外用16×
16双色点阵LED图文显示屏,要求在目测条件下LED显示屏各点亮度均匀、充足,通过外接矩阵键盘实现控制点阵显示内容的人际互动功能。
可显示图形和文字,显示图形或文字应稳定、清晰无串扰。
2.2设计方案论证
2.2.1显示模式方案
为了增强显示屏的显示效果,可以有多种显示模式。
最易实现的事静态显示。
此处的静态显示模式不同于静态驱动方式。
与静态显示相对应的是各种动态显示模式,这种模式下的图案和文字都是动态的。
可按照设计为闪烁、平移、旋转等多种模式。
要设计不同的模式只需调整算法,不必重新编写数据。
例如,按顺序调整行号,可以使显示图文产生上下平移;
而顺序调整列显示数据的位置,就可以达到左右平移的目的;
同时调整行列顺序,就能得到对角线平移的效果。
其它模式的数据刷新,也可找到相应的算法。
不过当算法太复杂,太浪费时间的话,也可以考虑预先生成刷新数据,存储备用。
刷新的频率控制,要考虑到显示效果和亮度,频率太低会闪烁得频繁,频率太高亮度会降低。
本设计的刷新频率可控制在30毫秒左右。
静态驱动显示的方法中,同时控制LED显示屏的各个发光二极管的亮灭。
本设计的16*16双色点阵共有512个发光二极管,但单片机却没有这么多端口使用。
如果使用锁存器来扩展端口,按每个锁存器有8位端口计算,16*16双色点阵共需要576/8=72个锁存器,显然需要大量的锁存器和繁琐的电路设计,而且实际应用中的显示屏往往更大,使得要在锁存器上花大量的成本,得不偿失。
出了高成本,静态显示的功率也比动态的高很多,显示一个16*16双色点阵的功耗达到了瓦级,普通电池难以驱动。
因此即使静态显示的效果比动态显示的好,但在实际应用中很难见到使用这种设计的显示屏,而是采用本设计中的动态扫描显示方式。
动态扫描显示的方法为逐行点亮,采用16位的列驱动器实现多行的扫描。
在本设计的16*16双色点阵中同一行的发光管的阳极连接在一起,同一列的发光管的阴极连接在一起,这里要分为红绿两组。
由行译码器给出选行信号,从第一行开始按顺序对各行进行扫描。
另一方面,由列驱动器锁存的各列的数据,确保相应的列与电源另一端相接,此时接通的列就在该行该列点亮相应的LED。
而未接通的LED不亮。
当一行扫描持续时间过后该行亮起的LED就熄灭,接着行驱动器选择下一行,下一行以同样的方法进行显示。
当16行都扫过一遍即一个扫描周期后,又从第一行开始下个周期的扫描。
只要每个周期频率20Hz以上就不容易出现闪烁,显示屏就能显示稳定清晰地图形或数字了。
使用动态扫描方式的功耗和成本都要比静态扫描方式的低很多,而且还有利于延长LED的使用寿命。
2.2.2数据传输方案
采用动态扫描方式时,数据通常按8位一个字节的顺序存放在单片机的存储器中。
在显示时把各行对应的数据传到相应的列驱动上去。
数据从单片机传输到列驱动可以采用并行方式或串行方式。
采用并行方式需要大量的线路数,相应的也需要大量硬件,显然采用并行方式不可取。
采用串行传输的方法,控制列驱动器只需两根信号线,一根负责传输绿色信号另一根则是红色信号,将列数据一位一位传到列驱动器,在硬件方面较容易实施,比较经济。
传输一行对应的列数据的显示过程可以分解分数据传输和显示两个部分。
首先数据要经过并行到串行和串行到并行的两次变换,单片机先从储存器读出8位并行数据然后并串变换,按顺序一位一位传送到列驱动器。
列驱动器的每一列先把当前数据传到下一列后再接受新的数据,知道全部数据传输完毕。
当所有列数据传输到位后,这一行的各列才行进行列行显示。
对于这种方式来说,列数据的准备时间可能相当长,在行扫描频率确定的情况下,留给行显示时间就太少,当频率过高时会出现亮度降低的情况。
经上述分析,可以归纳出列驱动器电路应该具有的主要功能:
移位功能,实现列数据准备时的串入并出。
图1为显示屏电路实现的结构框图。
3.系统硬件部分设计
本设计智能停车场LED控制系统基于单片机设计硬件和软件两方面实现控制功能,实现驱动矩阵键盘和LED控制显示功能。
但是单片及接口有限,需要扩展外部电路才能满足驱动键盘和显示屏的需求。
硬件部分的设计大致为稳压电源、单片机系统、外围电路、列驱动器电路、行驱动器电路、矩阵键盘及LED显示屏电路共六个部分。
本文的电路原理图均通过程序Protel99SE设计。
3.1电源设计
本设计的采用的是5V直流供电,稳压电源的功能是把来自外接电源的直流电压转变为所需的、稳定的直流电压。
它由整流电路、滤波电路和稳压电路四个部分组成,如图2所示。
图2稳压电源电路图
如图所示,输入的直流电压经U2稳压,在输出端得到稳定的5V直流电压,再将直流电压通过电容CE1改善得到纹波电压,在输出端接上电容C3,用以滤除输出端的高频信号,改善负载的瞬态响应,最后得到所需的稳定的直流电压。
电路最后接入发光二极管用作电源指示灯。
在实际操作中,由于输入端采用的大多数5V电压,故可直接短路1、3而不使用7805三极管。
当输入的直流电压在5V以上时方可接入7805三极管。
3.2单片机系统及外围电路
3.2.1单片机的选择
单片机采用89C51或其兼容系列的芯片进行控制,它负责控制整个电路以及相应的程序的运行、以及给屏体电路部分发送命令。
这里我们选择了内含8K字节Flash的STC89C52,因为相对于AT系列单片机,STC可直接通过串口(RxD/P3.0,TxD/P3.1)下载并ISP(在系统可编程),而本设计中P1口外接了矩阵键盘,AT系列单片机不能通过P1口进行下载。
3.2.2STC89C52芯片介绍
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
STC89C52具有以下特征和参数:
(1)增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051;
(2)8K字节程序存储空间;
(3)512字节数据存储空间;
(4)内带2K字节EEPROM存储空间;
(5)可直接使用串口下载;
(6)通用I/O口(32个),复位后为:
P0/P1/P2/P3是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
;
(7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片;
(8)共3个16位定时器/计数器。
即定时器T0、T1、T2;
(9)具有看门狗功能;
(10)工作频率范围:
0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz;
(11)外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒。
STC89C52单片机一般采用双列直插DIP封装,共40个引脚,图3为其引脚排列图。
40个引脚大致可分为4类:
电源、时钟、控制各I/O引脚。
图3STC89C52引脚图
3.2.2.1电源
Vcc——芯片电源,接+5V;
GND——接地端。
3.2.2.2时钟
XTAL1、XTAL2——晶体振荡电路反相输入端和输出端。
3.2.2.3控制线
控制线共有4根,其中3根是复用线。
所谓复用线是指具有两种功能,正常使用时是一种功能,在某种条件下是另一种功能。
1.ALE/
——地址锁存允许/片内EPROM编程脉冲。
(1)ALE功能:
用来锁存P0口送出的低八位地址。
STC89C52在并行扩展外存储器时,P0口用于分时传送低8位地址和数据信号,且均为二进制数。
当ALE信号有效时,P0口传送的是低8位地址信号;
ALE信号无效时,P0口传送的是低8位地址信号。
在ALE信号的下降沿,锁定P0口传送的内容,即低8位地址信号。
需要指出的是,当CPU不执行访问外RAM指令,ALE以时钟振荡频率1/6的固定频率输出,因此ALE信号也可作为外部芯片CLK时钟或其他需要。
但是,当CPU执行MOVX指令时,ALE将跳过一个ALE脉冲。
(2)
功能:
片内EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
2.
——外ROM读选通信号。
89C52读外ROM时,每个机器周期内
两次有效输出。
可作为外ROM芯片输出允许
的选通信号。
在读内ROM或读外RAM时,
无效。
3.RST/VPD——复位/备用电源。
(1)正常工作时,RST端为复位信号输入端,只要在该引脚上连续保持两个机器周期以上高电平,AT89C51芯片即实现复位操作,复位后一切从头开始,CPU从0000H开始执行指令。
(2)VPD功能:
在VCC掉电情况下,该引脚可接上备用电源,由VPD向片内RAM供电,以保持片内RAM中的数据不丢失。
4.
/VPP——内外ROM选择/片内EPROM编程电源。
(1)
正常工作时,
为内外ROM选择端。
AT89C51单片机ROM寻址范围为64KB,其中4KB在片内,60KB在片外。
当
保持高电平时,先访问内ROM,但当PC值超过4KB时,将自动转向执行外ROM中的程序。
保持低电平时,则只访问外ROM,不管芯片内有否内ROM。
(2)VPP功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚用于施加编程电源。
3.2.2.4I/O引脚
STC89C52有P0、P1、P2、P34个8位并行I/O端口,共32个引脚。
P0口是一组8位漏级开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能以吸收电流的方式驱动8个TTL逻辑门电路,对端口写1时,又可作高阻抗输入端用。
在访问外部程序和数据存储器时,它是分时多路转换的地址(低8位)/数据总线,在访问期间激活了内部的上拉电阻。
在Flash编程时,P0端口接收指令字节;
而在验证程序时,则输出指令字节。
验证时,要求外接上拉电阻。
P1口是带内部上拉电阻的双向I/O口,向P1口写入1时P1口被内部上拉为高电平,可用作输入口。
当作为输入脚时被外部信号拉低的P1口会因为内部上拉而输出一个电流。
Flash编程和程序校验期间,P1接收低8位地址。
P2口是带内部上拉电阻的双向I/O口,向P2口写入1时P2口被内部上拉为高电平可用作输入口,当作为输入脚时被外部拉低的P2口会因为内部上拉而输出电流。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据,当使用8位寻址方式(MOVX@RI)访问外部数据存储器时,P2口发送P2特殊功能寄存器的内容,在整个访问期间不改变。
Flash编程和程序校验时,P2也接收高位地址和一些控制信号。
P3口是带内部上拉电阻的双向I/O口,向P3口写入1时P3口被内部上拉为高电平可用作输入口,当作为输入脚时被外部拉低的P3口会因为内部上拉而输出电流。
P3口除了作为一般的I/O口线外,更重要的是它的第二功能,如表1所示:
端口引脚
第二功能
P3.0——RXD
串行口输入端
P3.1——TXD
串行口输出端
P3.2——
外部中断0请求输入端
P3.3——
外部中断1请求输入端
P3.4——T0
定时/计数器0外部信号输入端
P3.5——T1
定时/计数器1外部信号输入端
P3.6——
外RAM写选通信号输出端
P3.7——
外RAM读选通信号输出端
表1P3各端口第二功能
3.2.3单片机系统外围电路
单片机系统外围电路形式如图4所示。
单片机振荡器反相放大器的输入端(XTAL1)和输出端(XTAL2)之间接上12MHz或更高频率的晶振,以获得较高的刷新频率,使显示更稳定。
电容C1、C2是晶振的负载电容,主要起频率微调和稳定的作用。
通用I/O口P0口外接矩阵键盘,作为驱动矩阵键盘的输入口,低四位接矩阵键盘的行高四位接矩阵键盘的列。
通用I/O口P1外接上拉电阻和5V电源输出高电平,作为列数据的输出口,P2口作为输出二进制行号数据的输出口,两种数据的输出在时间上是错开的。
P0.1和P0.2接控制红色的列驱动器,P0.3和P0.4接控制绿色的列驱动器。
P2的第四位与行驱动器相连,送出二进制的行选信号。
端口RxD/P3.0,TxD/P3.1作为ISP下载串口,如图5所示。
图5ISP下载端口
图4单片机系统外围电路
3.3列驱动电路
3.3.1列驱动芯片74LS164介绍
列驱动器有74LS164集成电路构成,它具有一个8位串行输入/输出或者并行输出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,即达到重叠处理的目的。
74LS164的管脚和内部结构形式如图6和图7所示。
引出端符:
CLOCK时钟输入端;
CLEAR同步清除输入端(低电平有效);
A,B串行数据输入端;
QA-QH输出端。
图674LS164管脚
图774LS164内部结构形式
当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。
串行数据输入端(A,B)可控制数据。
当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。
当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。
表2真值表
图8时序表
3.4行驱动电路
3.4.1行驱动芯片74LS154介绍
图974LS154引脚功能图及逻辑图
表374LS154译码器的真值表
74LS154译码器是个多输入、多输出的组合逻辑电路。
其功能是将给定的输入码组进行翻译,变换成对应的选行信号。
它的管脚形式和逻辑图如图9所示。
这种单片4线—16线译码器非常适合用于高性能存储器的译码器。
当两个选通输入G1和G2为低时,它可将4个二进制编码的输入译成16个互相独立的输出之一。
实现解调功能的办法是:
用4个输入线写出输出线的地址,使得在一个选通输入为低时数据通过另一个选通输入。
当任何一个选通输入是高时,所有输出都为高。
它的真值表如表3所示。
Inputs输入
Outputs输出
G1
G2
D
C
B
A
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
L
H
X
从译码器的真值表可看出,每一组ABCD变量输入时,在16个输出端只有一个引脚为“0”,且一一对应,其余全为“1”;
通知计算可得该4线-16线译码器的逻辑形式为:
,
(1)
3.4.2行驱动电路
行驱动电路相对于列驱动电路简单。
单片机给出行选信号时,行驱动器按顺序要求给出二进制信号,每次换行时由单片机输出4位的二进制信号,行号经4线-16线译码器译码之后生成16条行选信号线,在经过驱动器驱动对应的行。
行驱动器电路的原理图如图10所示。
图10行驱动电路原理图
行选通信号从74LS154的
~
端输出,某一端输出低电平即为有效,而其它端输出均为高电平的信号无效。
如端输出低电平,此信号传至相应的PNP型三极管Q1,此时,三极管的基极为低电平,因此,发射结正向偏置,集电结反向偏置,三极管导通,其集电极再将高电平加于LED阵列的对应的行上,即将此行选通;
而同时74LS154的其它端输出高电平而致使该行对应的三极管截止,从而所对应LED行线不被选通。
行选通按顺序从
,全部各行都选通一遍之后又重新开始,这就是行驱动电路的逐行扫描过程。
行信号A、B、C、D的顺序变化范围从0000、0001、0010、至l111,来一个选通信号,行信号顺序就变化一次,其频率由扫描电路决定。
由于行驱动电路一条行线上要带动16列的LED进行显示,按每一LED器件20mA电流计算,16个LED同时发光时,就需要16×
20=320mA的驱动电流,选用三极管8550作为驱动管可以在逻辑功能和驱动能力上符合LED的驱动要求。
3.5矩阵键盘电路
本设计用STC89C52的并行口P1接4*4矩阵键盘,以低四位为输入线接矩阵键盘的行,高四位为输出线接矩阵键盘的列。
对应的按键序列排序如图11所示:
图11矩阵键盘的按键序列
硬件电路原理图如图12所示:
图12矩阵键盘电路原理图
3.6LED显示屏电路
本设计采用的是2388规格的双色LED点阵。
LED点阵是将发光二极管按行按列布置的。
在扫描方式下按行扫描按列控制。
LED显示屏采用多块8**点阵单元拼接而成。
本文使用的是4块2388ASRG型号的双色点阵组成16*16的点阵,以满足设计需求。
8×
8双色点阵是本设计最基本的点阵模块,首先要理解该8×
8双色点阵的工作原理才可掌握LED点阵的显示方法。
该8×
8双色点阵的LED结构如图1