四字LED点阵显示屏的制作
扫描二维码
随时随地手机看文章
随着LED的快速发展,大街小巷到处都可见到行行色色LED广告屏。它以其高亮度,低功耗。显示内容易改等特点备受青睐,于是笔者动手制作了一个四字LED点阵显示屏,现介绍给大家,以供参考。
一、显示汉字原理
我们以UCDOS中文宋体"大"字库为例,如图1所示。每一个字由16行16列的点阵组成显示。
即国标汉字库中的每一个字均由256点阵来表示。
我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示256像素的图片。
图1显示宋体"大"字实例。
图2是8X8点阵的原理图。其实就是64个发光二极管。以8X8矩阵的形式连接在一起,要完整显示一个汉字需要256个像素点,所以要四块8×8点阵拼起来用,变成16×16个点。其点阵显示的原理是将51单片机的P0 P2口接点阵的16个行,然后第0列送高电平。单片机是低电平有效。也就是说现在P0 P2的16个口中那个口有低电平,其相应的LED亮,现在还以"大"为例P0 El送11011111,P2 El送1111 1111既PO=0xdf,P2=0xff,然后延时一段时间,关闭第0列,打开第1列,既送高电平,此时P0=0xdf.P2=0xbf,再延时一段时问……一直到16列送完。再重复从第0列循环。利用人眼的视觉暂留效应,感觉显示的是稳定的汉字。
图2 8x8点阵的原理图
二、采用行扫描列送数方式
我们在这里采用行扫描列送数的方式(如图3所示),有点阵的行线接在一起,变成了16根行线。
图3行扫描列送数框图
扫描16根行线达到整屏扫描的效果,硬件可以采用4线--16线译码器74LSl54,代替PO、P2的循环扫描,由于笔者手头没有74LSl54故采用两个3线--8线的译码器74LSl38串接实现,如图4所示。
行扫描共用五根线实现(A、B、C、D和使能端G1),其中D为第一块138的E3和第二块138的E1并接,G1为第一块138的E2和第二块138的E2并接。(低电平有效)。
列上我们用串口转并口的移位寄存器,可以达到用一根线就可以实现数据的传输,这在硬件上无疑是非常经济的。这样各行的显示就分成了两部分既数据的传输和数据显示。但是串行传输缺点就是慢,需等待数据传送完成,才打开相应的行,为解决串行传输中列数据传输和显示时间的矛盾问题,可以采用重叠的方法。即显示一行数据的同时送下一行的数据。这样硬件就需要有锁存的功能。
经上述分析。列储存器应具备两种功能:一是串入并出的移位功能,二是具有并行锁存的功能。所以笔者采用了具有串入并出并带有锁存的移位寄存器74LS595.这样,本行的显示数据打入锁存器显示时,串13寄存器就开始下一行的数据的移位。从而不会影响本行的显示时间,大大的提高了显示的亮度。
三、硬件选择
主控芯片选择的是STC89C52单片机,内部带有8k的储存储存空间,采用12MHz的晶振。提高刷新频率,使显示更加稳定。同时采用P2"O~P2'3做行循环扫描,P247为译码器的使能端,P1"5为发数控制信号,TXD为移位脉冲输出端,RXD为显示数据输出端。P0、P2暂时空闲。用于扩展系统ROM和RAM.显示原理图如图5(仅参考并非真实电路图)。
图5
主要元器件的选择:行扫描芯片为两块74LSl38.移位寄存器为74LS595,晶振为12MHz,点阵限流电阻为470Q(改变大小可改变屏的亮度)。行驱动三极管为8550.
四、软件设计
软件流程图如图6所示。
图6软件流程图
软件的设计主要由主程序,初始化子程序,中断扫描子程序,显示程序等组成。C语言由于具有移植性强。可以实现复杂运算,函数化结构,可以直接进行位运算,非常适合初学者学习等优点。所以本程序采用C语言编写。在KEIL 51环境下调试,PROTEuS下仿真。
部分程序解释如下:
初始化程序:
中断扫描程序:
程序仿真效果图如图7所示。
图7
注:由于点阵的接线用了网络标号,所以屏中出现了八条红色的竖线,影响了仿真效果。
图8
五、硬件的焊接与调试
显示部分采用一块带驱动电路,主控板一块,显示板由于线路复杂、接线多、所以采用双面布线。
主控板其实就一个STC89C52 的单片机,外接最小系统(晶振和复位),并引出九根线控制线。比较简单,这里采用万能实验板制作,如图9 所示。
图9 实物照片
显示结果如图10 所示。
图10 显示结果示意
结束语
最后需要说明的是,该显示屏的不足之处就是汉字的编码和程序一起烧上。显示内容修改还需重新再烧一次。如有高手能编写上位机软件与单片机通信,利用PC 机在线修改显示内容,则会使条屏更加简单实用。