admin 管理员组

文章数量: 1086019


2024年4月27日发(作者:八位颜色代码查询)

ELECTRONICS WORLD

技术交流

基于Arduino智能电子钟系统设计与实现

江海职业技术学院机电汽车学院 张丽红 方 婷

5G的到来,物联网的应用会越来越广泛,家具生活用品

也需要联网,时钟是我们生活中离不开的物品,单片机作为

一个具有CPU的集成控制芯片,作为控制器被广泛使用,基

于Arduino单片机的智能电子时钟系统开发成本低,具有人机

对话简单,操作方便,显示清晰等特点。

随着ABC(Artificial intelligence,Big data,Cloud

computing)(/s?id=72

732367&wfr=spider&for=pc)时代与5G的到来,物联网就会

随处可见,要想非电物品相连,那么每个物体都离不开计算

机技术,单片机这款最小的计算机就大有可为,生活中的各

种智能物品、现代工业自动化测控领域都会有其身影,在工

业4.0标准下,单片机已成为智能控制系统的核心。Arduino

(柯博文,Arduino完全实战:电子工业出版社,2016)单

片机是软件硬件开源的单片机系统开发平台,可以通过常用

的编程语言C语言进行程序的开发,开发成本低,Arduino还

可通过各种各样的传感器来采集数据,处理数据,所以利用

Arduino作为控制器实现智能电子时钟的系统是可行的。

DS1302和4个独立按键,实现实时时钟与闹钟的设定,设计方案硬件框图

如图1所示。

1.2 硬件电路图设计

根据硬件框图,利用Proteus软件绘制了基于Arduino的智能电子钟控

制系统原理图,如图2所示。其中Arduino的数据输入输出口分配如下:

D12、D11、D5、D6、D9、D10接液晶屏1602,后4个接1602的数据口,

D11接液晶屏的使能端,D12接片选端;Arduino的D2、D3、D4分别接

DS1302的RST、SCLK、I/O上,DS1302的晶振使用32.768KHz,3V电

池用于芯片备份电池,主电源关闭后,时钟还可正常运行;按键采用

4个,分别实现时钟设置、闹钟设置、加1键、减1键的功能,考虑到

Arduino模拟量输入端口的数量有限问题、且按键数量不太多,保证运

行稳定有效等因素,最终Arduino和按键的连接方式采用AD式键盘;

Arduino的端口A0接AD式键盘;AD式键盘依次接了4个电阻,通过电阻

分压来区分4个按键;Arduino的数据端D7接温度采集传感器DS18B20的

数据输出端2脚。

图1 硬件框图

1 基于Arduino智能电子钟硬件电路设计

1.1 设计方案

Arduino UNO开发板,有32个端口,除去电源与时钟

端口后,模拟量输入端口(ANALOG IN)有6个,数字量

(DIGITAL)输入输出端口有14个,由于资源少,端口数

量少,所以外围芯片采用常用的1602液晶屏、DS18B20、

图2 电子钟控制系统硬件电路图

2 基于Arduino智能电子钟控制系统的软件设计

利用Arduino单片机的专门程序编译软件IDE进行程序的编制与调

试,编程思路主要是采用模块式结构,分别编制并调试各个功能模块程

114

ELECTRONICS WORLD

技术交流

序,如液晶显示模块程序、时钟读取模块程序、温度采集模块程

序、按键读取并处理模块程序。利用串口调试工具和硬件仿真等方

法调试各个模块的单独程序后,再集成在一个程序里进行联调。集

成调试时要注意各个模块之间的时序问题,以及要把相应的初始

化程序全部放到初始化安装setup()函数中,需实现的主要的功能的

程序放到主循环loop()函数中。arduino库文件中有大量的库函数可

用,大部分程序的细节不需自己编制,使用时根据需要可调用修改

使用,编制系统程序时大部分时间是了解掌握所用函数的使用方

法,也就是要知道这些函数需要什么参数和表达式,输入输出数据

的类型、状态等。

2.1 1602液晶显示程序

1602液晶显示程序包含的LiquidCrystal.h头文件中已编写了操

作液晶的许多函数,根据相关函数功能调用即可,方便程序编制,

如LiquidCrystal lcd(12,11,5,6,9,10)函数参数要根据液晶屏1602与

Arduino单片机IO接口进行设定。显示程序如下:

#include

LiquidCrystal lcd(12,11,5,6,9,10);

void setup()//初始化函数,用于启动LCD以及用了串口进行调

{ (16,2);sor(0,1);(16,2);

(“I LOVE YOU”);}//打印字符串

void loop()

{(millis()/1000);(“ Second”);}

2.2 读取时钟信号程序

读取1302芯片时钟信号程序的调试是通过Arduino自带的串口

调试功能实现的,编制了串口调试时钟程序,主要利用两个串口操

作函数:(9600) 和n(buf)实现的。通过串口调

试确定1302芯片时钟信号格式、类型等状态后,再把相应的时钟程

序合成到显示程序中,最终使1302的实时时钟信号按照一定的格式

通过1602显示出来。

2.3 按键处理程序

从AD键盘电路图中知道,不同的按键会接通不同位置的电

阻,从而会产生不同的输出电压,通过对比电压值的范围来确定相

应的按键,这些电压值的范围可通过串口程序调试出来,所以先编

制了AD键盘串口调试程序,找出各个按键的电压数据区间,通过

数据区间利用if语句读出键值,注意每个按键对应的电压值是个数

据区间,不是一个固定值。根据各按键需要实现的功能编制了按键

处理函数,主要是利用switch分支与语句实现的,并送1602进行相

应的时钟显示。

2.4 温度的读取与显示

DS18B20温度传感器通过单总线一条口线接在Arduino单片机

的D7上,实现双向通信,温度读取程序要包含OneWire.h头文件,

先通过串口调试工具进行DS18B20温度值的读取,找出温度值的数

据特点,然后再通过Arduino单片机进行温度值的处理,并把读取

的温度值在液晶显示屏1602上进行显示。

3 基于AArduino的智能电子钟系统调试结果

利用搭建好的基于Arduino单片机的电子钟控制系统硬件电

路,在Arduino单片机IDE开发环境下,通过Arduino单片机自带的

串口调试工具进行各个程序模块的调试后再进行硬件仿真,逐一完

成后通过整合、系统规划调整、不断的仿真调试,最终完成了系统

程序的调试仿真,基于Arduino单片机的智能电子钟控制系统调试

结果如图3所示。其中液晶屏上分两行进行显示:首行显示的是星

期、室内实时温读、秒,第二行显示的是年、月、日、时、分,

秒。

图3 智能电子钟控制系统调试结果

4 总结

利用Arduino单片机开发项目,比利用51单片机要简单快速,

容易上手,但是以有一定的单片机系统开发能力为前提的。根据智

能电子钟控制系统的电路图,通过串口调试工具先形成各个模块程

序,然后组织整合模块程序形成电子钟控制系统程序,通过实践调

试,基于Arduino单片机的智能电子钟控制系统达到了设计要求,

并具有窗口界面简单、时钟调整方便等特点。

基金项目:江苏省教育厅高校哲学社会科学研究基金项目(批

准号:2018SJA1189);江苏省大学生创新创业训练项目(项目编

号:2Y)。

作者简介:张丽红(1973—),女,硕士研究生,副教授,江

海职业技术学院教师,研究方向:自动控制技术。

115


本文标签: 程序 时钟 单片机