基于单片机控制的LED点阵系统.docx
- 文档编号:24140150
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:27
- 大小:379.98KB
基于单片机控制的LED点阵系统.docx
《基于单片机控制的LED点阵系统.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的LED点阵系统.docx(27页珍藏版)》请在冰豆网上搜索。
基于单片机控制的LED点阵系统
1绪论
随着电子技术和信息技术的迅速发展,LED的应用范围越来越广泛。
它作为一个重要的宣传平台,已经受到全社会的普遍认可和广泛使用。
如今,它几乎成为各个广场和大型超市的必备品。
然而这些功能的实现离不开单片机的功劳。
单片机是一种微型处理器,负责数据的接收、发送和处理的工作。
LED显示屏则可以显示变化的数字、文字、图形和图像等。
它不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏等无法比拟的优点[1]。
点阵显示器的特点是可以按照实物所需要的大小、形状和颜色进行组合,用单片机控制实行各种文字或图形的变化,达到广告宣传和提示的目的。
1.1课题背景及意义
LED点阵电子显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。
它以其色彩鲜艳动、态范围广、亮度高、寿命长、工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。
点阵式LED显示技术是近几年发展较快的显示技术之一,其抗干扰能力强等特点使得其在户外广告、公共告示等方面得到了广泛的应用,因此研究点阵式LED显示屏接口与控制技术具有较高的实际应用价值。
LED显示屏的应用涉及社会经济的许多领域,主要包括:
(1)证券交易、金融信息显示。
(2)机场航班动态信息显示。
(3)车站旅客引导信息显示。
(4)体育场馆、道路交通信息显示。
(5)调度指挥中心显示。
(6)邮政、电信、商场购物中心等服务领域的业务宣传显示。
(7)广告媒体新产品宣传显示等。
实际生活中经常会遇到一些特殊要求的动态显示,比如电梯运行中指示箭头的上下移动、某些智能仪表幅值的条形显示、广告中厂家的商标显示等。
这时一般的显示系统就很难达到要求[2]。
另外,由于受到存储器本身的局限,其特殊字符或图案也往往难以显示,同时显示内容也不能随意更改。
1.2本课题相关介绍
本课题要求自选单片机及其周边芯片,设计点阵LED与单片机的接口电路,并编制单片机的软件,并对系统进行仿真调试。
该设计提出采用软件仿真平Proteus对点阵式LED滚动汉字显示屏进行仿真,在Proteus中完成硬件电路的设计,同时采用KeilC集成开发平台设计程序,可在计算机上仿真实现点阵滚动汉字显示屏的滚动显示。
本设计提出一种利用单片机控制的LED显示系统通讯方法。
该方法可以对显示内容(包括汉字和特殊图符)进行实时控制,从而实现滚动的动态显示效果。
该方法同时还可以调节动态显示的速度,并且用户也可以同时进行显示效果的预览仿真,显示内容亦可以较方便的修改[3]。
1.3论文章节安排
在撰写此论文之前,我在学校的图书馆里参阅了大量有关单片机介绍和LED显示电路设计等相关书籍,并且通过网络查找搜集了较多的相关论文。
经过反复多次对这些资料进行详细的摘要和严谨的对比整理,我从中学习到很多新的相关专业知识,加深并丰富了我对单片机的理解。
最后,我写出了这篇点阵LED显示电路和系统设计的论文。
其中各个章节安排如下:
第一章绪论主要讲述该设计的背景,意义以及设计思想。
第二章系统的总体方案设计主要是硬件组成部分及与设计电路相关的芯片介绍。
第三章系统的软件部分。
第四章系统仿真,显示符合设计要求的显示结果。
2系统的硬件部分设计
本设计主要采用单片机及其周边芯片,设计点阵LED与单片机的接口电路。
2.1设计要求
(1)通过对80C51单片机的C语言编程,实现汉字的左移滚动显示。
(2)成本低,功能强,设计明了化实用化。
(3)动态显示过程的仿真成果中没有明显的抖动。
2.2设计基本方案
为使该模块化的点阵式LED显示屏控制系统使用更加方便,并具有较高的灵活性和视觉舒适性,我对系统的硬件做了非常精心的设计[4]。
本设计的硬件电路包括:
主控单片机模块、译码器选择数据模块、LED显示模块这三大模块。
总体组成框图如图2.1所示。
图2.1总体结构框图
图2.1简略的描述了系统的结构,本系统先由主控单片机来控制译码器进行位选,然后再将段码的值通过主控单片机的I/O口送往LED显示模块进行汉字的显示。
2.3硬件电路芯片介绍
该设计主要介绍LED显示电路所采用的主要芯片,如单片机80C51,译码器74LS138。
此外,还简要阐述了选取这些芯片的优点。
2.3.1单片微型计算机简介
单片微型计算机(SingleChipMicroComputer)简称单片机,它是一种把组成微型计算机的各功能部件:
中央处理单元CPU、一定容量的随机存储器RAM和只读存储器ROM、I/O接口电路、定时器/计数器以及串行口等制作在一块芯片中的计算机,从而实现微型计算机的基本功能[5]。
单片机具有结构简单、控制功能强、可靠性高、体积小、价格低等特点,在家用电器、智能化仪器、工业控制以及火箭导航尖端技术领域都发挥着十分重要的作用[6]。
单片机的内部结构示意图如下图2.2所示。
图2.2单片机内部结构示意图图2.3单片机应用系统组成示意图
单片机实质上是一个芯片,在实际应用中通常很难直接把单片机和受控对象进行电气连接,而是必须外加各种扩展接口电路以至外部设备,连同受控对象和单片机程序软件构成一个单片机应用系统。
单片机应用系统是以单片机为核心,配以输入、输出、显示、测量和控制等外围电路和软件能实现一种或多种功能的实用系统。
单片机应用系统的组成示意图如上图2.3所示[7]。
2.3.2系统芯片的选择
方案一:
8031芯片内部无ROM,需要外扩程序存储器,由此造成电路焊接的困难,况且使用8031还需要另外购买其他的芯片,从而造成成本比较高,且性价比低。
方案二:
80C51芯片内部有ROM,且片内ROM全部采用FlashROM,它能够在3V的超低压工作,与51系列单片机完全兼容。
因此,本设计选择80C51芯片。
2.3.3主控制单片机
80C51是一种高性能CMOS8位微处理器,俗称单片机,它带有4K字节闪烁可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的80C51是一种高效微控制器,80C2051是它的一种精简版本。
80C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[8]。
80C51引脚即外观如图2.4所示。
图2.480C51引脚外观图
2.3.480C51接口说明
Vss(20脚):
接地。
VCC(40脚):
主电源+5V。
XTAL1(19脚):
接外部晶体的一端。
在片内它是振荡电路反相放大器的输入端。
在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚):
接外部晶体的另一端。
在片内它是个振荡电路反相放大器输出端,振荡电路的频率是晶体振荡频率。
若需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。
RST(9脚):
单片机刚刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位。
PSEN(29脚):
在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。
CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。
不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。
PSEN端同样可驱动8个LSTTL负载。
我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。
ALE/
(30脚):
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在Flash编程时,此引脚(
)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可以用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
EA/VPP(31脚):
当EA端输入高电平时,CPU从片内程序存储器地址0000H单元开始执行程序。
当地址超出4KB时,将自动执行片外程序存储器的程序。
当EA输入低电平时,CPU仅访问片外程序存储器。
在对87C51EPROM编程时,此引脚用于施加编程电压VPP。
输入/输出引脚:
(1)P0.0~P0.7 (39脚~32脚)。
(2)P1.0~P1.7 (1脚~8脚)。
(3)P2.0~P2.7 (26脚~21脚)。
(4)P3.0~P3.7 (10脚~17脚)。
80C51单片机P3口的第二功能如表2.1所示。
表2.180C51单片机P3口第二功能
引脚号
第二功能
P3.0
RXD(串行输入线)
P3.1
TXD(串行输出线)
P3.2
(外部中断0输入线)
P3.3
(外部中断0输入线)
P3.4
T0(定时器0外部计数脉冲输入)
P3.5
T1(定时器1外部计数脉冲输入)
P3.6
(外部数据存储器写选通信号输出)
P3.7
(外部数据存储器写选通信号输出)
一个16*16的点阵显示系统由单片机80C51,74LS138,1个16*16的LED点阵模块,单片机的时钟复位电路和P0口的上拉电阻组成。
16*32的点阵显示电路由单片机80C51,4个74LS138和2个16*16的LED点阵模块组成。
该电路所设计的电子屏可显示多个汉字,并实现左移滚动。
2.4LED点阵制作
LED(LightEmittingDiode),50年前人们已经了解半导体材料可产生光线的基本知识,第一个商用二极管产生于1960年。
LED是英文LightEmittingDiode(发光二极管)的缩写,它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用环氧树脂密封,即固体封装,所以能起到保护内部芯线的作用,所以LED的抗震性能好[9]。
点阵式LED的显示采用逐列扫描方式。
工作时,由单片机取出第一列需要显示的内容经延时一段时间后再进行下一列点阵数据的显示。
需要注意的是,每次只能选通一列数据,即要通过不断的逐列扫描变换来实现汉字或字符的显示。
2.4.1显示模块的选择
方案一:
点阵显示,是由八行八列的发光二极管集成在一块电路上组成,主要用来显示汉字,同时也能显示数字和少量图像。
而且程序简单,显示的效果比较清晰。
方案二:
LED数码管静态显示,电路容易理解且驱动的程序简单,多片七段译码器驱动显示,这不仅增加了成本,还需要占用单片机多个I/O口,也给电路的焊接带来一定的困难,因此不选用这种方案作为显示模块。
经过两种方案的比较,最后选择方案一:
LED的点阵显示。
2.4.2LED驱动模块的选择
方案一:
采用静态锁存方式,将每一个LED发光管的一端接至单片机的一个I/O口,另一端通过电阻接电源。
这种方法可以直接驱动LED,原理简单,驱动能力强,LED的亮度也可以通过限流电阻调节,非常方便,但此种方法太浪费单片机的I/O口,只适合于较小的系统。
方案二:
采用动态扫描方式,通过三极管驱动并联在一起的LED发光管的一端(共阴极或共2端),LED发光管的另一脚接通用I/O口,控制其亮灭。
该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源[10]。
比较以上两种方案,系统设计中采用方案二。
2.4.3主要芯片74LS138的介绍
译码器是组合逻辑电路的一个重要的器件,芯片74LS138为3线8线译码器,74LS138译码器的引脚(管脚)如下图2.5所示。
图2.574LS138的引脚图
所谓译码,就是将每一组代码的含意翻译出来的过程。
译码是编码的逆过程。
广泛被使用的译码器是74LS138译码器,因此该设计中采用74LS138且其作用也就是将一组码转换为想要的确定的信息。
74LS138为3线~8线译码器,共有54/74S138和54/74LS138两种线路结构型式。
其工作原理:
当一个选通端(E3)为高电平,另两个选通端(E1和E2)为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平的方式译出。
利用E1、E2和E3可级联扩展成一个24线的译码器;若外接一个反相器还可以级联扩展成为32线译码器。
若将选通端中的一个作为数据的输入端时,74LS138还可作数据分配器。
假设地址端的值为001,那么则说明其/Y1输出口是有效的,且其输出值为10111111。
假设地址端的值为010,那么则说明其/Y2输出口是有效的,且其输出值为11011111。
假设地址端的值为011,那么则说明其/Y2输出口是有效的,且其输出值为11101111。
在该毕业设计中,由于单片机中的P2口只有八个数据线,显然不够三十二个数据使用。
因此,74LS138译码器在此是用于扩展数据的输入端的。
4个74LS138译码器正好一共有三十二个输出端口,于是就对应了LED显示屏中的三十二个列选端。
满足了16*32点阵式LED显示屏的列需求。
74LS138译码器引脚功能如表2.2所示。
表2.274LS138译码器功能表
输入
输出
S1
S2+S3
A
B
C
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
1
1
0
1
1
1
1
1
1
1
0
0
1
0
1
1
0
1
1
1
1
1
1
0
0
1
1
1
1
1
0
1
1
1
1
1
0
1
0
0
1
1
1
1
0
1
1
1
1
0
1
0
1
1
1
1
1
1
0
1
1
1
0
1
1
0
1
1
1
1
1
1
0
1
1
0
1
1
1
1
1
1
1
1
1
1
0
2.516*16LED点阵显示制作
我们以Version1.0字模精灵为例,每一个汉字由一个16行16列的点阵组成显示。
即国标汉字库中的每一个字均由256点阵来表示。
2.5.116*16LED点阵的内部结构及工作原理
我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。
事实上这个汉字屏幕不仅可以显示汉字,也可以显示在256像素范围内的任何图形。
这里我们以“尚”字说明,如图2.6所示。
图2.6“尚”字显示图
用8位的80C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。
在此我们把它拆分为上部和下部,上部由8*16点阵组成,下部也由8*16点阵组成。
在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的P00~P07口。
方向为P00到P07,显示汉字“尚”时,由上往下排列,为P00亮,P01灭,P02灭,P03灭,P04灭,P05灭,P06灭,P07灭。
即二进制10000000,转换为16进制为80H。
第一列的上半部完成后,继续扫描第一列的下半部,为了接线的方便,我们仍设计成由上往下扫描,从上图可以看到,这一列全部为不亮,即为00000000,16进制则为00H。
然后单片机转向第二列的上半部,P01点亮,为01000000,即16进制40h.这一列完成后继续进行下半部分的扫描,P20点亮,为二进制00000001,即16进制01H。
依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“尚”的扫描代码为:
080H,000H,040H,001H,067H,0FFH,034H,004H
01CH,008H,015H,0FCH,007H,030H,0FDH,050H
005H,090H,00DH,050H,017H,0F8H,064H,012H
02CH,009H,017H,0FEH,020H,002H,040H,001H
由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。
不过现在有很多现成的汉字字模生成软件,就不必去画表格算代码了。
打开字模精灵软件,设定一下输出方式,输入汉字后,再单击“取模”。
十六进制数据的汉字代码即可自动生成,把我们所需要汉字代码复制到我们的C程序中即可,如下图2.7所示。
图2.7汉字字模生成图
2.6硬件系统的整体设计图与原理分析
硬件系统的整体设计图如下图2.8所示。
图2.8硬件系统的整体设计图
原理分析:
Proteus7.4软件中只有8*8和5*7等LED点阵,所以需要由小的LED屏拼接成一个大的LED显示屏。
上图的LED显示部分是由8个8*8的点阵构成整体的16*32点阵屏,可以同时显示两个汉字(或4个英文字母)。
要注意的是:
在Proteus7.4软件中,由于点阵块数太多,所以其接线比较的复杂。
此处采用以上接线方式,把8个LED点阵屏以“一共两行,每行4个”的方式紧凑连接在一起,隐藏了那些错综复杂的连线,使我们在视觉上觉得更清新,更一目了然。
原理图中,拼接后的点阵式LED显示屏采用的是逐列扫描的工作方式。
将事先已经编写好的C语言程序输入到单片机中,80C51单片机的P2口的P2.0口至P2.2口连接4个74LS138(3线~8线)译码器的输入端,再由4组8个相应的输出端,与连接LED显示屏对应的列端相连,用来选中所要显示的字符的列。
单片机的P0口负责输入所要显示的第一个字的代码信息,P1口负责输入所要显示的第二个字的代码信息。
然后又由P0口负责输入所要显示的第二个字的代码信息,P1口负责输入所要显示的第三个字的代码信息,这样在我们的视觉上就感觉字是在连续着在向左移动了。
这样依次类推,所有的字都能连续的左移着显示出来。
另外,在对单片机进行校验时,P0口须接上10K左右的上拉电阻,就是上图中的RP1电阻。
对于74LS138译码器U2来说,其中E1端必须为高电平才能有效,也就是说此时译码器才能正常工作。
E2和E3端是低电平有效,用来接地端。
其余的3个译码器的原理都是这样。
2.7小结
本章节主要介绍了设计中硬件电路用到的单片机80C51芯片的总体结构和各个重要引脚的功能、显示电路中主要器件74LS138译码器的各个引脚及其功能、以及整体设计结构框图的讲解和具体实现字符的连续左移显示的详细分析。
3系统的软件部分设计
应用系统中的应用软件是根据系统功能要求而设计的,能可靠地实现系统的各种功能。
3.1程序设计思路与结构
系统采用模块化结构,包括主程序、延时程序、显示子程序[11]。
3.1.1程序设计思路
计算机按照给定的程序,逐条执行指令,以完成某项规定的任务。
因此,使用计算机必须编写出计算机能执行的程序,用简短的C语言程序进行设计,实现与计算机的通讯,能方便改动显示的内容,使显示内容能够一个接一个的左移滚动慢慢的显示。
由单片机80C51的P2口输出进行片选。
片选1有效时,将所要显示的汉字的段码值送给P0,P1。
驱动相应段点亮。
直到送完16个段码就可以显示一个汉字了。
3.1.2程序设计流程图
系统程序主要由开始、初始化、主程序、字库等组成。
其中主程序和子程序的流程图如图3.1和图3.2所示。
图3.1主程序流程图
对图3.1主程序流程图的简要分析如下:
首先“开始”,然后对整个系统进行初始化,之后调用相应的显示程序,之后开始调整一下数据的指针,判断此时需要显示的字符是否已经显示完毕。
如果已经显示完毕就返回到系统“初始化”的时刻继续进行接下来的流程,如果没有显示完毕则返回到“调用显示程序”的时刻继续接着的流程。
图3.2显示程序流程图
对图3.2显示程序流程图的简要分析如下:
首先开始,之后设定显示一帧字符所用的时间,然后设定片选指针以及数据指针,然后查找相应的汉字或字符的上部数据及显示,接着查找查相应的汉字或字符的下部数据及显示,然后对整个系统延时1ms,之后关闭之前显示的字符内容并调整相关数据的指针,此时判断需要显示的字符是否显示完毕。
若没有显示完毕,则返回到“设片选及数据指针”处进行重新工作流程;若已经显示完毕,则判断此时一帧的时间是否完毕。
如果时间没有完毕,则返回至“设定一帧显示时间”处重新设定该时间;反之整个系统程序结束完成。
3.2模块程序设计
该设计中主要由系统初始化、LED动态显示、汉字显示程序设计以及显示设计几个部分组成。
3.2.1系统初始化
将事先已经编写好的C语言程序输入到单片机中,80C51单片机的P2口的P2.0口至P2.2口连接4个74LS138(3线~8线)译码器的输入端,再由4组8个相应的输出端,与连接LED显示屏对应的的列端相连,用来选中所要显示的字符的列。
对于74LS138译码器U2来说,其中E1端必须为高电平才能有效,也就是说此时译码器才能正常工作。
E2和E3端是低电平有效,用来接地端。
其余的3个译码器的原理都是这样。
3.2.2LED动态显示
此次设计理论显示结果为在显示屏上,汉字按照从右向左的顺序一个个显示。
设计时可采用如下方法:
首先将LED显示屏对应的显示缓冲区全部清零,即LED显示空白,然后通过延时程序来设定各个字符的动态显示时间,显示缓冲区依次加入一个汉字点阵数据并进行扫描显示,这样就可达到动态显示的效果[12]。
单片机的P0口负责输入所要显示的第一个字的代码信息,P1口负责输入所要显示的第二个字的代码信息。
然后又由P0口负责输入所要显示的第二个字的代码信息,同时P1口来负责输入所要显示的第三个字的代码信息,这样在我们的视觉上就感觉字是在连续着在向左移动了。
这样依次类推,所有的字都能连续的左移着显示出来。
3.2.3汉字显示程序设计
打开“字模精灵”软件,设定一下参数设置,即:
选择C51格式,字节倒序,冗余格式,纵向取模。
这样输入单个的汉字后,再单击“取模”。
此时十六进制数据的汉字代码即可自动生成,把我们所需要汉字代码复制到我们的C语言程序中就可以了[13]。
从字模软件中得到需要显示汉字的代码值。
如“王晓璐”的代码为:
unsignedcharcodeziku[]={//字符码的存放格式为:
从左到右共16列,并按列的上下部分依次存放//一组即为一列
/*---转换字符王---*/
0x00,0x20,0x02,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0xFE,0x3F,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0xC3,0x20,0x82,0x30,0x00,0x20,0x00,0x00,
/*---转换字符晓---*/
0x00,0x00,0xFE,0x0F,0x42,0x04,0x42,0x04,0xFE,0x4F,0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 控制 LED 点阵 系统