基于MAX7219显示驱动芯片的电子钟的设计

2021-06-03 06:12柳州工学院周彦明梁伟鄯李旺昆
电子世界 2021年9期
关键词:电子钟数码管按键

柳州工学院 周彦明 梁伟鄯 李旺昆

本文通过采用STC12C2052AD单片机、DS1320时钟日历芯片、MAX7219数码管显示驱动芯片,设计了一款硬件电路,连接方式简洁。软件采用模块化方式编程,设计过程全程软件仿真,成本低、显示美观、易于开发和推广,可应用于数码LED电子日历时钟。本文详细介绍了电子时钟的设计方案及实物制作,以期向读者展示设计方案的可行性和实用性以及为制作者提供相关技术资料支持。

数字钟是一种利用数字电路来显示时分秒的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛的应用。基于单片机的智能电子时钟的设计、制造以及开发应用,是符合人们生活水平不断提高的社会发展需要的。对比传统功能单一、设计简单的机械时钟,基于单片机的智能电子时钟在设计更加便捷、更具创新性的基础上,实现了时钟附属功能的多样化和个性化。一方面,基于单片机的智能电子时钟设计的参数调整方式更为人性化,功能设计灵活性更强,计时更加精确;另一方面,基于单片机的智能电子时钟的设计,不仅能够为人们显示时间(特别是夜间显示效果更好且显示界面丰富),还可以设计开发出诸多实用、丰富的使用功能,如多点闹钟、显示温湿度、显示农历等乃至女性生理期设置,满足人们更多的个性化方面的需求,制造出更多基于单片机的电子计时个性化产品。

1 总体方案设计

根据单片机电子钟各个功能模块的需要,设计了电子钟的总体设计方案,如图1所示。

图1 电子钟总体设计方案图

图2 基于MAX7219的电子时钟原理图

图3 电子钟PCB版图及正反面实物图

图4 MAX7219管脚图及实物图

它包含了4个关键模块和4个单片机工作支持功能电路,它们分别为:DS1302日历时钟芯片模块、MAX7219数码管显示驱动模块、独立按键输入模块、蜂鸣报警模块。单片机工作支持电路有复位电路、下载电路、晶振电路和电源电路。这些模块及电路围绕着51单片机协同工作构成整个基于单片机的电子时钟系统。在此基础上还可以添加一些特殊的功能模块,如WIFI模块实现电子钟自动校时。

2 硬件电路设计

本设计的单片机电子时钟系统的硬件电路设计如图2所示,其中硬件设计主要包括有:一片型号为STC12C2052AD的单片机芯片、型号为DS1302的日历时钟芯片、用于显示时间日历信息的8×8 LED数码管、用于驱动LED数码管的MAX7219显示驱动芯片、复位模块、晶振模块、三个独立按键输入模块、程序下载模块和电源模块等。

在图2中,电子钟采用的是深圳宏晶公司出品的的STC12C2052单片机,整体电路简捷实用,单片机通过三线数据总线与DS1302时钟芯片及MAX7219数码管驱动芯片进行数据的交换,通过三个独立按键来实现日历时钟参数的调整,显示采用八个1寸高亮单字数码管交替显示时间和日历,所设计的程序是通过串行接口下载到单片机中。

PCB板设计采用双面电路板设计,双面布置元器件,正面为八个1寸单字数码管,反面安装集成电路元件及电源、电池、按键等,整个电子时钟产品布局合理、美观大方,PCB板图设计、实物正反面如图3所示。

3 显示驱动模块

MAX7219芯片是一款采用串入并出的全自动动态扫描显示驱动芯片,仅通过Din、Dout、CLK三个管脚与单片机进行数据交换,节省了大量的IO口线,其并口可以连接一个具有8位数码的七段数码管。其数码管通过单片机传送参数给显示芯片可实现15级的亮度调节,MAX7219芯片能够实现对数码管和LED点阵的直接驱动,不需要添加其他的辅助设计,使用方便,广泛的应用于各种仪表的面板和LED点阵的显示中。图4所示为MAX7219芯片的管脚图和实物图。

4 DS1302时钟模块

DS1302是DALLAS 公司堆出的涓流充电时钟芯片, 可以通过I2C总线与单片机通信。DS1302与单片机之间的通信,与单片机连接的三个口线分别是:复位(RET)、I/O 数据线、串行时钟(SCLK),DS1302 外部引脚和实物如图5所示。X1和X2管脚接入的是32768Hz的晶体振荡器,为芯片提供秒信号来源。

图5 DS1320管脚图及实物图

图6 电子钟程序结构

5 程序设计

