田旭*
点阵屏电子计时牌设计说明
田旭*
(河北省唐山市开滦第二中学,河北唐山,063000)
电子计时牌是当今很多商场、公司、企业和学校的必备显示设备。具有广泛的用途。本设计基于多层PCB叠加的方式来构建电路,利用led点阵屏幕,实现时间日期、实时温度、高考倒计时牌以及重大日期提醒等功能。同时,使用51单片机来驱动控制其特殊显示效果,同时,科学设计电源使用寿命,可以固定使用,也可移动使用。
点阵屏;电子计时牌;设计
在步入高三的紧张学习生活后,我们的压力越来越大,但不乏有些同学还没有高三的学习节奏,有些同学甚至在一天天的浪费宝贵的时间,为此我想到用一个可以动态显示高考倒计时的计时牌来提醒这部分同学:“高考已经临近,别等失败了再后悔”。
同时,前些日子天气炎热,看到某些同学因忘记携带轻薄的夏季校服而汗流浃背。干脆就添加一个功能来提醒同学们注重更新衣物,防止感冒中暑吧。
点阵屏电子计时牌要求使用点阵屏作为显示屏幕,实现时间日期、实时温度、高考倒计时牌以及重大日期提醒等功能。并使用51单片机来驱动显示,屏幕显示要有滚动、渐变等特效,并使用按键对本计时牌进行设置。
点阵屏电子计时牌将采用多层PCB叠加的方式来构建电路,使用专用的时钟芯片来实现日期时间的计算,并且可以通过备用电源使得本计时牌可以实现掉电走时,根据时钟芯片以及备用电源的有关数据计算,可以保持掉电走时长达20年之久。另外,设计光敏传感器来对环境光进行检测,并使用单片机的脉宽调制(PWM)技术自动控制电子屏的亮度。
电子屏电子计时牌可能在未来加入天气预报(通过数据网络获取信息)、音乐音谱等功能。
点阵屏电子计时牌的显示屏将采用模块式开发,使用74HC595来驱动矩阵结构的LED并使用单片机来产生串行信号。
LED采用行列扫描式的动态驱动方式。当扫描速度超过50Hz时,人眼就会认为LED是同时点亮的。
LED矩阵模块是16*16像素的,需要通过74HC595的级联设计来实现屏幕的拼接。
在LED矩阵模块后有一层PCB板来实现模块的拼接固定同时实现74HC595的级联电路。
固定LED矩阵模块用的PCB板后有另外一层驱动用的电路板,其上主要有单片机、时钟芯片DS1302、备用电池、温度传感器、各芯片的最小系统以及电源电路等组成。
显示部分采用模块化开发方案,直接使用模块进行开发,使用的模块是16*16像素的,我把四块模块一字排开拼接。因为模块是使用74HC595从行到列级联下来的,所以只能是把四块模块依次行列交错级联下来。不过对整个系统的影响不大,只需要通过对程序的特殊处理就可以实现正常显示。
图1 电子显示屏控制芯片
STC12C5A60S2单片机是增强型的8051单片机,比起其他的51系列单片机运行速度更快,更稳定,并且内部自带上电复位功能,对于对扫描速度要求很高的点阵屏驱动来说是一个非常不错的选择。另外,这款单片机的功能很强大,可以直接实现ADC数模转换和PWM脉宽调制而不额外添加其他外围芯片。
单片机(MCU)的运行需要一个时钟源来提供时钟信号,由于设计要求时序精度很高,所以不能使用内部RC振荡器而采用外部无源时钟。无源时钟比起有源时钟精度要差点,但是单片机只是用于对数据进行处理以及时序的实现,并不需要精确计时,因此使用无源时钟来提供单片机的时钟源绰绰有余。最终确定时钟源为振荡频率12MHz的石英晶体振荡器。
图2 时钟芯片示意图
电子计时牌使用DS1302来提供精准的日期时间数据,为日期提醒以及天数倒计时提供计算参数。DS1302有自己的专用时钟源,能产生精确的一秒钟,以提供数据计算参数。DS1302使用串行数据协议,使用很少的几个I/O口就可以实现通信,简化了电路的连接。
图3 温度传感器
温度采集使用DS18B20单总线温度传感器,DS18B20可以提供9位温度数据,只需要一个I/O口就能实现数据通信。不过这款温度传感器对时序要求比较高,调试程序时可能会比较费时。
环境光检测使用光敏电阻作为光敏原件来进行光强信息与电信号的转化。并且可以使用STC12C5A60S2单片机的ADC数模转换功能将模拟信号转化为单片机能接受的数字信号。通过以上图示电路连接,就可以实现光敏电阻阻值的计算,从而转换得到光强数据。
I = UADC0 / R2
UR1 = U总 - UADC0
R1 = UR1 × I
R1 = (U总 - UADC0)×(UADC0 / R2)
然后再根据光敏电阻的光强阻值线性关系就可以得到光强数据了。
屏幕亮度控制采用的是STC12C5A60S2单片机可编程计数阵列中的PWM脉宽调制输出功能,将输出接口与显示部分的74HC595的E0输出使能相连,可以方便的控制亮度而不必进行移位及显示频率的控制。
STC12C5A60S2单片机内部自带EEPROM功能,可以实现数据的掉电存储,而不必再外部添加AT24Cxx系列的I2C EEPROM芯片了。需要掉电存储的数据主要有点阵屏电子计时牌的设置数据、智能提醒所用的文本数据、定时启停以及闹钟的时间数据等。
点阵屏电子计时牌的计时可以实现闹钟功能,其工作单元为有源蜂鸣器,可以直接使用板上的5V电源进行驱动。但是,由于单片机的I/O口的驱动能力有限,不足以驱动有源蜂鸣器。所以需要一个三极管放大电路来对蜂鸣器进行控制。
电源部分采用7805稳压芯片将电源适配器提供的12V供电转化为稳定的5V电源,以提供整个点阵屏电子计时牌的电源。为防止电压的抖动,应在7805稳压芯片的输入及输出均使用220uf的滤波电容(电解电容)以及0.1uF的去耦电容(独石电容)。此外,在整个点阵屏电子计时牌的功率驱动部分以及芯片的附近都应该添加0.1uf去耦电容以增加电子电路的稳定性。
点阵屏电子计时牌可以流动显示实时日期时间以及当前环境温度,同时根据数据显示合适的穿衣、补水等健康建议。
点阵屏电子计时牌的设计初衷是给正在拼搏的高三同学们一个精确的高考计天服务,必然可以实现自动计算距高考的天数,同时,不只是高考计天,该计时牌还可以自由实现某些重大日期时间的计天、计时等。
点阵屏电子计时牌可以设置实现在夜晚或指定的时间段(上课期间)关闭显示以节约电能或避免因屏幕点亮引起的注意力转移。
针对不同时间段环境亮度可能不同,导致屏幕显示亮度可能不适合观察(过亮刺眼,过暗无法看见)的问题,我设计了可以通过设置实现根据环境光自动调节屏幕亮度的功能,此功能与上一条不冲突。
因为要使用74HC595来驱动电子计时牌的显示部分,所以需要对该芯片进行串行输入,在时钟口高电平时更改数据口电平,而在时钟口低电平时保持数据口电平,等待芯片的读取。发送的时候是先发高位再发低位。
void HC595SendData(unsigned int SendVal){
unsigned char i;
for(i = 0;i < 16;i++){
if((SendVal << i) & 0x8000) R1 = 1;
else R1 = 0;
CLK = 0;
CLK = 1;
}
}
在主程序的最内层嵌套,是74HC595的输入控制,先串行输入八组行列数据,再通过在三态锁存口输入一次低电平脉冲把数据从移位寄存器送到锁存器中并加以显示。
行数据是通过一个计次循环依次将0x0001(0000 0001)左移j次(j为循环次数,从0开始)来实现的。
因为数据量对于8位的51单片机很大,只好把列数据(内容数据)存储在单片机片外RAM存储器中。数据是以线性表结构存储的,方便扫描程序以线性进行读取。
unsigned int xdata Output[256];
另外,为了流畅的实现屏幕的滚动效果,不能采用极为耗费单片机运算资源的依次移位的方法。我想到的方法是通过使用一个随时间变化的变量k来控制所有地址的偏移,进而使屏幕横向滚动起来。
for(j = 0;j < 16;j++){
bite = 0x0001 << j;
HC595SendData(bite);
HC595SendData(~(Output[j+48+k])); HC595SendData(bite);
HC595SendData(~(Output[j+32+k]));
HC595SendData(bite);
HC595SendData(~(Output[j+16+k]));
HC595SendData(bite);
HC595SendData(~(Output[j+k]));
LAT = 0;
_nop_();
LAT = 1;
}
因为该单片机的片外存储器有一定的记忆效应,数据会在掉电后有一部分不会消失,或者产生乱码,或者存着上次关机时的胡乱的数据等。因此需要在主函数的 while(1)主循环之前,对存储单元进行全部填0处理,清除其中的乱码等,以保证在开机时不会出现不可预知的错误。
for(h = 0;h < 16; h++){
for(i = 0;i < 16;i++){
Output[i+16*h] = 0x0000;
}
}
[1] 蔡亮. 微机控制的LED显示屏[J]. 电子技术, 1997, (03).
[2] 郑康锋, 王秀娟, 李康, 等. 一种实现异步显示屏的新方法[J]. 山东电子, 2002, (04).
[3] 郭志友, 范广涵, 孙慧卿. LED显示屏亮度和颜色的调整方法[J]. 液晶与显示, 2003, (04).
[4] 沈鸿星. 用可编程器件实现LED显示屏的硬件扫描控制[J]. 襄樊学院学报, 2003, (05).
[5] 中国光协LED显示屏分会常务理事扩大会会议纪要(节略)[J]. 现代显示, 2003, (03).
[6] 严达林. 影响LED全彩屏显示效果的有关参数[J]. 现代显示, 2004, (02).
[7] 陆荣庆. LED显示屏亮度测量方法及测量仪器[J]. 现代显示, 2004, (02).
[8] 龚成莹, 赵又新, 马宏锋. 基于FPGA的LED点阵书写显示屏的设计[J]. 自动化与仪器仪表, 2010, (03).
[9] LED显示屏产业发展研讨会会议纪要[J]. 现代显示, 1998(01).
[10] 陈科, 孟文, 肖世德, 等. 基于ARM S3C44B0X的LED显示屏设计[J]. 液晶与显示, 2004, (06).
[11] 于金峰, 李士峰, 刘海波. LED显示脚本模型设计[A]. 黑龙江省计算机学会2009年学术交流年会论文集[C], 2010.
[12] 王伟. 全彩LED显示屏应用[A]. 海峡两岸第十届照明科技与营销研讨会专题报告文集[C], 2003.
[13] 杨小琴. 大型LED显示屏屏体局部散热执行机构设计[A]. 先进制造技术论坛暨第三届制造业自动化与信息化技术交流会论文集[C], 2004.
[14] 江中鸿, 周锦. LED显示屏系统及其在电视舞台美术中的应用[A]. 走近CIE 26th——中国照明学会(2005)学术年会论文集[C], 2005.
[15] 冯玉志, 崔玉亮. 基于Atmega8的多功能LED显示系统设计[A]. 中国航空学会控制与应用第十二届学术年会论文集[C], 2006.
Dot Matrix Screen Electronic Timing Board Design Notes
TIAN Xu*
(Kailuan second middle school, Hebei, Tangshan City, Hebei Tangshan, 063000, China)
Electronic countdown is one of the many shopping malls, companies must display equipment. Businesses and schools have been widely used. The design of multilayer PCB stack based approach to building the circuit, the use of LED dot matrix screen, date and time, real-time temperature, countdown entrance and important date reminder functions. At the same time, the use of 51 single the driving control of a special display, at the same time, the scientific design of the service life of the power source, can be fixed, can also move.
Dot matrix screen; electronic timing board; design
田旭. 点阵屏电子计时牌设计说明[J]. 数码设计, 2017, 6(5): 40-42.
TIAN Xu. Dot Matrix Screen Electronic Timing Board Design Notes[J]. Peak Data Science, 2017, 6(5): 40-42.
10.19551/j.cnki.issn1672-9129.2017.05.016
TG802
A
1672-9129(2017)05-0040-03
2017-02-15;
2017-03-09。
田旭(2000-),男,河北唐山,学生,高中,研究方向:电子制作,程序开发。E-mail: 1839156454@qq.com