APP下载

基于Arduino控制板的多功能数字万年历设计

2016-02-23孙一帆厉复新赵睿哲袁丽丹程静

电气自动化 2016年5期
关键词:闹铃控制板液晶

孙一帆, 厉复新, 赵睿哲, 袁丽丹, 程静

(河南森源电气股份有限公司,河南 长葛 461500)

基于Arduino控制板的多功能数字万年历设计

孙一帆, 厉复新, 赵睿哲, 袁丽丹, 程静

(河南森源电气股份有限公司,河南 长葛 461500)

针对当今社会对时间信息的要求不断丰富,设计了一种具有多功能的数字万年历。系统以Arduino 控制板为主控芯片,由时钟芯片DS1302实现时钟计数功能,温度传感器DS18B20实现温度信号的采集功能,最后通过液晶LCD1602对所需信息进行显示,包括时间、温度、节日、闹铃等,并且具有时间校准等功能。软件利用Arduino编程语言实现Arduino 控制板的程序控制。整套系统的电路设计具有掉电保护功能,可长时间的稳定工作,有效的防止时间等信息的丢失。

Arduino控制板;DS1302;DS18B20;液晶LCD1602;仿真

0 引 言

随着现代社会的不断发展,产品的数字化是必然的趋势。微电子和集成电路技术,使得家用电子产品能够方便的数字化,并且产品的种类也日益丰富[1]。LCD数字显示的万年历走时准确、显示清晰直观,并且还具有夜视等多种功能,是当今广泛应用的一种计时工具。但通过对目前市场上时钟的调查,发现大多数时钟都会存在着某些不足之处,比如:走时不精确、无阴阳历变换显示、无节日的显示等等,给人们的日常使用带来了很大的不便。

为此设计了一种计时准确、功能全面的基于Arduino控制板的多功能数字万年历。本系统通过Arduino控制板对DS1302获取的时间数据和DS18B20采集的温度数据进行处理,然后由LCD1602显示出时间、星期、阳历、阴历、温度、二十四节气、节日和闹铃等信息。

1 系统总体设计

系统主要利用Arduino控制板完成对时钟芯片的时间信号的控制与传输,对温度传感器传送的温度信号的调理和传输,最终在液晶LCD上对采集信号的显示,并且实现掉电保持功能。系统设计四个按键对输入接口进行实现,通过四个按键的不同结合对时间进行调整,以及对闹铃音乐的开关和闹铃时间的设置。由扬声器来实现闹铃和音乐的播放。最后由软件控制程序对所有功能的实现。

图1 系统结构框图

系统由Arduino控制板模块、时钟模块、温度传感器模块、键盘接口模块、显示模块和闹铃音乐模块6个模块组成,系统整体结构框图如图1所示。

2 系统硬件设计

系统的硬件设计主要是时钟模块、温度传感器模块、键盘接口模块、显示模块和闹铃音乐模块五部分与主控芯片Arduino控制板之间控制方式的设计。

图2 DS1302电路连接图

时钟芯片DS1302是DALLAS公司推出的支持为后备电池涓流充电,具有低功耗的时钟模块,并支持各种时间的显示[2]。其与Arduino控制板之间的连接只需三条数据连接线,具有简单稳定的特点。连接方式如图2所示。

图3 DS18B20电路连接图

温度传感器DS18B20是由DALLAS公司推出的支持A/D转换的单线数字温度传感器,其测量范围可由 -55 ℃到+125 ℃,其中在-10 ℃与+85 ℃之间的精度是±0.5 ℃,在众多温度传感器中具有较高的性价比,因而被广泛应用到现场[3]。此处采用DS18B20还有另外一重要原因就是其可以直接读出温度的数值,避免了复杂的换算过程,简化了开发过程。DS18B20与Arduino控制板的连接方式如图3所示。

键盘接口模块是由4个微动开关连接Arduino控制板P1.0-P1.3口构成,为了形成电压差,开关的另一端需要连接地线。当有按键按下时,P1.0-P1.3口将由高电平输入转变为低电平输入,不同的改变信号分别对应时间的调整和退出以及音乐和闹铃播放的开关等功能。

液晶LCD1602的主要功能就是显示点阵型的符号,包括字母、数字等[4]。其具有功耗极低、丰富的内容显示和超薄轻巧方便安装等优点。采用字母的显示方法,LCD1602即可满足系统的要求[5]。其可以直接与Arduino通信,二者之间的接线一种是8位连接法,另一种是4位连接法,由于8位连接法对接口的占用比较多,所以此处选用了4位连接法进行连接,节约接口的占用。

3 系统软件设计

图4 数字万年历软件设计图

数字多功能万年历的软件设计图如图4所示。 首先对主程序按照模块化的设计思想进行确定,然后再根据不同硬件的功能不同分别设计其子程序模块,以利用程序语言的描述算法来实现其功能,最后再在主程序中嵌入各模块的子程序。

图5 系统主程序流程图

系统的工作主要由Arduino控制板进行控制,在软件的设计上可划分为系统的初始化和主体的循环两部分。系统的初始化部分主要包括系统的时钟芯片、四个按键值、液晶LCD的初始化以及其他的模块内部函数中的初始化。系统的主体循环部分又可分为外循环部分和内循环部分。在外循环部分中主要是对时间和闹铃音乐播放的设置。在内循环部分中主要是对温度、时间以及其对应的节假日的数据实时采集和日期的转换。系统主程序流程如图5所示。

针对读取温度传感器DS18B20的温度数据的程序进行重点设计说明[6]。由于DS18B20采用的是由单根数据线实现数据的双向传输的协议方式,即1-Wire总线[7],而普通的单片机在硬件的设计上并不支持这种传输协议,而在Arduino控制板上已经采用了软件模拟单总线协议时序的方法实现其对DS18B20芯片的访问,并封装成了可以用来直接读出DS18B20的数据的库,可以直接调取使用,这就使得系统的开发简化,无形中加快了系统的开发速度,缩短了软件的开发周期。以下为部分测试程序列表:

