张立萍
(赤峰学院 物理与电子信息工程系,内蒙古 赤峰 024000)
★赤峰学院学人推介——张立萍
张立萍,女,1972年生人,硕士研究生学历.赤峰学院物理与电子信息工程学院副教授.从事理论教学与实验教学工作,主讲课程:数字电子技术及实验、模拟电子技术及实验、数字信号处理及实验、家电原理及实验、电工学及实验等.
近年来,发表学术论文二十余篇,其中SCI收录2篇,发明实用新型专利2项.现主持内蒙古自治区高等学校科学研究项目《智能型LED植物生长灯关键技术研究》;参与内蒙古自治区自然科学基金项目《无线传感器网络中防恶意节点的相关技术研究》.2015年在中国原子能出版社出版专著《模拟与数字电子电路原理及应用研究》;2018年是校级创新教学团队《智能硬件教学团队》的主要成员.
为满足大众的审美需求,本文设计了一款既实用又美观的LED花样流水灯时钟.这一款带有心形花样流水灯的时钟在设计上充分考虑到需求者的心理,在设计时集成了多种功能,设计成品不死板,可以满足大众在选择工艺品时的需求.
利用STC89C52RC单片机的P1.0~P1.2三个引脚控制74HC595实现LED花样照明功能、用P2.0~P2.2三个引脚控制实时时钟芯片DS1302实现电子时钟的功能、用P0口、P2.3~P2.5十一个引脚控制点阵图形液晶显示模块LCD12864实现在LCD12864 上显示年、月、日、星期、时、分、秒、节日及附加功能.P1.3~P1.6四个引脚接四个按键K1~K4.其中K1控制LED花样照明的闪烁模式,K2~K4调节时间、日期.总体方案的框图如图1所示.
图1 总体方案框图
图2 单片机最小系统
能让单片机在上电后正常工作所需要的最少器件组合而成的系统称之为单片机最小系统.单片机最小系统中最关键的部分是单片机、时钟电路和复位电路.单片机最小系统如图2所示.
(1)单片机:本文采用了宏晶公司生产的STC89C52RC单片机,因其价格低廉,功耗较低,可靠性高,无法解密等优点,已经在电子设计行业被广泛采用.STC89C52RC的工作电压为直流5V,其内部集成了 8位的 CPU、512B的 RAM、8KB的ROM、4个并行8线I/O端口、3类6个中断源.单片机内部基本组成如图3所示.
图3 单片机的内部基本组成
(2)时钟电路:单片机的第18和第19引脚间跨接一个晶体振荡器(简称晶振)来形成自激振荡器,从而产生脉冲并送入单片机内部时钟电路.这样就可以在单片机运行过程中产生唯一的单片机时序.
(3)复位电路:单片机在上电运行后单片机会处在一个不确定的初始状态,这时就需要一个外部电路来让单片机回到一个确定的初始状态,并且从这个初始状态开始工作.让单片机从不确定的状态回到初始状态的过程称为复位.
由于单片机的输出端口有限,想要驱动32个LED灯流水工作就会占用单片机全部的输出端口,不切实际.因此就必须用外部电路进行端口扩展,以减少单片机端口的占用.用74HC595就可以只占用单片机的3个端口并实现8位输出功能.本设计使用4个74HC595的级联实现32位输出.74HC595共有16个引脚,引脚连线图如图4所示,其中Q1~Q7为并行输出端,Q7'为串行数据输出端为复位端,SHcp为8位存储寄存器的时钟信号,STcp为8位移位寄存器的时钟信号,CE为使能端,Ds为串行输入端,Q0为并行输出端.其功能表如表1所示.
图4 74HC595引脚连线图
表1 74HC595功能表
LCD12864是一块图形点阵液晶显示模块,有128个列点×64个行点.显示时每个英文字母占16个行点8个列点,每个汉字占16个行点16个列点.LCD12864在本设计中用来显示输出.其中第一行显示重要节日,第二行显示年、月、日,第三行显示时、分、秒、星期,第四行显示一句名言.LCD12864共有20个引脚,引脚连线图如图5所示,其中V0为LCD驱动电压输入端,RS为并行的指令/数据选择信号(低电平写指令,高电平写数据),R/W是并行的读写选择信号(低电平是写,高电平是读),E为并行的使能信号,DB0~DB7为并行数据输入端,PSB为并/串行接口(高电平是并行,低电平是串行),RST为复位端,VOUT为负压输出端.
图5 LCD12864引脚连线图
DS1302是DALLAS公司生产的一款带涓流充电的计时芯片.可以计算年、月、日、时、分、秒、星期,直到2100年,并有闰年调节功能.DS1302的VCC2和GND引脚接电源正极和负极,当外部电源停止工作后DS1302的8引脚VCC1的备用电源会继续给DS1302供电,这就解决了掉电后数据会丢失的困扰,这也是DS1302的优点之一.DS1302使用的是简单的3线串行接口,接口容易,并且与单片机连线通信时占用单片机的端口少,可节省单片机有限的输入输出端口.DS1302共有8个引脚,引脚连线图如图6所示,其中RST为使能信号,SCLK为串行时钟信号.
图6 DS1302引脚连线图
按键是单独的一个按钮,按钮的一端接电源或地,按下按钮后实现按钮两端电位相同的功能.本设计采用的是一端接地的独立式键盘,共4个按键分别接在P1.3~P1.6引脚,每个按键实现不同的功能.其中按键1实现每按一下按键LED照明变化一个模式的功能,按键2,3,4实现调节时间、日期的功能.
图7 按键抖动波形
本设计所用的按键开关为机械弹性开关.机械弹性按键开关在按下或松开时会有抖动,如图7所示,抖动持续的时间非常短,一般只有5~10ms的时间,虽然这个时间非常短,却不可忽视.这就要求用有效的方法来消除这个电位忽高忽低的抖动过程.我们可以通过编程时延时一段时间的方法来消除抖动.具体做法就是在按键按下后不是立即检测按键的电位,而是让单片机延时5~10ms的时间后再去检测按键的电位,如果5~10ms后按键的电位仍为0(按键另一端接地)则证明按键已经确实按下,反之则没有按下.
在单片机上电工作后,LED花样流水灯一开始不工作,在按下K1键后LED花样流水灯开始工作,此时LED花样流水灯按模式一闪烁.如果不继续按K1,LED花样流水灯会一直按模式一闪烁.当再一次按下K1后,LED花样流水灯按模式二闪烁.如果不继续按K1,LED花样流水灯会一直按模式二闪烁.再按下K1后会按模式三闪烁……一共有六种闪烁方式.其中第六种模式为全亮模式,在全亮模式后再按一次按键后进入全灭模式(即关闭模式).进入关闭模式后再次按下K1又会按模式一闪烁,以此循环.
其中六种模式分别为:
模式一:LED灯从下往上依次点亮.
图8 LED流水灯工作流程图
图9 按键调时工作流程图
模式二:LED灯从上往下依次点亮.
模式三:LED灯从第一个开始依次点亮.
模式四:LED灯从最后一个开始依次熄灭.
模式五:LED灯从下往上依次交替点亮.
模式六:LED灯全亮.
K2~K4实现调节时间的功能.K2按下后实现调节时间、日期的功能,按第一下实现调小时功能,按第二下实现调分钟功能,按第三下实现调秒功能,按第四下实现调年功能,按第五下实现调月功能,按第六下实现调日功能,按第七下实现调星期功能,按第八下时钟恢复工作,再按一下又实现调小时功能……如此反复.K3实现调节时间/日期时的加1功能,即每按一次对应调节的时间/日期加1.K4实现调节时间/日期时的减1功能,即每按一次对应调节的时间/日期减1.
电路焊接完成后,在调试的过程中遇到了以下两个问题:
问题一:流水灯工作时,本不该亮的LED灯在其他LED灯亮灭变化的瞬间会有短暂的闪烁,而且是所有的不该亮的LED灯都闪烁.
问题二:当只有一个LED灯亮时,LCD12864的屏幕亮度正常;当LED灯亮的个数越来越多时LCD12864的亮度会越来越暗;当LED灯全亮时,LCD12864的亮度最暗;当LED灯都灭时或只有少数几个LED亮时,LCD12864的亮度恢复正常.
导致LED灯瞬间闪烁的原因是有浪涌电流,在LED灯和限流电阻串联后的两端并联一个电容起到滤波和增加抗干扰的功能.在并联电容后完美解决了LED灯的瞬间闪烁问题.LED灯全亮时LCD12864屏幕变暗的原因是电流不够,因为调试时用的是电脑上的USB口提供的电源,而电脑的USB口输出电流有限导致LED灯全亮时,没有足够大的电流来驱动LCD12864.
首先经过构思选定方案,把一个整体的设计进行模块化拆分,各个模块都设计好之后再进行整合得到最终的设计成果最终设计的原理图见附图1.