您的当前位置:首页正文

基于51单片机的多功能数字钟设计

来源:华拓网
电子电路设计与方案

基于51单片机的多功能数字钟设计

钟鹏程

(中国矿业大学孙越崎学院,江苏徐州,221116)

基金项目:2017年国家级大学生创新训练计划资助项目(201710290087);2018年省级大学生创新训练计划指导项目(201810290156X)。摘要:为了实现对时间的掌控和衡量,设计了一种基于51单片机的多功能数字钟,提出了以STC89C52单片机为主控制单元的数字钟总体方案,详细设计了主控制器电路、电源电路、液晶显示电路、时钟模块电路、数据存储模块电路、语音模块电路、网络模块电路、按键模块电路和蜂鸣器模块电路,用C语言在Keil中编写了相应的控制程序,并进行了软件调试,满足了设计要求。关键词:51单片机;数字钟;C语言;Keil

DOI:10.16589/j.cnki.cn11-3571/tn.2019.07.006

0 引言

在当今社会,时间就是金钱,做任何事情都需要对时间进行掌控和衡量。因此,一款多功能数字钟对于所有人而言都是必不可少的。随着科技的进步与发展,基于单片机设计的多功能数字钟已经十分流行,因其成本低、功能多、资源丰富等优点,深受人们喜爱。

为了使人们的生活更加方便,本文基于STC89C52单片机设计了一款多功能数字钟,并在Keil环境中采用C语言开发了相应的控制程序,能实现钟表的所有基本功能以及一些附加功能。

[1]

时、网络校时等功能,语音模块、蜂鸣器模块实现语音报时、闹钟等功能。

2 硬件电路设计

■ 2�1 主控制器电路设计

主控制器选用的单片机型号为STC89C52。STC89C52单片机具有成本低、功能强、资源丰富等优点,适合作为数字钟的主控制器。若选用比STC89C52单片机更高端的单片机,不仅成本会有所提高,还会造成一定程度上的资源浪费。■ 2�2 电源电路设计

采用5V直流电源为整个系统供电,采用纽扣电池为时钟模块DS1302芯片稳定供电,确保主电源关闭后时钟的正常运行。语音芯片ISD4004需要3�3V电源,通过AMS1117-3�3芯片搭建电路,可以提供稳定的3�3V电源。■ 2�3 LCD1602液晶显示电路设计

LCD1602是一种点阵型液晶模块,是专门用来显示字母、数字、符号等的。与数码管相比,LCD1602液晶能够显示汉字,呈现的信息更丰富。■ 2�4 时钟模块电路设计

时钟模块采用DS1302芯片,电路如图2所示。DS1302芯片通过串行方式与单片机进行数据传送,能够向单片机提供的实时时间信息包括年、月、日、时、分、秒等,并可对月末日期、闰年天数自动进行调整。

1 总体方案设计

本文设计的多功能数字钟的总体方案结构如图1所示,主要包括9个模块:主控模块、显示模块、时钟模块、数据存储模块、电源模块、语音模块、网络模块、按键模块和蜂鸣器模块,并能实现以下功能:

(1)设置时间功能,可正常显示时、分、秒。(2)定时功能和闹钟功能。(3)秒表功能和倒计时功能。(4)语音报时功能。

(5)接入电子日历功能,即能显示年、月、日。(6)能够接入网络并自己校准显示某地时间。

图1 数字钟总体方案结构

在主控模块的控制下,电源模块实现对整个系统的供电,显示模块实现年、月、日、时、分、秒的显示,数据存储模块用于存储各种设置数据等,按键模块、时钟模块、网络模块实现时间调整、万年历、闹钟设置、秒表设置与倒计

图2 DS1302时钟模块电路

■ 2�5 数据存储模块电路设计

采用AT24C02芯片进行数据存储,如图3所示。如果

www�ele169�com | 17

电子电路设计与方案

采用51单片机内部的EEPROM进行存储数据,那么单片机内部EEPROM在存储数据时需要先擦除整个扇区后才能写入,这样比较麻烦,所以选用AT24C02芯片进行数据存储更好。AT24C02芯片内部含有256个8位字节,用于存储各种设置数据等。

于闹钟等功能,并利用PNP型三极管开关电路来驱动。

3 软件设计

本设计在Keil环境中采用C语言设计开发了多功能数字钟控制程序。C语言与汇编语言相比,在功能上、结构性、可读性和可维护性等方面均具有明显的优势,因而易学易用[2, 3]。

