基于STC89C52单片机的16×16点阵屏的设计
作者: 赵涟漪
关键词:STC89C52;二极管;LED点阵显示模块;Proteus仿真软件
中文分类号:TH-39 文献标识码:A
文章编号:1009-3044(2023)22-0064-03
LED大屏幕点阵显示器一般应用于广告宣传、新闻传播等场合,不仅能显示文字、图形、动画等,还可以单色和彩色显示。LED点阵显示器是把LED按矩阵方式排列在一起,为了完成字符、文字或图形等的显示,可以通过控制不同位置的LED的亮灭来实现[1]。本文根据点阵显示器的原理,结合Protues仿真软件,实现了16×16点阵系统的字符显示功能。
1 LED 点阵系统的设计
此系统主要由以下部分构成:+5V 电源、16× 16LED点阵显示器、74LS138和74HC595行列驱动电路、单片机最小系统单元。通过STC89C52单片机控制驱动电路实现LED点阵显示,由此可以得到系统设计结构图如图1所示。
2 系统的硬件电路设计
2.1 LED点阵显示器的结构
在电子市场有专门的8×8LED点阵显示器模块产品,如图2(a) 所示,它有64个像素,可以显示一些比较简单的字符或图形。其内部电路结构分为8条行线和8条列线,行和列的交叉处有一个LED,所以每一片8×8的点阵点64个LED构成,内部结构如图2(b)所示。
对于LED的显示方法通常有两种:一是点亮若干个LED灯,使得亮的LED灯构成要显示的字符;二是与其相反,点亮其他的LED灯,使不亮的LED灯组合成字符,通常情况下,人们选择第一种方式。例如显示数字“1”,显示效果如图3所示。
2.2 16×16LED点阵显示屏
4块8×8点阵可通过将上面2片LED点阵模块的行并联在一起组成ROW0-ROW7,下面2片点阵模块的行并联在一起组成ROW8-ROW15,由此组成16根行扫描线;将左边上、下2片点阵模块的列并联在一起组成COL0-COL7,右边上、下2片点阵模块的列并联在一起组成COL8-COL15,由此组成16根列选线。这样的连接方法即可构成16×16的点阵显示屏,如图4 所示。
2.3 驱动电路设计
点阵的显示原理是在每一时刻仅显示一行数据,然后通过每行轮流显示,以很快的速度不断地刷新,因此需要采用一定的驱动电路来实现对当前该显示的行进行驱动。
2) 列驱动电路
74HC595是硅结构的CMOS器件,具有8位移位寄存器和1个存储器,具备三态输出功能,而且价格低廉、驱动能力强、操作简单、有存储寄存器,因此74HC595芯片用来扩展51单片机的I/O口也比较合适。因为如果采用I/O端口直接驱动列,那么将仅仅是驱动就需要占用16个I/0端口,不利于其他外设的扩展,如果将两片74HC595芯片实现级联,即将其中一片74HC595的SQH引脚与另一片的SI引脚相连,高、低八位分开控制[3],也可实现对16×16点阵的列的控制,使用锁存器实现的列驱动电路硬件连接相对简单,软件编程也方便,但所要占用的I/0端口较多,对于大分辨率的点阵显示屏来说,I/0端口资源有限,所以该方式不适合大系统的点阵显示屏的设计。在本设计中,由于采用16×16点阵模拟点阵显示屏,所占的I/0端口资源较少,因此,可以采用锁存器来实现列驱动电路。
2.4 基于 STC89C52的最小系统
一般情况下,能使单片机正常工作的最低要求,需要包括给单片机供电的电源、时钟电路和复位电位,这些基本的外部电路可以构成一个简单的系统,称为单片机的最小系统[4]。
1) 时钟电路一个由高增益反相放大器构成的振荡电路称为晶振电路,分别以19 号引脚XTAL1 和18 号引脚XTAL2作为电路的输入和输出端子,电路中包含2个电容C1和C2,一般取值大小为30pF左右,起稳定频率和快速起振的作用[5]。通常情况下,单片机中晶振的取值不大于12MHZ,取6MHZ或12MHZ,串口通信时,选用11.0592MHZ。
2) 时序的概念单片机内的各种操作,都是在一系列脉冲控制下进行的,而各脉冲在时间上是有先后顺序的,这种顺序就称为时序,由以下几个概念进行分析。
①振荡周期,又称振荡频率fosc的倒数,是振荡信号的周期,由晶体振荡器直接产生。用Tosc表示,也称为节拍。振荡周期Tosc=1/fosc,如:为6MHz 时Tosc=1/6μs,为12MHz时Tosc=1/12μs。
②状态周期,又定义为状态,用S表示。是振荡频率fosc经过二分频后构成的,第一节拍时完成算术或逻辑运算,第二节拍时完成数据传递。
③机器周期是机器的基本操作周期。一个机器周期含6个状态周期,分别用S1~S6表示,或用S1P1、S1P2...S6P2表示。
④指令周期,是指单片机执行一条指令需要的全部时间,是单片机中最大的时序定时单位。不同的指令占用的指令周期数不同,单周期指令只包含一个机器周期,双周期指令包含2个机器周期,依次类推。
3) 复位电路
在单片机的9号引脚RST上加2个机器周期以上的高电位,在上电的瞬间,RST与VCC相通,电路RC 电路充电电流不断减少,但RST只要保持10ms以上高电平就能使单片机有效复位。将单片机的CPU和系统中其他功能部分都恢复到初始状态,例如复位后PC=0000H,单片机的指令从第1个单元执行。
3 系统的软件设计
3.1 软件设计流程
主程序点阵刷新显示模块主要任务是不断循环地显示数字、文字或图形。显示的方式采用循环右移,即数据循环向右移动显示,主要由单片机驱动点阵的行驱动和列驱动电路来实现数据的显示。在绘制流程图时,需要根据相关的模块分别进行绘制,这样有利于进行模块化编程。
3.2 仿真电路搭建与调试
Proteus 仿真软件是由英国Labcenter Electronics 公司研发的一款EDA软件[7],Proteus 仿真软件自备丰富的元器件库,设计者可以从库中调用所需元器件,在编辑窗口中摆放好,通过简单地连线就可完成整个电路的设计。除此之外,Proteus 仿真软件界面清晰、窗口分布清楚、色彩多样化,因此在Proteus 仿真软件问世的短短20年时间里,已经在全世界得到广泛的应用和肯定。
LED点阵显示系统的仿真器件清单如表1所示。Proteus仿真软件在“原理图设计”环境下绘制完成的电路图,双击 STC89c52打开“Edit Component”对话窗口,在“Program File”栏中选择用keil生成的“.HEX”文件,最后单击Protues仿真软件界面左下角的三角形开始按钮,程序开始运行。根据系统设计图完成电路器件的搭建,即可实现LED点阵系统的软硬件联调,完成16×16点阵显示的设计与制作。
4 结束语
本文以STC89C52单片机为控制中心,充分利用74LS138和74HC595芯片扩展单片机I/O口功能,通过8×8点阵构成的16×16点阵显示单元完成系统的设计与制作。结合Keil编程软件以C语言为编程语言,具有实现成本低、电路简单和系统稳定的特点,在当前提倡节能环保高效的大背景下,具有更广阔的市场前景。