基于单片机控制的汉字显示.docx
《基于单片机控制的汉字显示.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的汉字显示.docx(21页珍藏版)》请在冰豆网上搜索。
基于单片机控制的汉字显示
分类号TP单位代码11395
密级公开学号*******
学生毕业设计(论文)
题目
LED汉字显示
作者
院(系)
能源工程学院
专业
电气工程及自动化
指导教师
答辩日期
2010年月日
毕业设计(论文)诚信责任书
本人郑重声明:
所呈交的毕业设计(论文),是本人在导师的指导下独立进行研究所取得的成果。
毕业设计(论文)中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。
尽我所知,除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经公开发表或撰写过的研究成果。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人毕业设计(论文)与资料若有不实,愿意承担一切相关的法律责任。
论文作者签名:
年月日
摘要
目前,作为方便、快捷的信息显示方式,LED汉字显示的应用非常广泛。
车站、银行、超市等大型公共场所的即时信息及广告的显示,无不应用LED汉字显示屏。
在能源日渐危机以及信息日渐重要的今天,具有低耗能、频更新、易维护的LED汉字显示屏必将受到广泛的应用,其具有非常的发展前景。
本文从LED的发展及单片机的简单原理开始,深入的研究了基于AT89C51单片机16×16LED汉字滚动显示屏的设计并运用Proteus软件的仿真和实现。
主要介绍了LED汉字显示屏的硬件电路设计、汇编程序设计与调试、Proteus软件仿真和实物制作等方面的内容,本显示屏的设计具有体积小、硬件少、电路结构简单及容易实现等优点。
能帮助广大电子爱好者了解汉字的点阵显示原理,认识单片机的基本结构、工作原理及应用方法,并提高单片机知识技术的运用能力。
关键词:
单片机LED点阵Proteus仿真
ABSTRACT
Now,asaconvenient,quick,LEDdisplaymodeofinformationthatisveryextensiveapplication.Station,bank,supermarketandlargepublicplacesofinstantmessagingandadvertisementoftheapplicationofChinesecharacters,LEDdisplayscreen.Intheenergycrisisandinformationincreasinglymoreimportanttoday,withlowenergyconsumption,easymaintenanceandupdatefrequencyoftheChinesecharacterscreenwillbeLEDbythewidespreadapplication,ithasverydevelopmentprospects.
Inthispaper,basedonAT89C51microcontroller16×16LEDscrollingdisplaycharacterdesignandtheuseofsoftwareinthesimulationandrealizationofProteus.IntroducesthecharacterLEDdisplayhardwaredesign,assemblyprogramminganddebugging,Proteussoftwaresimulationandotheraspectsofphysicalproduction,thedesignofthescreenissmall,lesshardware,thecircuitstructureissimpleandeasytoimplement.Canhelpthefansunderstandthecharacterofthelatticeelectronicdisplayprinciple,understandingthebasicstructureofSCM,workingprincipleandapplicationofmethodsandtechnologiestoimproveknowledgeandabilitytousesinglechip.
Keywords:
microcontroller,LEDdotmatrix,Proteussimulation.
1引言
1.1LED汉字显示研究背景及意义
受到体育场馆用LED显示屏需求快速增长的带动,近年来,中国LED显示屏应用逐步增多。
目前,LED已经广泛应用在银行、火车站、广告、体育场馆之中。
而随着奥运会、世博会的到来,LED显示屏将广泛的应用在体育场馆以及道路交通指示中,LED显示屏在体育广场中的应用将出现快速增长。
2007年,中国LED显示屏市场需求额为49.5亿元,比2006年增长22.2%,这其中全彩显示屏需求额达到21.1亿元,占整体市场的42.6%,双色显示屏的需求额位于第二位,需求额为18.3亿元,占整体市场的40%,单色显示屏需求额为10.1亿元。
[1]
2008年奥运会的召开将会直接推动体育场用屏幕数量的快速增加,同时,由于奥运会用屏对LED显示屏的质量要求也较高,因此,高端屏幕的使用比例也将会增加,数量和质量的提高带动LED显示屏市场的增长。
除了体育场馆之外,奥运会和世博会等重大活动召开的另一直接推动领域就是广告领域国内外的广告公司必然会看好奥运会和世博会带来的商机,因此必然会增加广告用屏的数量来提高自身收入,从而促进了广告用屏市场的发展。
奥运会和世博会等重大活动的召开必然会伴随着很多大型活动,政府、新闻媒体和各种组织都可能会在奥运会和世博会之间举办各种相关活动,某些活动可能需要大屏LED,这些需求直接带动显示屏市场。
目前,国内从事LED显示屏生产的企业众多,同时,受到外资企业LED显示屏价格过高的影响,在中国LED显示屏市场上多以本土企业为主。
目前,本土LED
显示屏生产企业除供应国内需求外,还不断把产品出口到国外市场。
而近年来,受到成本压力的影响,国际上一些知名的LED显示屏企业也逐步把生产基地移到了中国,如巴可在北京设立了显示屏生产基地,Lighthouse在惠州也拥有生产基地,Daktronics、莱茵堡都在国内设立了生产工厂。
随着国际LED显示屏生产大厂不断把生产基地转移至国内,加之国内众多的LED显示屏本土企业,中国正在成为全球LED显示屏的主要生产基地。
因此研究研究LED汉字滚动显示屏的设计方法具有重要的理论和现实意义。
1.2本设计的研究内容及方法
使用传统方法设计LED汉字按显示,即使用AT89C51单片机控制16*16LED屏显示动态汉字,其中主要包括硬件元件及硬件电路,软件编程等。
该方案控制灵活,显示屏的设计具有体积小、硬件少、电路结构简单及容易实现等优点。
LED汉字点阵显示系统是通过控制与组成这些文字的各个点所在位置相对应的LED器件发光来实现的。
通常事先把需要显示的文字转换成点阵图形,在按照显示控制的要求以一定的格式形成显示数据。
对于只控制通断的文字显示屏来说,每个LED发光器件占据数据中的1位(1bit),在需要该LED器件发光的数据中相应的位填1,否则填0。
当然,根据控制电路的安排,相反的定义同样时可行的。
这样依照所需显示的文字,按显示屏的各行各列逐点填写显示数据,就可以构成一个显示数据文件,其格式相对自由,只要能够满足显示控制的要求即可。
文字的点阵格式比较规范,可以采用现行计算机通用的字库字模。
组成一个字的点阵,其大小也可以有16×16、24×24、32×32、48×48等不同规格。
用点阵方式构成文字,是非常灵活的,可以根据需要任意组合和变化,只要设计好合适的数据文件,就可以得到满意的显示效果。
因而对于文字经常需要变化的信息,采用LED汉字点阵显示系统是非常有效的。
为了增强显示效果,LED汉字点阵显示系统可以有多种显示模式。
最简单的显示模式是静态显示。
与静态显示
模式相对应,有各种动态显示模式,它们所显示的文字是动态的。
按照文字运动的特点可分为闪烁、平移、旋转、缩放等多种显示模式。
产生不同显示模式的方法可以通过一定的算法从原来的显示数据直接生成。
例如,按顺序调整行号,可以使显示图文产生上下平移;而顺序调整列显示数据的位置,就可以达到左右平移的目的;同时调整行列顺序,就能得到对角线平移的效果。
其它模式的数据刷新,也可找到相应的算法。
不过当算法太复杂,太浪费时间的话,也可以考虑预先生成刷新数据,存储备用。
本设计以实践为主,通过仿真与实际的演示来完成。
1.3本设计的主要工作
1、用单片机AT89C51及LED点阵显示器为核心器件,制作一个点阵式汉字电子显示屏。
本文介绍了LED点阵汉字显示屏的设计与实现过程。
文中从显示原理和显示屏驱动电路设计,到计算机软件的全部过程都分别做了分析和阐述,并给出了整套系统的解决方案。
该系统以单片机为主来控制整个系统的运行,采用动态扫描方式驱动显示屏主要包括三大部分:
底层硬件的设计、硬件驱动程序设计、PC机方的主控程序。
显示屏的驱动电路设计是整个系统的关键,它的质量优劣直接关系到显示的效果和系统的稳定性。
如何获得最优良的显示效果,如何降低硬件借口复杂度提高系统稳定性,如何降低硬件成本等一系列问题成为设计显示屏系统的重点。
显示屏的控制板是整个显示系统的中枢机构,它是衡量系统的性能的重要指标。
它不仅仅是简单的文字显示功能,而且要表现各种各样的显示效果,还要配合计算机来更新显示信息。
计算机端的软件是控制整个系统的运行控制和信息的加工,它包括信息点阵的提取、参数的设置和信息的传输。
2、完成电路原理图、元器件采购、装配及调试工作。
使用画图软件完成硬件电路的绘制,根据需要采购元器件并进行组装调试。
3、完成该课题的程序设计、提交程序设计框图及程序设计清单。
4、完成硬件与软件的综合调试,能实现预定的功能和主要技术指标。
2硬件电路组成及工作原理
2.1硬件电路组成
本硬件电路采用以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HC154)、16×16LED点阵5部分组成,如图2-1所示。
图2-1硬件电路组成图
2.1.1AT89C51简介
AT89C51是一种带4kB闪烁可编程可擦除只读存储器(FalshProgrammableandErasableReadOnlyMemory,FPEROM)的低电压、高性能CMOS型8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,能够进行1000次写/擦循环,数据保留时间为10年。
他是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
因此,在智能化电子设计与制作过程中经常用到AT89C51芯片。
[2]
2.1.1.1主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
寿命:
1000写/擦循环
数据保留时间:
10年
·全静态工作:
0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
2.1.1.2管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
[3]
2.1.1.3振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
4芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
2.1.2时钟电路设计
时钟电路由AT89C51的18,19脚的时钟端(XTALl及XTAL2)以及12MHz晶振X1、电容C2,C3组成,采用片内振荡方式。
在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。
而在芯片的外部,XTAL1和XTAL2之间跨接晶体震荡器和微调电容,从而构成一个稳定的自激震荡器,这就是单片机的数字电路。
数字电路产生的震荡脉冲经过触发器进行二分频之后,才成为单片机的数字脉冲信号。
一般地,电容C1和C2取30pF左右,可使系统更稳定,避免杂波干扰而导致死机,系统数字电路如图2-2。
晶体的震荡频率范围是1.2~12MHz。
晶体震荡频率高,则系统的数字频率也高,单片机运行速度也就快。
MCS-51在通常情况下,使用震荡频率为6MHz或12MHz。
时钟电路一般有两种接法:
内部时钟方式和外部时钟方式;不同计算机的时钟电路接法是不完全相同的;
(1)内部时钟方式:
通过在引脚XTAL1和XTAL2两端跨接晶体或陶瓷谐振器,再利胙芯片内部的振荡电路,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路;
(2)外部时钟方式:
此方式是利用外部振荡脉冲接入XTAL1,对于AT89C52单片
机,因为内部时钟发生器的信号取自反相放大器的输入端,故采用外部时钟源时,接线方式为外时钟信号接至XTAL1,XTAL2悬空,注意:
外接晶振时,C1和C2值通常选择为20~30PF;外接陶瓷谐振器时,C1和C2为30~50PF;C1、C2对频率有微调作用,影响振荡的稳定性和起振速度。
在这里我们选用的是内部时钟方式
图2-2单片机的时钟电路
复位电路采用简易的上电复位电路,主要由电阻R1,R2,电容C1,开关K1组成,分别接至AT89C51的RST复位输入端。
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第一个取指令。
无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。
AT89C51的系统重置是由RESET引脚控制的,如图2-3所示。
当此引脚送入高电位超过24个震荡周期时(即2个机器周)。
AT89S51即进入芯片内部重置状态,而且一直在此状态下等待,直到RESET为低电位后,才检测EA为高电位或是低电位,若为高电位,则实行内部的程序代码,若为低电位,则实行外部的程序代码。
复位时,ALE和/PSEN呈输入状态,即ALE=/PSEN=1,片内RAM不受复位影响;但在系统刚上电(也称为“冷启动”)时,RAM的内容是随机的。
复位后,P0~P3口输出高电平且使这些双向口皆处于输入状态,并将07H写入堆栈掼针SP,同时将PC和其余专用寄存器清0,此时单片机从起始地址0000H开始重新执行程序。
因此,单片机运行出错或进入死循环时,可使其复位后重新运行。
图2-3单片机的复位电路
AT89C51主要由接收与发送缓冲寄存器SBUF、输入移们寄存器以及串行控制寄存器SCON等组成。
波特率发生器可以利用定时器T1或T2控制发送和接收的速率。
特殊功能寄存器SCON用于存放串行口的控制和状态信息;发送数据缓冲寄存器SBUF用于存准备发送出去的数据;接收数据缓冲寄存器SBUF用于接收由外部输入到输入移位寄存器中的数据。
80C52串行口正是通过对上述专用寄存器的设置、检测与读取来管理串行通信的;在进行串行通信时,外界数据通过引脚RXD输入。
输入数据首先逐位进入输入移位寄存器,由串行数据转换为并行数据,然后再送入接收寄存器。
在接收寄存器中采用了双缓冲结构,以避免在接收到第2帧数据前,CPU未及时响应接收寄存器前一帧的中断请求,没把前一帧数据读走,而造成2帧数据重叠的错误。
在发送时,串行数据通过引脚TXD输出。
由于CPU是主动的,因此不会产生写重叠问题,一般不需要双缓冲器结构。
要发送的数据通过发送控制器控制逻辑门电路逐位输出。
[4]
2.1.416×16LED点阵屏
LED点阵显示屏采用16×16共256个象素的点阵,通过万用表检测发光二极管的方法测试判断出该点阵的引脚分布,如图2-4所示
图2-4LED点阵显示屏底视图
我们把行列总线接在单片机的IO口,然后把上面分析到的扫描代码送人总线,就可以得到显示的汉字了。
但是若将LED点阵的行列端口全部直接接入89S51单片机,则需要使用32条IO口,这样会造成IO资源的耗尽,系统也再无扩充的余地。
因此,我们在实际应用中只是将LED点阵的16条行线直接接在P0口和P2口,至于列选扫描信号则是由4-16线译码器74HC154来选择控制,这样一来列选控制只使用了单片机的4个IO口,节约了很多IO资源,为单片机系统扩充使用功能提供了条件。
考虑到P0口必需设置上拉电阻,我们采用4.7kΩ排电阻作为上拉电阻。
2.2元器件选择
本设计所需元器件如表2-1所示.
表2-1元器件的选择
元件编号
规格参数
作用简介
U1
AT89C51
核心控制芯片(单片机)
LED
16×16LED点阵
组成汉字显示屏
IC2
74HC154
4线-16译码器
IC3IC4
1kΩ电阻
上拉电阻
R1
200Ω
R2
1kΩ
C1
22uF/16v
复位电容
K1
按键开关
X1
12MHz晶振
时钟电路
C1C3
20pF
2.3硬件电路工作原理
汉字扫描显示的基本过程是这样的:
通电后由于电阻R1,电容C1的作用,使单片机的RST复位脚电平先高后低,从而达到复位;之后,在C2,C3,X1以及单片机内部时钟电路的作用下,单片机89C51按照设定的程序在P0和P2接口输出与内部汉字对应的代码电平送至LED点阵的行选线(高电平驱动),同时在P1.1,P1.2,P1.3,P1.4接口输出列选扫描信号(低电平驱动),从而选中相应的象素LCD发光,并利用人眼的视觉暂留特性合成整个汉字的显示。
[5]
3LED汉字显示原理及字库代码获取方法
3.1汉字的点阵显示原理
我们以UCDOS中文宋体字库为例,每一个字由8行8列的点阵组成显示。
我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像。
事实上这个汉字屏不仅可以显示汉字,也可以显示在64象素范围内的任何图形。
如查用8位的AT89C51单片机控制,如图3-1所示
图3-1汉字显示原理
为了弄清楚汉字的点阵组成规律,首先通过列扫描方法获取汉字的代码。
首先将8行分成4位的上、下两部分,把发光的象素位编为0不发光的象素位为1的十六进制代码。
这样就把要显示的“四川汶川”字编为如下代码:
DB0FFH,80H,0BAH,82H,0BEH,82H,0BAH,80H四
DB0FFH,0FDH,83H,0FFH,81H,0FFH,00H,0FFH川
DB0B6H,0D5H,0DEH,45H,9BH,0C5H,0DEH,0DFH汶
DB0FFH,0FDH,83H,0FFH,81H,0FFH,00H,0FFH川
由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出他的扫描代码从而显示在屏幕上。
3.2字库代码获取方法
上述方法虽然能够让我们弄清楚汉字点阵代码的获取过程,但是依靠人工方
法获取汉字代码是一件非常繁琐的事情。
对于16X16十六进制数据的汉字代码