#include

#include

#define ONE_WIRE_BUS 2

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

void setup(void)

{

Serial.begin(9600);

tempSensor.begin(12); // DS18B20接在数字I/O第12号引脚上

}

void loop(void)

{

//检查温度传感器工作是否正常

switch(tempSensor.isValid())

{

case 1:

Serial.println("Invalid CRC");

tempSensor.reset(); //重置温度传感器

return;

case 2:

Serial.println("Not a valid device");

tempSensor.reset(); //重置温度传感器

return;

}

//从DS18B20中读取温度值

Serial.print(tempSensor.getTemperature());

Serial.print("C");

Serial.println();

}

4 仿真调试

图6 Atmega328P与 ArduinoUNO端口引脚对应图

图7 液晶LCD1602仿真接线图

单片机芯片,在相应的存储位置加入Hex文件,并对其工作状态进行参数设置,最后进行播放选择,就可以在Proteus的仿真环境里看到Arduino控制板的运行状态。其中液晶LCD1602仿真接线如图7所示。

系统程序采用模块化的方式进行调试,首先是针对各模块的子程序实现功能的不同进行单独调试,使得最终实现其相应的所需功能。其次是对各模块子程序和主程序进行合理的融合,能够实现总调,其中总调试特别需要注意的是各部分程序模块之间的参数传递的实现。最后在调试期间注意各模块子程序的现场保护与恢复,防止程序运行出错。

调试结果表明时间和温度的误差很小,基本符合设计要求。各个按键都能实现其相应的基本功能,通过按键之间的不同组合可以设定当前的时间和闹铃时间,当定时时间到,小喇叭就发出音乐响声,直到播放完自动停止。

5 结束语

本系统充分利用Arduino控制板的系统资源,结合DS1302和DS18B20两种高精度芯片,使得所检测和显示的数据优于市场上的万年历,并且实现了阳阴历之间的转换和节日显示的功能,以及加入的闹铃音乐等功能,使得本万年历的设计更加人性化、智能化。

本系统具有开发周期短,设计结构简单、调试方便、功耗低、性价比高和稳定性好等优点。符合多功能数字万年历的发展方向,具有一定的市场价值。

[1] 纪欣然. 基于Arduino开发环境的智能寻光小车设计[J].现代电子技术,2012,35(15): 161-163.

[2] 李伟跃. 基于时钟芯片 DS1302 的万年历的设计[J].科技创新导报,2012,9(9): 20-21.

[3] 段波. 基于RS-485,1-Wire总线的远程多点温度采集系统解决方案[J]. 制造业自动化, 2010,32(2).43-45.

[4] BAI SHI,WANG YANFENG,HUANG MIN,et al. Trend of LCD touch sensor technology[J]. 液晶与显示, 2010,25(4): 572-575.

[5] 莫禾胜,唐晓辉. 基于LCD液晶显示器的时间显示系统设计与制作[J]. 科技信息, 2010,27(21): 106-107.

[6] 李钢,赵彦峰. 1-Wire总线数字温度传感器DS18B20原理及应用[J]. 现代电子技术, 2005,28(21): 77-79.

[7] 左现刚,刘艳昌.基于1-wire总线的温度数据采集与硬件设计[J].制造业自动化, 2012,34(14):128-131,134.

[8] 谢龙汉,莫衍. Protues电子电路设计及仿真[M].北京:电子工业出版社,2012.

Arduino的Proteus仿真建立,首先由编程软件Arduino IDE进行程序的编写,通过选择其菜单栏中的Tools菜单项,找到其中Board中的Arduino Uno进行编译,得到相应的Hex文件,即二进制机器码文件[8]。其次是在软件模块Proteus ISIS中绘制所需的电气原理图。其中在Proteus ISIS绘图时是由Atmega328P单片机代替Arduino UNO,其中Atmega328P引脚与Arduino UNO端口对应图如图6所示。双击图中的Atmega328P

Design of Multi-function Digital Calendar Based on Arduino Control Board

Sun Yifan, Li Fuxin, Zhao Ruizhe, Yuan Lidan, Cheng Jing

(Henan Senyuan Electric Co.,Ltd., Changge Henan 461500, China)

Aiming at the constantly enriched time information requirements in today's society a multi-function digital calendar has been designed. This system uses Arduino control board as the main control chip, to realize the clock counting function with clock chip DS1302 and realize temperature signal acquisition function by the temperature sensor DS18B20, and finally display the required information including time, temperature, festival, alarms, etc. via LCD1602 while the time can be calibrated. In software side, Arduino programming language is used to achieve programmable control of Arduino control board. The whole design of the system circuit with the function of power-fail protection can work stably for a long time and prevent effectively the loss of time and other information.

Arduino control board; DS1302; DS18B20; LCD1602; simulation

10.3969/j.issn.1000-3886.2016.05.009

TP273

A

1000-3886(2016)05-0029-02

孙一帆(1986-)男,河南辉县人,硕士生,2014年毕业于河南理工大学,研究方向:电气工程、自动化控制。

定稿日期: 2016-01-04

猜你喜欢

闹铃控制板液晶
日出
不可压液晶方程组的Serrin解
《液晶与显示》征稿简则
开闹钟的老人
开闹钟的老人
轨道交通AFC导向标识控制板设计
一种集成脚本控制单元的设计与实现
一种机载SAR中心控制板的设计
DX-600发射机FCOG6100控制板的原理与应用
液晶与显示2015年第30卷第1期 目录