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

时间:2012-12-20来源:网络


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

b.JPG


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

c.JPG


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

d.JPG



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芯片、74H C154芯片、晶振电路、复位电路、驱动电路、16x16 LED点阵构成的LED汉字显示屏系统。所设计的显示屏可以实现汉字的滚动显示,显示的汉字清晰,无串扰,无重影。

1 2 3

关键词: STC89C52RC LED点阵 汉字显示屏 动态扫描

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版