基于单片机的LED显示屏设计
2023-01-11王丹
王 丹
(河南省煤炭科学研究院有限公司,河南 郑州 450001)
通过LED显示屏的不断发展与更新,其已是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统,LED 大屏幕显示器由于其醒目、内容灵活多变、亮度高、寿命长、工作稳定可靠等特点,已经越来越多地应用于广告、信息发布、交通指示等公共场所,取得了良好效果。
本设计利用LED显示屏的显示原理[1]结合单片机的强大功能,设计出一个既简单容易又有实际功能的LED显示屏。本文是充分利用单片机的AT89C51的资源,在尽量节省单片机I/O口的基础上用它其中的一些I/O口来模拟串口实现显示屏显示信息的。文中电路简单易懂,更重要的是在节省单片机I/O口是为了在有必要时实现其扩展功能,实现更大规模的LED显示屏显示信息,同时也可以在此系统的基础上添加通信部分(计算机),实现单片机与计算机之间的串口通信,使显示屏能灵活地显示所需要的信息。
1 系统整体设计及电路设计
LED点阵显示屏可以通过计算机将要显示的汉字信息提取出来,并发送给单片机,然后单片机做出相应处理后将该汉字信息显示在点阵显示屏上。这些功能的实现只需要在此系统的基础上添加(PC)机通信模块即可,即每当向计算机客户程序里输入新显示内容通过MAX232并实现232电平和单片机的TTL电平的转换后发送给单片机时,单片机就产生串行中断,接受待显示信息的机内码,以便根据机内码在字库中寻址,找到对应的字模,提取后再送到点阵显示屏显示。
本系统设计以AT89C51单片机系统为核心[2-8],外围控制电路由移位锁存器74HC595来控制LED显示屏的列数据输入,由单片机的P1口的低四位来控制行扫描信号的输出至译码器74HC154进行译码选择行片选信号,在行扫描信号和列数据信号的配合使用下最终驱动LED显示屏显示信息。本设计是利用单片机的I/O口来模拟串口实现显示信息的,在本设计系统的基础上只要添加上(计算机)通信部分,就可以实现单片机与计算机的串口通信来灵活控制显示屏的显示。系统总体设计如图1所示。
图1 总体设计Fig.1 Overall design
2 系统各部分设计
2.1 控制部分
本设计以单片机AT89C51系统为控制核心,利用单片机的I/O口来模拟串口通过行列驱动电路来控制LED显示屏的显示[9]。
2.1.1 控制部分设计方案
本次设计的LED显示屏是以单片机系统为控制核心,通过行列信号的输出控制实现汉字显示,并采用单片机的I/O口来模拟串口实现显示屏显示。若在本设计的基础上添加通信部分,实现单片机与计算机的串口通信,但这些必须通过电平转换部分方可实现通信。所以设计时要综合考虑以下方案的选取。
(1)主控芯片的选择。在使用专用的LED控制芯片的情况下,其价格昂贵而且需要更多的控制信号,而且芯片的级联不方便。
由于80C51单片机提供了足够的内存来作为数据缓冲区对显示数据进行存储,同时还可以用译码器74HC154和移位锁存器74HC595来分别实现LED点阵显示的行列控制,其特点是控制信号简单,级联方便,芯片数量少。
综合考虑,采用以单片机AT89C51系统为主控芯片。
(2)电平转换芯片的选择。添加通信模块后即可实现单片机与计算机串口通信,由于单片机AT89c51串行口采用的是TTL电平,必须有电平转换电路,可以选择1488、1489、MAX232A。
2.1.2 控制部分
本设计以单片机AT89C51系统为控制核心,利用单片机的I/O口来模拟串口通过行列驱动电路来控制LED显示屏的显示。若在此系统的基础上添加(计算机)通信模块,即可实现单片机与计算机的串口通信来灵活控制LED显示屏的显示。即从计算机中输入汉字信息后将要显示的汉字信息通过MAX232电平转换最终送到单片机AT89C51的RXD和TXD中,从而实现与单片机之间的串口通信。其总体控制框图如图2所示。
图2 系统控制框图Fig.2 System control block diagram
AT89C51是低电压、高性能的CMOS8位单片机片内4 Kbytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。
2.2 列驱动部分及电路设计
由单片机串行输出列数据信号,经74HC595移位锁存器的数据端接收,在时钟信号的控制下列数据信号经移位、锁存输出至显示屏。所以,设计时就需要综合考虑来选择列驱动芯片。
此次设计是上部分16×16 LED显示单元列驱动的两片74HC595相应的SCK/SHcp并联为UP_SCK,作为统一的串行数据移位信号,下部分显示单元的列驱动相应的SCK/SHcp并联为DN_SCK也作为统一的串行数据移位信号,且上部列驱动的SI/Ds端与下部的SI/Ds端是并联接到单片机的串口输出数据端的,此时是用单片机的定时中断T0、T1来选通是上部还是下部的列驱动。但各片列驱动的SRCLR*,RCK/STcp端确是分别并联串行数据清除信号和输出锁存器信号。其显示驱动原理如图3所示。
图3 显示驱动电路原理Fig.3 Display driving circuit principle
在电路安排上,上下两部分的列串行数据输入端(各自第一片的Ds/SI)是并联的,上下两部分的RCK信号和SRCLR*信号也是并联的,而SCK信号则是分开控制的。上下部分的信号与控制的安排如图4所示。
图4 32行方案上下部分的处理方法Fig.4 Processing method of upper and lower parts of 32 line scheme
2.3 行驱动部分
由单片机输出的行扫描信号,要使行号不会出现瞬间消失的现象,必须经74HC373锁存器进行锁存后发至译码器74HC154再进行译码产生行驱动部分。
2.4 显示部分
显示屏的显示部分是本次设计最关键的部分,本文设计的是32×16点阵显示屏,把该显示屏划分为上屏和下屏部分,分别为16×16点阵显示单元进行显示。该设计是对LED显示屏进行硬件扫描,从而实现显示屏扫描显示的,但是采用静态扫描还是动态扫描,从显示实现的难易和显示的效果来分析,必须综合考虑硬件扫描的方式。
2.4.1 点阵LED
LED点阵是显示屏最基本的组成单元,本设计的LED显示屏是基于8×8 LED点阵模块拼接而成的。目前市场上LED种类繁多,不同的厂家有其不同的型号,所以其各引脚的阴阳极的顺序也各不相同。8×8 LED点阵图如图5所示。
图5 8×8点阵模块图Fig.5 8×8 lattice module diagram
2.4.2 LED显示单元的拼接
4块LED的连接:在点阵显示中,以4块8×8点阵LED构成一个LED显示单元,因此就假如图6中1、2、3、4,各代表一块8×8点阵LED,4块连接起来就为一块16×16的点阵LED。
图6 4块LED模拟Fig.6 Four LED analog
4块的连接情况是1、2和3、4的阳极按123…的顺序连接,拉出16根线,经反相缓冲器240接到1块74HC154译码器和1块373行锁存器最后接到单片机的P1口的低4位上为行选扫描,是为行送笔画;1、3和2、4的阴极按ABC…的顺序连接,拉出16根线,经过595移位锁存器接到单片机的I/O口,为列送笔画。
3 软件设计
主要介绍软件实现的功能流程,具体分析各个模块的驱动程序,这样可以进一步理解各个模块的功能实现原理,然后进一步介绍字模的提取及其工作原理。
3.1 总体软件实现流程
在电路安排上,上下两部分的列串行数据输入端(各自第一片的SI/Ds)是并联的,上下两部分的RCK/STcp信号和SRCLR*/MR*信号也是并联的,而SCK/SHcp信号则是分开控制的。本硬件电路的流程如图7所示。
图7 系统设计流程Fig.7 System design process
由于本设计是使用单片机的I/O口来模拟串口来通信的,所以只要求硬件系统的设计与程序编写,本程序用C语言编写,其中大部分都是用来显示字模的程序。
本设计是采用动态的扫描,即逐行扫描,实际上每次点亮的是一行,但由于间隔时间短,又是动态扫描,给人的感觉就是1个字全亮的,又因为扫描1次结束,字形码增加2个字节,在从第1行扫描,这样给人的感觉就是滚动的效果了。
3.2 字模的提取
3.2.1 字模的功能
字模提取软件有很多种,本文选择了Super LDM Char Code V1.0,具体有以下特点:①生成中英文数字混合的字符串的字模数据;②可选择字体、字号,并且可独立调整文字的长和宽,生成任意形状的字符;③任意调整输出点阵大小,并任意调整字符在点阵中的位置;④字模数据输出可自定义各种格式,系统预设了C语言和汇编语言两种格式,及电路图的行列扫描方式,并且可自己定义出新的数据输出格式;每行输出数据数量可调;⑤图形模式下可任意用鼠标作画,左键画图,右键擦图;⑥旋转、翻转、平移等字符模式下的功能,也可以用于对BMP图像的处理。
3.2.2 提取字模
首先设置好要提取的是16×16的字模,宋体字,其他均为默认设置,输入要显示的汉字[9],如“毕业设计”首先输入“毕”就会立刻显示其单片机识别的16进制代码,然后就分别输入“毕业设计”显示的代码直接复制到程序。
4 结语
本设计是利用单片机的I/O口来模拟串口实现汉字显示的,完全可以在该设计系统的基础上添加计算机通信模块,实现计算机与单片机之间的串口通信来控制显示屏的显示内容。在此原理基础上设计出实用的低成本的LED显示系统。现在单片机的应用越来越广泛,单片机与计算机之间的通信是一个非常重要的应用。
在本文中提出了以成本较低的AT89C51单片机控制系统为核心的LED屏幕汉字显示系统,该系统通过反复的动态扫描又根据人眼的暂留效应就可以实现汉字的动态显示了,本系统采用了模块化设计,可以通过简单的级联对系统的显示模块和扫描模块进行扩展。