基于单片机的LED汉字显示屏的设计

2012-06-08 09:58:32陈莉
电子设计工程 2012年20期
关键词:晶振译码器三极管

陈莉

(陕西理工学院 物理与电信工程学院,陕西 汉中 723000)

LED点阵是一种简单的汉字显示器件,具有价廉、易于控制实现、使用寿命长的特点。本次LED汉字显示屏的设计使用STC89C52单片机对4片8x8LED点阵进行控制,采用上移显示方式,可以连续显示多个汉字。

1 硬件设计

1.1 系统的硬件组成框图

系统硬件组成框图如图1所示。

图1 系统硬件组成框图Fig.1 Block diagram of hardware system

1)选用STC89C52单片机作为微控制器。

2)由74HC154构成译码器,该译码器是4线-16线译码器,输入端有4条数据线,共有6种输出,分别对应控制LED点阵显示器的0-15行。译码器输入端接单片机P0口。

3)驱动电路:由PNP型三极管8550和NPN型三极管8050构成,分别控制行和列。为显示器提供足够的驱动电流。列驱动高八位接单片机P2口,低八位接单片机P1口。行驱动接译码器芯片输出端。

4)显示模块:由4个8x8LED显示器级联而成作为输出终端;4块显示器的连接方法为:上下排列对应列引脚相连,左右排列对应行引脚相连。

1.2 硬件模块设计

1.2.1 STC89C52RC单片机

STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,STC89C52单片机在电子行业中有广泛的应用[1-2],管脚分布如图2所示。

1)主电源引脚(2 根):VCC(Pin40)电源输入,接+5V 电源;GND(Pin20)接地线。

2)外接晶振引脚(2 根):XTAL1(Pin19)片内振荡电路的输入端;XTAL2(Pin20)片内振荡电路的输出端。

3)控制引脚(4 根):RST/VPP(Pin9)复位引脚,引脚上出现2个机器周期的高电平将使单片机复位;ALE/PROG(Pin30)地址锁存允许信号;PSEN(Pin29)外部存储器读选通信号EA/VPP(Pin31)程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高则从内部程序存储器读指令。

图2 STC89C52管脚分布图Fig.2 STC89C52 pin map

4)可编程输入/输出引脚(32根):AT89S51单片机有 4组8位的可编程I/O口,分别位 P0、P1、P2、P3口,每个口有 8位(8根引脚),共32根。每一根引脚都可以编程。

1.2.2 74HC154芯片

74HC154是一款高速CMOS器件,74HC154引脚兼容低功耗肖特基TTL(LSTTL)系列,管脚分布如图3所示。

图3 74HC154管脚分布图Fig.3 74HC154 pin map

74HC154译码器可接受4位高有效二进制地址输入,并提供16个互斥的低有效输出。74HC154的两个输入能门门电路用于译码器选通,以消除输出端上的通常译码 “假信号”,也可用于译码器扩展[2-3]。门电路包含两个“逻辑与”输入,必须置为低以便使能输出端。任选一个使能输入端作为数据输入,74HC154可充当一个1-16的多路分配器。当其余的使能输入端置低时,地址输出将会跟随应用的状态。

在本设计中,需要定时对16x16LED的行进行动态扫描,共有16种状态,故选择了4线-16线译码器,该译码器只用输出4位有效数据,就可控制16种状态,大大简化了软件的编写,同时节省了单片机的硬件资源。

1.2.3 复位电路设计

复位电路如图4所示,其基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位[2-3]。采用简易的上电复位电路,主要由电阻 R1,R2,电容 C1,开关K1组成,分别接至AT89C51的RST复位输入端。

图4 复位电路图Fig.4 Reset circuit

1.2.4 晶振电路设计

晶振电路如图5所示,其基本功能是:为单片机提供一个稳定的参考时钟,使单片机能够可靠的工作。晶振的频率常用的有6 MHz、11.0592 MHz、12 MHz等。晶振电路的接法比较固定,本设计采用的11.059 2 MHz晶振电路为晶振两端接2个20~30 pF的起振电容后接地,然后两端接单片机XTAL引脚即可,各单片机说明手册中附有不同频率的晶振的晶振电路的接法。