■ 3�1 主函数的设计

主函数是程序的入口函数,一个完整的程序必须包含该

图3 AT24C02数据存储模块电路

函数,如图5所示。在该函数的开头一般都是先对单片机和一些外围器件需要进行初始化和重新赋值一些变量,初始化完成后进入死循环。如果不进入死循环,程序执行一次就会退出。如果进入死循环,程序就会不断地循环达到实时检测的目的。主函数中的代码不宜过多,具体的代码一般都是采用函数进行封装然后在主函数进行调用,这样方便阅读和修改。

■ 3�2 读时函数的设计

DS1302一共具有31个RAM寄存器,本文主要使用了年寄存器、月寄存器、星期寄存器、日寄存器、时寄存器、分寄存器、秒寄存器。当给DS1302的秒寄存器处给定一个数值后,DS1302就可以开始从这个值进行秒累加,并可自动进位。对DS1302读取数据需要先发送寄存器地址,然后在读取八位数时根据低位在前高位在后的原则,而在发送数据的时候也是先发送低位在发高位。其中在写数据的时候是下

■ 2�6 语音模块电路设计

语音模块采用ISD4004芯片,供电采用AMS1117为ISD4004提供3�3V,带有MIC话筒输入和音频线输入电路。输出采用LM386放大声音,可以直接驱动8欧、4W左右的喇叭,如图4所示。

图4 LM386语音放大电路

降沿有效,读数据时为上升沿有效。读时函数流程图如6所示。■ 3�3 显示函数设计

LCD1602的显示只需要严格的按照厂家的时序要求进行编程就可以完成显示。LCD1602的液晶显示首先需要将需要显示地方的地址通过命令写入,然后将数据按顺序写入即可。在写入地址后显示第一个内容后地址会自动加1。软

■ 2�7 网络模块电路设计

通过串口连接安信可科技的ESP-01S WiFi模块,并通过网络进行校时。■ 2�8 按键模块电路设计

本文设计的数字钟通过7个独立按键进行人机交互。使用按键时会有抖动,在程序中需要适当的加上短暂的延时消抖。本文采用7个独立按键进行时间调整、万年历、闹钟设置、秒表设置与倒计时、网络校时等功能。■ 2�9 蜂鸣器模块电路设计

蜂鸣器选用5V有源蜂鸣器,主要用18 | 电子制作 2019年04月

图5 主函数程序流程图

件根据输入需要显示的位置坐标计算出地址。显示函数流程图如7所示。

图6 DS1302读时函数流程图

图7 显示函数流程图

■ 3�4 语音函数设计

语音模块由可编程语音芯片ISD4004及其外围电路组成。通过编程由单片机输出信号控制ISD4004完成语音的录入。执行系统程序时,由单片机输出信号控制ISD4004完成语音的取段放音。语音函数流程图如图8所示。

电子电路设计与方案

图8 语音函数流程图

■ 3�5 网络校时函数设计

网络校时功能主要由ESP-01S WiFi模块实现,用户可以使用该模块为现有的设备添加联网功能,也可以构建独立的网络控制器。当负责网络校时的按键按下时,连接WiFi网络和授时服务器,获取时间并写入DS1302芯片。网络校时函数流程图如图9所示。

4 结束语

图9 网络校时函数流程图

本文根据多功能数字钟的设计要求和工作特点,制定了详细的设计方案,并按照此方案逐步完成了系统总体方案设计、硬件电路设计和软件程序设计。整个系统的核心为STC89C52单片机,外围电路包括电源电路、液晶显示电路、时钟模块电路、数据存储模块电路、语音模块电路、网络模块电路、按键模块电路和蜂鸣器模块电路,这些外围电路在51单片机的控制下,实现了设置时间功能、显示年/月/日/时/分/秒/功能、定时功能、闹钟功能、秒表功能、倒计时功能、语音报时功能,并且能够接入网络并自动校准显示某地时间。

参考文献

* [1] 宋雪松,李冬明,崔长胜� 手把手教你学51单片机C语言版

[M]� 北京:清华大学出版社,2014�

* [2] 祝良,郭臣鹏,苏宏锋� 基于AT89S51 单片机的数字钟设计与实现[J]� 数字技术与应用,2017,99(5):160-161,164�* [3] 谭浩强�C程序设计(第四版)[M]� 北京:清华大学出版社,2012�

www�ele169�com | 19

因篇幅问题不能全部显示,请点此查看更多更全内容