主函数编写有两大方面,一是如何实现对LED显示屏及外围器件的控制,二是如何把时钟芯片DS1302,温度传感器DS18B20及LCD1602显示屏和LED显示屏有机的结合起来。本文设计的系统软件能使系统在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、左移、右移等显示方式。
从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C语言编写[10]。
3.2 程序设计流程图
3.2.1 汉字显示部分的程序设计
程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断、端口。然后以“卷帘出”效果显示文字或图案,停留几秒钟,接着向上滚动显示汉字或图形,停留几秒后,再左移显示汉字或图形、右移显示等。
为消除在切换行显示数据时产生的拖尾现象,驱动程序先要关闭显示屏,等显示数据输入输出锁存器后,再输出新的行号,重新打开显示[12]。汉字显示流程图如图3.1所示。流程图中的LED显示屏是由一个个发光二极管组成的,要使其显示汉字或者图形,只需点亮相应位置上的LED灯即可。该程序是通过编码来控制LED的亮灭,由此便可形成一定的汉字或图案,形成汉字或图案后,延时一定的时间(50ms),就可以看到汉字的显示了。
3.2.2 温度和时间的显示系统设计
1)时间与温度的主程序设计
在程序初始化之后,单片机就读入时钟芯片DS1302和温度传感器DS18B20的数据,然后通过P0口输出,从LCD液晶显示屏上显示出来。延时一定的时间后,重新读取温度传感器DS18B20的温度和时钟芯片DS1302的时间,刷新LCD的显示。当需要设置时间的时候,程序就进入中断,然后就可以进行设置了。
此部分流程图如图3.2所示。
图3.2 时间与温度显示流程图
2)中断子程序的设计
进入中断以后,可以通过按键轻易的对年份日期以及时分秒等进行设置,使系统不仅可以显示实时时间,还可以显示任意指定的时间。
中断子程序的流程图如图3.3所示。
图3.3 中断流程图
3.3 工程建立
利用Keil C51建立工程,并且将编写好的头文件"dispaly.h","temp.h","lcd1602.h","clock.h"与工程文件放在同一文件夹,然后对程序进行调试、编译,若有错误,根据提示对程序进行检查,修改;没有错误后,程序仿真通过,便可以开始生成HEX二进制文件。
4. 系统仿真与结果分析
将软件仿真生成的HEX文件下载到单片机中即可进行硬件仿真。仿真结果如图4.1所示。
图4.1 仿真结果图
从理论上来说,24Hz以上的刷新频率就能看到稳定的连续的显示,刷新率越高,显示越稳定,同时刷新频率越高,显示驱动程序占用的CPU时间越多[13]。试验证明,在目测条件下刷新频率40Hz一下的画面看起来闪烁较严重,刷新频率50Hz以上的已基本察觉不出画面的闪烁,刷新频率达到85Hz以上时再增加画面闪烁没有明显的改善。
经过调试,运行,LED汉字点阵可以正常显示,LCD1602也可以在时间和温度之间正常的切换显示。运行结果验证了设计方案是可行的,而且这个方案设计的16x16的点阵LED图文显示屏,电路简单,成本较低,且较容易扩展成更大的显示屏,很具有实用价值。
5. 结束语
本文通过设计基于单片机的LED点阵显示电路,对LED显示模块单元如何进行行列信号控制及信号传输中的驱动问题进行了研究;给出了硬件的原理以及连接的方法,软件的设计流程,并给出了完整的电路图,结果可以正常显示汉字信息,显示分为静态显示、左移显示、右移显示、上移显示、下移显示五种显示方式。 AT89C51单片机的汉字点阵显示系统设计+源程序+硬件电路图(4):http://www.youerw.com/zidonghua/lunwen_969.html