图5 复位电路图Fig.5 Reset circuit diagram

1.2.5 驱动电路设计

驱动电路原理图如图6所示,行、列驱动部分均用16个小功率普通三极管来控制。由于选用的LED显示器为共阴接法,即同名列共阳,同名行共阴[3-4],为使加入驱动后与原显示屏控制方式保持一致(列高电位接通,行低电位接通),故行驱动选用PNP型三极管8550,对应的列驱动选择NPN型三极管8050。驱动电路原理图如图6所示。

图6 驱动电路组成框图Fig.6 Schematic diagram of drive circuit

1.2.6 LED点阵汉字显示

要显示一个汉字,必然要用到汉字的点阵字形信息,也叫做汉字的字模[5]。得到汉字字模的过程称为汉字的取模,汉字的取模是汉字显示的逆过程。根据汉字的不同字体,汉字字模可分为宋体字模、楷体字模、黑体字模等。根据汉字的显示清晰度,又可分为16×16点阵字模、32×32点阵字模等等。汉字的字模是汉字字形的数字化[6]。本设计中,汉字的字模是以16进制数字形式记录的显示一个具体的汉字时每一行需要点亮的LED的信息。如图7所示:以汉字“你”为例,每一行中数字“0”代表未点亮该行对应列位置上的LED,而数字“1”则代表该行对应列位置上的LED被点亮。这样,每一行由数字“0”和数字“1”组成的汉字信息叫做位代码,将每行16位位代码转换成2个字节的16进制代码,就是我们需要的汉字字模信息。

图7 汉字字模原理图Fig.7 Schematic diagram of Chinese characters font

2 软件设计

2.1 主程序流程图

主程序流程图如图8所示。主程序调用了2个重要子函数,即显示子函数和移位子函数。显示子函数的功能是让LED显示器显示指针所指向的字模数组的数据,而移位子函数的功能是让指针所指的地址加2,以实现汉字整体上移一行的效果。整个主程序运行后,先初始化指针p所指向的地址,让指针指向字模数组的起始处,并且设定变量I的初值为0,用I的值来控制显示函数的重复次数,达到调整显示汉字移动速度的目的。当I值未达到设定值时,不断重复显示子函数,此时屏幕上显示的是一个静止不动的汉字,直到I达到设定值,调用移位子函数,将指针地址加2,使指针的起始位置指向第二行,然后重新从I的初始化开始执行,这样,屏幕上就呈现出汉字不断上移的结果。

图8 主程序流程图Fig.8 Flow chart of main program

2.2 显示子程序流程图

显示子程序流程图如图9所示,显示子程序的运行过程主要是单片机I/O口对外发送数据的过程。程序首先设定了一个局部变量I,并定义其值为0。设定该变量的主要目的是为了确定扫描的行数,以控制I/O口发送相应行的字模数据。经过判断,如果I值小于15,说明正在扫描显示器上的某一行,则P0口送出相应的行扫描命令到74HC154芯片,经译码后控制显示器接通相应的行,然后P2、P1送出相应的高、低八位列字模数据,最后关闭列控制以防止残影,对I值自加1就完成了一个循环。当I>15时,说明全部的16行扫描进行完成,此时显示器整屏已经出现了需要的图像,程序执行完成。

图9 显示子程序流程图Fig.9 Shows the subprogram flow chart

2.3 移位子程序流程图

位移子程序就是让地址指针自动加2,这样,当显示函数执行时,第一行显示的就是原本第二行要显示的内容,依次类推,整个字形就好像上移了一行一样。所以程序运行过程是这样的:首先让地址指针自加2,以实现地址指针的移动,然后判定地址指针所指向的地址的值,如果地址指针指向了字模数组的最后一位地址,就要令地址指针归0,否则,指针顺序移动下去,当移出字模数组的范围后,后面的存储空间存储的数据是未知的,就会出现非预期的图形,例如乱码或空白。

图10 移位子程序流程图Fig.10 Flow chart of shift subroutine

3 硬件调试与改进

3.1 驱动电路的调试与改进

