APP下载

基于Arduino的电子时钟设计

2018-11-26黄浩鹏郑誉煌

电脑知识与技术 2018年22期
关键词:电路

黄浩鹏 郑誉煌

摘要:该文通过当下流行的Arduino单片机设计了一套实现电子时钟的方案,使用Proteus8.6进行仿真和本身自带的编程环境进行Arduino程序编写,从而实现带有循环显示和调时功能的电子时钟。该文阐述了电子时钟硬件中的时钟模块、复位模块、按键模块等,进行模块化设计,编程方面也采用同样的思想进行实现。

关键词:电子时钟;Arduino;电路

中图分类号:TP338 文献标识码:A 文章编号:1009-3044(2018)22-0282-02

1 背景

Proteus是当今著名的EDA工具,包含了时下流行的Arduino单片机仿真功能,还可以直接在基于原理图的虚拟原型上编程,实现了实时调试,为电子专业爱好者提供了完备的电子设计开发环境。该文提出了基于Arduino的电子时钟设计方案,并在Proteus8.6里面仿真成功。

2 设计方案

如图1所示,该文使用Arduino单片机进行电子时钟设计,使用模块化的方式组合成电子时钟。

键盘电路如图2所示。采用三个按钮,分别实现光标选择、加和减的功能,三个按键分别与Arduino单片机的三个端口相连接,通过程序控制单片机判断键是否按下,进而将信号,输出控制时间的变化。

显示部分采用LCD1602。LCD1602不仅可以显示数字,还能显示字母符号等,最佳工作电压为5V,耗能和成本也低。LCD1602与Arduino单片机连接如图3所示。

3 控制原理

3.1 文件创建

该文使用Proteus8.6进行仿真,程序编写也是使用Proteus8.6进行实时调试。在安装Proteus8.6的前提下,使用该软件新建一个Project,在创建Project firmware时选择ARDUINO,如图4所示。确定后,自动产生Arduino最小系统仿真原理图和程序框架文件,即可进行编程。

3.2 程序流程

持续流程图如图5所示。由于使用到LCD液晶显示屏,在程序的最开始需调用LCD1302显示头文件,该文件是Arduino程序中所包含的一个函数,用来定义LCD的接口。接下来叙述编程使用到的主要函数:

1)Setup函數:Setup函数作为首先执行的函数,在每次运行时只执行一次。在此程序中,把Arduino单片机与按键电路相连接的三个端口初始化,LCD也进行初始化。

2)FormatDisplay函数:此函数用于格式化输出,通过lcd.print函数向LCD1602输出指定格式的内容。

3)time、Day、Month、Year、Week函数:分别根据实际年、月、日、周、时、分、秒的规律单独编写以上函数。

4)Display函数:调用time、Day、Month、Year、Week函数显示时间、日期、星期。

5)DisplayCursor函数:此函数用于显示光标(一条下划线)。

6)set函数:此函数中分别将time、Day、Month、Year、Week赋值为0,已达到初始化时间。

7)Set_Time函数:此函数用于实现调时功能,使用if语句判断add端和munis是否输入低电平。即按下add键加一,按下munis键减一。

8)Set_Clock函数:此函数用于光标位置的调节,运用了if语句判断选择光标移动到哪一个位置,每按一次choose键,光标分别从年、月、日、周、时、分、秒跳动。

9)loop函数:在以上函数编写好的基础上,执行loop函数,此函数相当于标准C语言中的main函数。在此函数中首先使用millis函数获取单片机当前运行时间,再分别调用Display函数和Set_Clock函数。

4 结束语

经过一段时间的仿真,达到了预期的目的,实现了动态循环计时和调时的功能。该文的方法只需使用Proteus8.6软件即可实现,需要在创建出的Arduino最小系统中添加时钟电路、键盘电路、LCD显示电路即可。相比使用广泛的51系列单片机而言,并不需要使用DS1302时钟电路,减少了这方面所花的时间。并且该文使用了Arduino封装的大量函数,在编写程序上也减少了不少时间。

参考文献:

[1] 梁巧仪, 郑誉煌, 李国豪, 等. 基于Arduino的六轴舞狮机器人[J]. 电脑知识与技术, 2017, 13(8): 90-91.

[2] 杨阳, 李华. 基于DS1302芯片的数字时钟设计[J]. 无线互联科技, 2017(3): 77-78.

[3] 冯大捷. 基于DS1302电子时钟的设计[J]. 科技视界, 2012(3): 119-121.

【通联编辑:谢媛媛】

猜你喜欢

电路
电路的保护
驼峰场编发线向到发场交授权电路探讨
巧用立创EDA软件和Altium Designer软件设计电路
基于MATLAB模拟混沌电路
光电倍增管分压电路