整个程序框架采用的是模块化编程的结构,如图6所示,它由主程序和三个模块程序组成,具有结构清晰、易于编程阅读、程序修改维护方便的特点。

5.1 主程序设计

如图7所示为数码电子时钟的主程序流程,在单片机上电的时候实现MAX7219的初始化之后,蜂鸣器鸣响一次,在主循环中读取DS1302的时钟参数,跟据按键设置的模式值交替显示时间日历或分别显示年、月、日、时、分、秒及亮度值以便按键调整。

图7 主程序流程图

5.2 显示驱动子程序设计

单片机程序中将需要将显示的时间日历和数码管亮度值信息通过该子程序写入到对应的MAX7219显示驱动芯片中来实现特定的显示功能。MAX7219芯片为使用者提供了三线操作接口,通过串行写入数据的方式即可实现对其控制,写入的数据不仅包括LED显示的内容,还有对MAX7219的初始化工作配置,其中串行写入数据的时序图如图8所示。

图8 MAX7219芯片工作时序图

在向MAX7219写入数据之前,LOAD和CLK处于低电平状态,在DIN给出数据(D15)并将CLK从低电平拉至高电平,在CLK上升沿触发下使DIN的数据写入到MAX7219内部寄存器中,此过程实现1bit数据写入,循环操作16次,写入16bit的数据之后将LOAD从低拉到高电平,LOAD的上升沿信号触发了MAX7219内部寄存器接收一个完整的16bit数据。

其中MAX7219芯片的初始化程序为:

5.3 DS1302时钟日历芯片子程序设计

在DS1302时钟芯片与单片机交换数据的过程中,一个CLK周期是一个上升沿,紧跟着一个下降沿。对于数据的写入,在时钟CLK的上升沿期间,数据必须正确稳定呈现;在时钟周期的下降沿,单片机读取数据位输出。若 RST(CE)引脚为低电平,所有数据传输将中止,I/O 引脚变成高阻状态,DS1302 读写时序如图9所示。

子程序总共有六个,它们分别是:

(1)向1302当前地址处写入1Byte数据

图9 DS1302 读写时序图

(2)从1302的当前地址处读出1Byte数据

(3)将数据Data写入1302寄存器add处

(4)读寄存器add处的值

(5)设置时间

(6)读取时间

在设定时间日历时调用设置时间子程序,在主程序主循环中反复调用读取时间子程序,读出DS1320芯片中的数据依次存放在time[]数组中供MAX7219显示调用。

图10 电子钟仿真图

5.4 按键功能程序

设置了3个按置,接入单片机的P1.0-P1.2脚,分别为设置键(时间/日期/亮度数据的设置)、加1和减1键(实现数据的加减1操作)它由按键扫描子程序uchar scan_key(void)和按键处理子程序组成void cl();若键值发生了变化先调用读DS1302芯片数据函数DS1302_ReadTime(UserTime),获得相关参数,处理完后调用写DS1302芯生数据函数DS1302_WriteTime(UserTime);将相关参数写入DS1302芯片中实现时间日历数据的更替。

6 电子钟程序设计硬件仿真

利用Proteus 8 Professional软件设计调试的电子钟具有方便、快捷、直观、可视化等诸多优点,调试过程中易于发现和解决问题。电子钟通过Proteus软件调试成功后,编译完成的程序勿需任何改动就可通过实际的硬件电路实现,极大地提高了开发效率。如图10所示。

结束语:电子钟这一大众化的产品设计,既是电子技术、单片机、电子EDA等技术的综合,又是日历芯片、显示芯片、单片机C51编程等软硬件技能点的应用。程序的调试要注意程序的模块化结构设计和程序优化,尽可能使用归范语句使整个程序框架清淅明朗。EDA的设计要留一定的功能接口,给产品足够的升级扩展空间。在调试过程中,要认真检查原理图及PCB图保证硬件电路的正确性,包括元器件的连接、元件检验测试、焊接质量等。而先设计再仿真后制作的工作流程,能极大提高工作效率,具有事半功倍、胸有成竹的效果。当然,也可对现有电子钟进行扩展,加上温度传感器、产品外围包装等的动态点缀化设计,使电子产品的个性化设计与定制更能满足消费者的需求,这也正单片机控制的快速灵活性、高性价比的具体体现。

猜你喜欢
电子钟数码管按键
基于有限状态机的按键检测程序设计
微课教学设计之“数码管动态显示”
电子钟被拆之后
“果蔬电池”求真趣
Arduino编程
基于STC80C51的电子钟研制
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
Design and establishment of a multi-function stop watch
一种多方向导光按键结构设计