最初设计方案没有使用驱动电路,软件仿真正常。在面包板上依原理图建立物理连接后,调试中发现LED忽明忽暗,汉字显示不稳定。经万用表测量,LED显示器中单个发光二极管中通过的电流不足1.5 mA,达不到额定的工作电流。确定问题的原因是单片机的驱动电流不足。为解决这一问题,本次设计采用一套利用三级管控制的驱动电路,经试验,加入到电路中效果良好,上述缺陷得到解决。

3.2 限流电阻的调试与改进

当确定要加驱动电路之后,怎样用三极管来控制这个电流大小是一个问题。起初通过三极管直接加5 V电压。一个LED被烧坏,这就需要加要加限流电阻,但是这电阻要加多大呢?分析如下:正常点亮一个LED的电流大约是5~15 mA左右,动态扫描电路,每次每列最多只点亮1个LED,故每个驱动三极管流过的电流按10 mA的电流大小算。通过加不同阻值的电阻,用万用表测量后发现用4.7 kΩ的限流电阻与8550(PNP型)三极管串联控制行,用 47 kΩ的电阻与 8050(NPN型)三极管串联控制列便可以满足要求。

3.3 译码器的调试与改进

最初设计方案采用软件编程来实现扫描时的换行控制,虽然硬件电路相对现在的有少许简单,但是软件程序确实相当的复杂,后发现只用一个译码器就可以大大简化程序。

3.4 上拉电阻的选择

设计之处初用单片机的P0口通过译码器控制显示屏的行,插好线后发现单片机不能正常工作,原因是单片机的P0口是比较特殊的。P0口在不接片外存储器与不扩展I/O口时,可作为准双向输入/输出口。在接有片外存储器或扩展I/O口时,P0口分时复用为低8位地址总线和双向数据总线。所以P0口的带负载能力是比较低的,一般情况下要接一个上拉电阻,所以最后在P0口接了一个10千欧的排阻之后解决了问题。

3.5 消影调试

当所有的线路都连接好后,显示却不清晰、有串扰,每行有上一行的重影。在源程序中加入消影程序后可以清晰稳定的显示。

4 结束语

文中给出了LED汉字显示屏的系统框图,各单元硬件电路、软件设计流程图及硬件电路的调试流程;详细阐述了由STC89C52RC芯片、74HC154芯片、晶振电路、复位电路、驱动电路、16×16 LED点阵构成的LED汉字显示屏系统。所设计的显示屏可以实现汉字的滚动显示,显示的汉字清晰,无串扰,无重影。

[1]李建忠,余新拴,王宽仁.单片机原理及应用[M].2版.西安:西安电子科技大学出版社,2008.

[2]阎石.数字电子技术基础[M].5版.北京:清华大学电子学教研组,高等教育出版社,2005.

[3]张华,樊庆文,石华刚,等.一种经济型大屏幕LED显示系统[J].自动化信息,2002(1):25-26.ZHANG Hua,FAN Qing-wen,SHIHua-gang,etal.An economic type of large screen LED display system[J].automation information,2002(1):25-26.

[4]周荷琴,吴秀清.微型计算机原理与接口技术[M].4版.合肥:中国科学技术大学出版社,2008.

[5]周水清.LED大屏幕信息发布技术与应用研究[D].武汉:武汉理工大学,2002.

[6]阳宪惠.工业数据通信与控制网络出版社[M].北京:清华大学出版社,2003.

[7]雷震,唐云龙.VXI数据采集系统的建立及其应用[J].火箭推进,2008(5):54-58.LEI Zhen,TANG Yun-long.Establishment and application of VXI data acquisition system[J].Journal of Rocket Propulsion,2008(5):54-58.

猜你喜欢
晶振译码器三极管
两非门晶振振荡电路的设计
基于晶振的高性能时间保持方法研究
基于晶体三极管的放大电路分析
纠错模式可配置的NAND Flash BCH译码器设计
几种导致恒温晶振频率偏移的因素分析
电子测试(2018年14期)2018-09-26 06:04:14
恒温晶振环境温度特性测试系统设计
电子测试(2018年1期)2018-04-18 11:52:05
跟踪导练(一)5
三极管引脚折弯机双凸轮机构的分析与仿真
三极管放大电路的研究
电子制作(2016年1期)2016-11-07 08:43:05
三极管单管放大电路的失真分析
工业设计(2016年11期)2016-04-16 02:49:20