基于单片机的LED汉字显示屏的设计
1.2.6 LED点阵汉字显示
要显示一个汉字,必然要用到汉字的点阵字形信息,也叫做汉字的字模。得到汉字字模的过程称为汉字的取模,汉字的取模是汉字显示的逆过程。根据汉字的不同字体,汉字字模可分为宋体字模、楷体字模、黑体字模等。根据汉字的显示清晰度,又可分为16×16点阵字模、32×32点阵字模等等。汉字的字模是汉字字形的数字化。本设计中,汉字的字模是以16进制数字形式记录的显示一个具体的汉字时每一行需要点亮的LED的信息。如图7所示:以汉字“你”为例,每一行中数字“0”代表未点亮该行对应列位置上的LED,而数字“1”则代表该行对应列位置上的LED被点亮。这样,每一行由数字“0”和数字“1”组成的汉字信息叫做位代码,将每行16位位代码转换成2个字节的16进制代码,就是我们需要的汉字字模信息。
2 软件设计
2.1 主程序流程图
主程序流程图如图8所示。主程序调用了2个重要子函数,即显示子函数和移位子函数。显示子函数的功能是让LED显示器显示指针所指向的字模数组的数据,而移位子函数的功能是让指针所指的地址加2,以实现汉字整体上移一行的效果。整个主程序运行后,先初始化指针p所指向的地址,让指针指向字模数组的起始处,并且设定变量I的初值为0,用I的值来控制显示函数的重复次数,达到调整显示汉字移动速度的目的。当I值未达到设定值时,不断重复显示子函数,此时屏幕上显示的是一个静止不动的汉字,直到I达到设定值,调用移位子函数,将指针地址加2,使指针的起始位置指向第二行,然后重新从I的初始化开始执行,这样,屏幕上就呈现出汉字不断上移的结果。
2.2 显示子程序流程图
显示子程序流程图如图9所示,显示子程序的运行过程主要是单片机I/O口对外发送数据的过程。程序首先设定了一个局部变量I,并定义其值为0。设定该变量的主要目的是为了确定扫描的行数,以控制I/O口发送相应行的字模数据。经过判断,如果I值小于15,说明正在扫描显示器上的某一行,则P0口送出相应的行扫描命令到74HC154芯片,经译码后控制显示器接通相应的行,然后P2、P1送出相应的高、低八位列字模数据,最后关闭列控制以防止残影,对I值自加1就完成了一个循环。当I>15时,说明全部的16行扫描进行完成,此时显示器整屏已经出现了需要的图像,程序执行完成。
2.3 移位子程序流程图
位移子程序就是让地址指针自动加2,这样,当湿示函数执行时,第一行显示的就是原本第二行要显示的内容,依次类推,整个字形就好像上移了一行一样。所以程序运行过程是这样的:首先让地址指针自加2,以实现地址指针的移动,然后削定地址指针所指向的地址的值,如果地址指针指向了字模数组的最后一位地址,就要令地址指针归0,否则,指针顺序移动下去,当移出字模数组的范围后,后面的存储空间存储的数据是未知的,就会出现非预期的图形,例如乱码或空白。
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芯片、74H C154芯片、晶振电路、复位电路、驱动电路、16x16 LED点阵构成的LED汉字显示屏系统。所设计的显示屏可以实现汉字的滚动显示,显示的汉字清晰,无串扰,无重影。
STC89C52RC LED点阵 汉字显示屏 动态扫描 相关文章:
- 从易到难学习单片机(单片机DIY制作、毕业设计、课程实例)(06-04)
- 初始的STC89C52RC单片机小实验(12-03)
- STC89C52RC单片机8位流水灯程序(11-29)
- 单片机STC89C52RC内部EEPROM(11-26)
- STC89C52RC特点及引脚介绍(11-25)
- 基于STC89C52RC+TEA5767的收音机(10-15)