点阵式汉字显示屏的设计.docx
《点阵式汉字显示屏的设计.docx》由会员分享,可在线阅读,更多相关《点阵式汉字显示屏的设计.docx(11页珍藏版)》请在冰豆网上搜索。
点阵式汉字显示屏的设计
点阵式汉字显示屏的设计
随着电子技术和信息技术的迅速发展,计算机技术正在日益渗透到人们日常生活的方方面面,在这一进程中,单片机起到了重要作用。
LED显示屏作为一种新型的显示器件,是由多个发光二极管按矩阵形式排列封装而成,通常用来显示时间、图文等信息,由点阵LED组成的汉字显示屏在工程所应用非常广泛。
LED显示屏显示画面色彩鲜艳、静如油画、动如电影、立体感强、广泛应用于摸头车站、商场、机场、宾馆、银行、医院、证劵市场、拍卖行、建筑市场、工业企业管理和其他公共场所。
在实际应用中的显示屏由于成本和可靠性的因素常常采用一种称之为动态扫描的显示方法。
本文设计的是一个室内用6X16的点阵LED图文显示屏,图像或文字显示有静止,移入和移出等显示方式。
本设计是基于MCS-51单片机的16X16显示屏,其中包括了软件、硬件、调试等方案的设计。
此外,该设计只需要简单的级联聚能实现显示屏的扩展,只是级联时要注意不要超过驱动负载范围。
目 录
1、引 言
LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕.它具有发光率高使用寿命长、功耗小、微型化、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。
并广泛的应用于公交汽车、码头、商店、学校教务和银行等公共场合用于信息的发布和广告的宣传。
LED显示屏经历了从单色、双色突围显示屏直到现在的全彩色视频显示屏的发展过程,致20世纪八十年代开始。
LED显示屏的应用领域已经遍布了交通、电信、教育、证劵、广告宣传等各方面LED显示屏发展较快。
其无论在成本和产生的社会效益等方面都有其独特的优势。
2、设计内容及设计方案
2.1、总体设计方案和论证
2.1.1、LED显示屏控制系统设计
LED显示屏控制系统实现显示信息的刷新技术现有两种方式即动态扫描和静态锁存。
方案一:
静态锁存,即每一个发光一极管都对应有一个驱动寄存器,从而保证了每一个发光一极管的亮度占空比为100%;
方案二:
动态扫描,即一行发光二极管共用一行驱动寄存器,根据共用一行驱动寄存器的发光二极管像素数目,分为1/4,1/16扫描等;
静态锁存虽然设计简单但是用的管脚太多,如果采用这种设计花销太大。
而动态扫描法可以大大减少控制器的I/O口。
因此在实际应用中的显示屏几乎都不采用静态锁存,而采用动态扫描的显示方法。
所以本设计选用方案二。
LED显示屏的数据传输方式主要有串行和并行两种。
目前普遍采用串行控制技术,显示屏每个单元内部的不同驱动电路和各级联单元之间,每个时钟仅传送一位数据。
采用这种方式的驱动IC种类较多,不同显示单元之间的联线较少,可减少显示单元的数据传输驱动元件,从而提高整个系统的性价比和可靠性,具体工程实现比较容易。
因此本设计采用串行控制技术。
2.1.2、系统模块化设计
因学习的单片机以51单片机为主,所以本系统以单片机AT89C51为LED显示屏的控制核心、系统主要包括LED8×8点阵显示模块、74ls154译码器等。
图1-1总体硬件组成框图
系统框图如图1-1所示,系统主要由三大模块组成即AT89C51单片机、74ls154译码器,8×8LED点阵显示模块。
2.2、设计要求
根据上面设计方案的选择及论证结果提出了设计要求。
以MCS-51系单片机为核心器件,组成电阵式汉字电子显示屏。
显示屏游16*16LED点阵显示器组成,可依次显示4个汉字。
通过编程可以对汉字修改。
3、系统设计
3.1、硬件设计
3.1.1、硬件电路的组成及工作原理
本设计采用以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HCl54)、16×16LED点阵5部分组成,如图1所示。
其中,AT89C51是一种带4kB闪烁可编程可擦除只读存储器(FalshProgrammableandErasableReadOnlyMemory,FPEROM)的低电压、高性能CMOS型8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,工业标准的MCS一5l指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,能够进行1000次写/擦循环,数据保留时间为10年。
他是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
因此,在智能化电子设计与制作过程中经常用到AT89C51芯片。
时钟电路由AT89C5l的18,19脚的时钟端(XTAIl及XTAL2)以及12MHz晶振X、电容C2、C3组成,采用片内振荡方式。
复位电路采用简易的上电复位电路,主要由电阻R,R2,电容C,开关K组成,分别接至AT89C51的RST复位输入端。
LED点阵显示屏采用16×16共256个象素的点阵,可通过万用表检测发光二极管的方法测试判断出该点阵的引脚分布。
我们把行列总线接在单片机的I/0口,然后把上面分析到的扫描代码送入总线,就可以得到显示的汉字了。
但是若将LED点阵的行列端口全部直接接入89S51单片机,则需要使用32条I/0口,这样会造成I/0口资源的耗尽,系统也再无扩充的余地。
因此,我们在实际应用中只是将LED点阵的16条行线直接接在P0口和P2口,至于列选扫描信号则是由4—16线译码器74HCl54来选择控制,这样一来列选控制只使用了单片机的4个I/O口,节约了很多I/O口资源,为单片机系统扩充使用功能提供了条件。
考虑到P0口必需设置上拉电阻,我们采用4.7kΩ排电阻作为上拉电阻。
汉字扫描显示的基本过程是这样的:
通电后由于电阻R,电容c1的作用,使单片机的RST复位脚电平先高后低,从而达到复位;之后,在C、C3、X以及单片机内部时钟电路的作用下,单片机89C51按照设定的程序在P0和P2接口输出与内部汉字对应的代码电平送至LED点阵的行选线(高电平驱动),同时在P1.1,P1.2,P1.3,P1.4接口输出列选扫描信号(低电平驱动),从而选中相应的象素LED发光,并利用人眼的视觉暂留特性合成整个汉字的显示。
再改变取表地址实现汉字的滚动显示。
图3-1硬件电路组成
3.1.2、8×8LED点阵显示模块的硬件设计及工作原理
8×8LED点阵显示模块是LED显示屏设计的关键部分,共阴和共阳接法设计的好坏直接关系到LED显示屏的亮度、稳定度等重要指标。
给出8×8点阵LED的工作原理。
图3-5为8×8点阵LED外观及引脚图,其等效电路如图3-6所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。
例如如果想使左上角LED点亮,则Y0=1,X0=0即可。
应用时限流电阻可以放在X轴或Y轴。
图3-58×8点阵LED外观及引脚图
图3-68×8点阵LED等效电路
由8×8点阵LED的工作原理图以及8×8点阵LED外观及引脚图和其等效电路,可得出16×16点阵LED显示汉字的工作原理:
16×16点阵LED显示器有两种接线形式,即共阴接法和共阳接法。
共阳接法的原理图如图3-6所示,图中只画出了8×8点阵的二极管。
每一行发光二极管的阳极接在一起,有一个引出端X,每一列发光二极管的阴极接在一起,有一个引出端Y。
当给发光二极管阳极引出端X0加高电平,阴极引出端Y0加低电平时,左上角的二极管点亮。
因此,对行和列的电平进行扫描控制时,可以实现显示不同汉字的目的。
3.2、系统的软件设计
软件是该LED显示屏控制系统的重要组成部分,在系统的软件设计中我们也采用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。
3.2.1、软件流程
本系统中(单片机89C51)的主要功能就是实现LED显示屏上字样的移位、显示、数据的读取等功能。
其主程序流程如图3-1所示。
开机
系统初始化
否
是
判断是否处于通状态?
移位显示
读取显示内容
图4-1主程序流程图
读取AT89C51的ROM中的标志位
等待
判断是否有中断标志?
是
否
3.2.2、汉字的表示及编码原理
UCDOS软件中的文件HZK16和文件ASC16分别为16×16的国标汉字点阵文件和8×16的ASCII码点阵文件,以二进制格式存储。
在文件HZK16中,按汉字区位码从小到大依次存有国标区位码表中的所有汉字,每个汉字占用32个字节,每个区为94个汉字。
在文件ASC16中按ASCII码从小到大依次存有8×16的ASCII码点阵,每个ASCII码占用16个字节。
在PC机的文本文件中,汉字是以机内码的形式存储的,每个汉字占用两个字节:
第一个字节为区码,为了与ASCII码区别,范围从十六进制的0A1H开始(小于80H的为ASCII码字符),对应区位码中区码的第一区;第二个字节为位码,范围也是从0A1H开始,对应某区中的第一个位码。
这样,将汉字机内码减去0A0AH就得该汉字的区位码。
例如汉字“房”的机内码为十六进制的“B7BF”,其中“B7”表示区码,“BF”表示位码。
所以“房”的区位码为0B7BFH-0A0A0H=171FH。
将区码和位码分别转换为十进制得汉字“房”的区位码为“2331”,即“房”的点阵位于第23区的第31个字的位置,相当于在文件HZK16中的位置为第32×[(23-1)×94+(31-1)]=67136B以后的32个字节为“房”的显示点阵。
在本单片机系统中,起始地址的高4位为页号,送P1口,低15位为数据区地址,送指针DPTR。
利用“MOVX”指令连续取32个字节送LCD的相应位置,就能实现正确的汉字显示。
ASCII码的显示与汉字的显示基本原理相同。
在文件ASC16中不存在机内码的问题,其显示点阵直接按ASCII码从小到大依次排列,只是每个ASCII码在文本文件中只占1个字节且小于80H,而且ASCII码为8×16点阵,所以在ASCII16文件中,每个ASCII码的点阵也只占16个字节。
首先提取16×16的国标汉字点阵和8×16的ASCII码点阵(如UCDOS软件中的HZK16和ASC16)并将其直接写入29F040。
其中HZK16(共256KB)点0~7页。
为了便于编程,ASC16虽然只有4KB,也单独占用第8页。
其余剩下的空间用来存储汉字语句的编码。
由于240×128点阵的LED显示器每个只能显示15个汉字(16×16点阵汉字),即30个字节。
所以可将需要显示的语句按30个字节为1行进行编写,不足30个字符的则补空格。
在PC机上进行录入时,每行30个字符再加上回车键和换行符,实占32个字符。
所录入的语句以纯文本形式存盘,再将该文本文件以二进制的形式写入29F040的第9页。
那么,以后根据需要显示的语句行号便可以进行正确的显示。
此,作者推出荐使用DOS版本的WPS软件的“编辑非文收文件”功能,它能清楚地显示每行是否有30个字符。
3.2.3、提取汉字的软件的设计与实现
我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。
即国标汉字库中的每一个字均由256点阵来表示。
我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。
事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。
图4-2
用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。
一般我们把它拆分为上部和下部,上部由8*16点阵组成,下部也由8*16点阵组成。
在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00---p07口。
方向为p00到p07,显示汉字“小”时,p05点亮,由上往下排列,为p0.0灭,p0.1灭,p0.2灭p0.3灭,p0.4灭,p0.5灭,p0.6灭,p0.7灭。
即二进制00000000,转换为16进制为00h.。
上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从p27向p20方向扫描,从上图可以看到,p2.4亮,即为00000100,16进制则为04h。
然后单片机转向上半部第二列,全不亮,为00000000,即16进制00h.
这一列完成后继续进行下半部分的扫描,p2.5点亮,为二进制00000101,即16进制20h.
依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“小”的扫描代码为:
DB00,00,00,10H,00,20H,00,40H
DB01,80H,06,02,00,01,0FFH,0FEH ;小
DB00,00,04,00,02,00,01,00
DB00,80H,00,60H,00,00,00,00
由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。
本系统的取字模软件主要是编辑LED显示屏显示的内容,在设计中采用汇编语言写了LED显示屏控制系统的内容下载软件。
软件界面如图4-3所示。
该软件的主要是对输入的汉字取点阵数据如下:
软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到我们的程序中即可。
小:
DB00,00,00,10H,00,20H,00,40H
DB01,80H,06,02,00,01,0FFH,0FEH
DB00,00,04,00,02,00,01,00
DB00,80H,00,60H,00,00,00,00
心:
DB00,20H,00,40H,03,80H,00,00
DB0FH,0FCH,00,02,80H,02,40H,02
DB38H,02,10H,02,00,02,00,0EH
DB02,00,01,00,00,0E0H,00,00
慢:
DB02,00,1CH,00,00,00,0FFH,0FFH
DB10H,00,0BH,0C1H,0FAH,51H,0AAH,5AH
DB0ABH,0D4H,0AAH,54H,0ABH,0D4H,0AAH,5AH
DB0FAH,52H,07,0C1H,02,01,00,00
行:
DB00,40H,08,80H,11H,00,23H,0FFH
DB0C4H,00,02,00,42H,00,42H,00
DB42H,00,42H,02,42H,01,43H,0FEH
DB0C2H,00,46H,00,02,00,00,00
END
4、系统调试
根据系统设计方案,本系统的调试共分为三大部分:
硬件调试,软件调试和软硬件联调。
由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:
LED显示模块的调试等,最后将各模块组合后进行整体测试。
4.1、硬件调试
对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。
4.2、软件调试
软件调试采用uVision3集成开发环境及微机,将编好的程序进行调试,主要是检查语法错误。
μVision2IDE基于Windows的开发平台,包含一个高效的编辑器,一个项目管理和一MAKE工具。
μVision2支持所有的keilc51工具。
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势,包括C编辑器。
宏汇编器,连接/定位器,目标代码到HEX的转换器。
图5-1μVision2界面
4.3、硬件软件联调
将调试好的硬件和软件进行联调,主要调试系统的实现功能。
5、总结
在点阵式汉字显示屏的设计过程中,学到了很多东西,也遇到了好多问题。
例如我学会了在进行设计前要根据所需先分析,然后选择合适的单片机型号。
在对各个硬件模块进行测试时,要保证软件正确的情况下去测试硬件,要不然发生错误时,不知道到底是哪一方出错了。
也曾遇到过好多问题,如因一时的不注意程序编写过程中小细节出错导致整个程序出错;等等一些问题让我的这次设计困难重重。
不过在老师的悉心指导下我慢慢地克服了这些困难,最终完成了这次设计,虽然实验结果并没有达到最完美。
但这次设计开发,让我受益非浅,在以后的开发过程中一定以一个严谨的态度去设计,而且事事仔细以减少不必要的错误。