摘要LED显示器由于其价格低廉、体积小、功耗低、可靠性好得到广泛使用,LED点阵显示电子广告牌随处可见。
现在市场上各类基于LED的显示屏较多,但大部分产品为单一模式的LED显示屏,其在显示内容的更换及显示屏的重组等方面都存在不便之处。
随着信息化社会的迅速发展,LED显示屏正在向显示内容丰富、信息更改方便等方面发展。
本系统基于单片机(AT89C51)控制显示汉字采用16×16 LED点阵。
关键词:LED点阵;汉字;信息;单片机目录1 课题描述 (1)2 设计过程 (2)2.1硬件电路设计 (2)2.12硬件电路组成 (2)2.14汉字显示原理及字库代码获取方法 (3)2.2 程序设计 (5)2.21 程序流程图 (5)2.22程序清单 (6)3 测试 (9)4总结 (10)参考文献 (11)1 课题描述目前,国内的LED点阵显示屏大部分是单显示型,其显示的内容相对较少,显示花样较单一。
一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制。
国内的另一种LED显示屏——可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点。
随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换速度快等特点。
因此传统的LED显示屏控制系统已经越来越不能满足现代广告宣传业的需要。
而利用PC机通信技术控制LED显示屏,则具有显示内容丰富,信息更换灵活等优点。
本课题基于单片机(AT89C51)控制汉字显示采用16×16 LED点阵。
开发工具:DICE-51仿真开发系统,Proteus仿真软件。
2 设计过程设计过程主要分为:硬件电路设计,程序设计2.1硬件电路设计2.12硬件电路组成本系统以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HC154)、16×16 LED点阵5部分组成,如图1所示。
使用8×8点阵构建16×16点阵,构造方法如图2。
图1图22.13基本电路工作原理AT89C51是一种带4 kB闪烁可编程可擦除只读存储器(Falsh Programmable and Erasable Read OnlyMemory,FPEROM)的低电压、高性能CMOS型8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,能够进行1 000次写/擦循环,数据保留时间为10年。
他是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
因此,在智能化电子设计与制作过程中经常用到AT89C51芯片。
时钟电路由AT89C51的18,19脚的时钟端(XTALl及XTAL2)以及12 MHz晶振X1、电容C2,C3组成,采用片内振荡方式。
复位电路采用简易的上电复位电路,主要由电阻R1,R2,电容C1,开关K1组成,分别接至AT89C51的RST复位输入端。
LED点阵显示屏采用16×16共256个象素的点阵。
我们把行列总线接在单片机的IO口,然后把上面分析到的扫描代码送人总线,就可以得到显示的汉字了。
但是若将LED点阵的行列端口全部直接接入89S51单片机,则需要使用32条IO口,这样会造成IO资源的耗尽,系统也再无扩充的余地。
因此,我们在实际应用中只是将LED点阵的16条行线直接接在P2口和P3口,至于列选扫描信号则是由4-16线译码器74HC154来选择控制,这样一来列选控制只使用了单片机的4个IO口,节约了很多IO资源,为单片机系统扩充使用功能提供了条件。
汉字扫描显示的基本过程是这样的:通电后由于电阻R1,电容C1的作用,使单片机的RST复位脚电平先高后低,从而达到复位;之后,在C2,C3,X1以及单片机内部时钟电路的作用下,单片机89C51按照设定的程序在P2和P3接口输出与内部汉字对应的代码电平送至LED点阵的行选线(高电平驱动),同时在P1.1,P1.2,P1.3,P1.4接口输出列选扫描信号(低电平驱动),从而选中相应的象素LCD发光,并利用人眼的视觉暂留特性合成整个汉字的显示。
2.14汉字显示原理及字库代码获取方法我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。
即国标汉字库中的每一个字均由256点阵来表示。
我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像。
事实上这个汉字屏不仅可以显示汉字,也可以显示在256象素范围内的任何图形。
如查用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。
为了弄清楚汉字的点阵组成规律,首先通过列扫描方法获取汉字的代码。
汉字可拆分为上部和下部,上部由8×16点阵组成,下部也由8×16点阵组成。
本例通过列扫描方法首先显示左上角的第一列的上半部分,即第0列的P2.0~P2.7口,方向为P2.0到P2.7,显示汉字“大”时,P2.5点亮,由上往下排列,为:P2.0灭,P2.1灭,P2.2灭P2.3灭,P2.4灭,P2.5亮,P2.6灭,P2.7灭。
即二进制00000100,转换为十六进制为04h。
上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从P3.7向P3.0方向扫描,这一列全部为不亮,即为00000000,十六进制则为00h。
依照这个方法转向第二列、第三列,…,直至第十六列的扫描,一共扫描32个8位,可以得出汉字“大”的扫描代码,由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出他的扫描代码从而显示在屏幕上。
上述方法虽然能够让我们弄清楚汉字点阵代码的获取过程,但是依靠人工方法获取汉字代码是一件非常繁琐的事情。
为此,我们经常采用字库软件查找字符代码,软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到程序中即可,如图3所示。
图 2可见,汉字点阵显示一般有点扫描、行扫描和列扫描3种。
为了符合视觉暂留要求,点扫描方法的扫描频率必须大于16×64=1 024 Hz,周期小于1 ms 即可。
行扫描和列扫描方法的扫描频率必须大于16×8=128 Hz,周期小于7.8 ms 即可,但是一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。
2.2 程序设计2.21 程序流程图软件程序主要由开始、初始化、主程序、字库组成。
其中主程序和子程序的流程图如图4和图5所示图3主程序流程图图表 4子程序流程图2.22程序清单ORG 0000HLJMP MINORG 0030HMIN: MOV SP,#60HMIX: SETB P1.0MOV 30H,#10HMOV DPTR,#TABL1: LCALL MICCLR CMOV A, DPLADD A, #32MOV DPL,AMOV A, DPHADDC A, #00HMOV DPH, ADJNZ 30H,L1LJMP MIXMIC: SETB P1.0LP: MOV 31H, #80 LOOP: MOV 32H,#16MOV R1,#1EHMOV R2,#00HEN:MOV A,R2MOVC A, @A+DPTRMOV P2,AINC R2MOV A,R2MOVC A,@A+DPTRMOV P3,AINC R2MOV A, R1MOV P1,ALCALL DELSETB P1.0RR ADEC ARL AMOV R1,ADJNZ 32H,ENDJNZ 31H,LOOPRETDEL : MOV 34H,#2DL0: MOV R4, #250DJNZ R4,$DJNZ 34H,DL0RETTAB:;计db 02H,00H,02H,00H,42H,00H,33H,0FEH db 00H,04H,02H,08H,02H,10H,02H,00Hdb 02H,00H,0FFH,0FFH,02H,00H,02H,00H db 02H,00H,06H,00H,02H,00H,00H,00H; ;算db 10H,10H,20H,10H,0C0H,11H,5FH,0D2H db 75H,7CH,55H,50H,55H,50H,35H,50Hdb 0D5H,50H,55H,50H,75H,7FH,5FH,0D0H db 40H,10H,40H,30H,00H,10H,00H,00H; ;机db 08H,20H,08H,0C0H,0BH,00H,0FFH,0FFH db 09H,01H,08H,82H,00H,04H,3FH,0F8Hdb 20H,00H,20H,00H,20H,00H,7FH,0FCH db 20H,02H,00H,02H,00H,0EH,00H,00H; ;科db 24H,08H,24H,10H,24H,60H,25H,80Hdb 7FH,0FFH,0C5H,00H,44H,80H,00H,40H db 24H,40H,12H,40H,00H,40H,0FFH,0FFH db 00H,80H,01H,80H,00H,80H,00H,00H; ;学db 02H,20H,0CH,20H,88H,20H,69H,20Hdb 09H,20H,09H,22H,89H,21H,69H,7EHdb 09H,60H,09H,0A0H,19H,20H,28H,20H db 0C8H,20H,0AH,60H,0CH,20H,00H,00H; ;与db 00H,10H,00H,10H,00H,10H,0FFH,10H db 11H,10H,11H,10H,11H,10H,11H,10Hdb 11H,10H,11H,32H,11H,11H,11H,02Hdb 33H,0FCH,11H,00H,00H,00H,00H,00H; ;机db 08H,20H,08H,22H,08H,41H,0FFH,0FEH db 08H,80H,08H,01H,11H,81H,11H,62Hdb 11H,14H,0FFH,08H,11H,14H,11H,64H db 31H,82H,10H,03H,00H,02H,00H,00H; ;术db 04H,08H,04H,08H,04H,10H,04H,20Hdb 04H,40H,04H,80H,05H,00H,0FFH,0FFH db 05H,00H,44H,80H,24H,40H,34H,20Hdb 04H,10H,0CH,18H,04H,10H,00H,00H; ;史db 08H,10H,08H,20H,08H,0C0H,0BH,00H db 0FFH,0FFH,09H,00H,08H,90H,00H,20H db 08H,0C0H,0BH,00H,0FFH,0FFH,09H,00H db 08H,0C0H,18H,60H,08H,40H,00H,00H; ;明db 04H,44H,0CH,0C6H,35H,44H,0C6H,48H db 0CH,48H,00H,0FCH,3EH,80H,2AH,80H db 6AH,80H,0ABH,0FFH,2AH,80H,2AH,88H db 7EH,84H,21H,0F8H,00H,80H,00H,00H; ;祥db 04H,44H,0CH,0C6H,35H,44H,0C6H,48H db 0CH,48H,00H,0FCH,3EH,80H,2AH,80H db 6AH,80H,0ABH,0FFH,2AH,80H,2AH,88H db 7EH,84H,21H,0F8H,00H,80H,00H,00H END在完成编写程序的编译和仿真之后,运行测试结果每个字显示完后向右移,依次显示“陕西理工学院计算机科学与技术史明祥”,如图6显示“林”时的结果。