APP下载

基于C51单片机的多功能电子钟系统设计与仿真

2018-04-24王瀚增姜欣欣

通信电源技术 2018年2期
关键词:电子钟报时子程序

王瀚增,姜欣欣

(延边大学 工学院,吉林 延吉 133002)

0 引 言

随着电子技术行业的迅猛发展,电子产品的市场需求量增多,许多传统产品受到前所未有的冲击。电子钟是日常生活中的必需品,但传统电子钟功能单一,不能很好地满足人们日常的需求。多功能电子钟解决了这些问题,不仅拥有传统电子钟的功能,还拥有显示日期、温度测试、电子闹钟等常用功能,大大满足了人们的需求。

多功能电子钟不仅制作成本低廉,而且具有广阔的市场前景。它的成本低廉主要体现在元器件价格较低,其中C51单片机不仅价格低廉,而且编程简单、功能强大。

1 AT89C51单片机简介

ATMEL公司开发的AT89C51单片机是一款具有低电压、高性能指标的CMOS8位单片机[1]。片内集成有4 kB的Flash存储器和128 B的数据存储器,具有速度快、可靠性高、实时性好等特点,被广泛应用于电子领域。

AT89C51拥有40个引脚,其中包括4个8位并行I/O端口(P0口、P1口、P2口、P3口)、5个中断源、3个程序加密锁、2个16位可编程定时器/计数器中断、1个全双工的异步串行口、1个看门狗定时器和26个特殊功能寄存器[2]。

2 硬件电路设计

2.1 实现的功能

(1)显时。切换按键,使四个七段数码管显示时间、日期以及温度等信息。

(2)测温。利用DS18B20测量温度。

(3)调时。可利用按键,任意调整时间和日期。(4)报时。分为闹钟报时和整点报时,可使用对应的按键开启。

2.2 系统框架设计

本设计将系统的硬件分成7个模块:主控模块(AT89C51)、直流电源模块、七段显示器显示模块、按键电路、时钟电路(DS1302)、数字温度传感器(DS18B20)和蜂鸣器报时模块,具体系统设计如图1所示。

图1 系统框架

主控模块是系统的核心,通过DS18B20收集、测量室内的温度;按键进行电路控制,时钟电路接收主控模块的命令,调整时间,并将获取的时间信息送至主控模块;主控模块将信息送至七段数码管显示;一旦到闹钟或者整点时位,蜂鸣器模块启动报时功能。

3 主要电路模块设计

3.1 时钟芯片DS1302模块

DS1302是由美国DALLAS开发研制,具有时间调节、日期调节等相关功能,其中12个寄存器与之相关。DS1302模块与C51单片机之间通过串行时钟、I/O、复位三根线实现连接。如果向该模块输入正确的数据,需要在时钟脉冲信号上升沿到来前确认输入数据是否正确。当脉冲信号上升沿到达时,将数据写进DS1302内(由最低位到最高位依次写入)[3]。若要读出DS1302数据,则需要等到时钟脉冲信号下降沿到来时读出(由最低位到最高位依次读出)[2]。如表1所示,为DS1302的控制字。写入数据时,控制字的最高位置1;第6位置1时表示存取RAM中的数据,置0时表示存取日历时钟数据;第5位到第1位(A4~A0),表示相关寄存器的地址;第0位表示进行读写操作。

表1 DS1302控制字

3.2 数字温度传感器DS18B20模块

DS18B20是一种性能稳定、反应快的数字温度传感器,测温范围为-55~+125℃,具有可编程9~12位A/D转换精度。相比于传统的温度传感器,DS18B20本身携带A/D转换功能,可以直接通过总线与单片机P3.4口相连,实现将数字量输入到单片机中的功能。DS18B20进行温度转化必须经过初始化(复位脉冲)、发送ROM指令、发送存储器指令的过程。

3.3 按键接口S1、S2模块

按键模块采用S1与S2组合按键形式。按住复位按键可实现返回时间显示主界面的功能,按动S2键切换调节的对象(温度、时间、年、月、日)配合S1的调节(增1操作),在增1的过程中达到数值最大值时归0。实验结果显示,两者配合达到预期效果,具体操作如表2所示。

表2 按键操作效果

4 软件设计及仿真

4.1 软件流程

本实验程序含有主程序、延时子程序、DS18B20读取温度子程序、DS1302时钟子程序、数码管显示子程序、切换调解模式程序、调节设置(时间调整)程序和蜂鸣器报时子程序。各个程序相互协调,执行相应功能,并完成系统所要求的各项功能。具体程序设计流程如图2所示。

下面是I/O接口定义以及相关变量定义的代码:

#include <reg52.h>

#define uint unsignedint

#define uchar unsigned char

sbit DS1302_CLK=P3^5;//设置DS1302相应接口

sbit DS1302_IO=P3^6;

sbit DS1302_RST=P3^7;

sbit ACC0=ACC^0;//内部累加器赋值

sbit ACC7=ACC^7;

sbit S2=P1^0;//设置按键S2

sbit S1=P1^1;//设置按键S1

sbitbz=P1^7;//设置蜂鸣器接口

sbit DQ=P3^4;//定义DS18B20总线接口

unsigned char sec,min,hour,week,day,mon,year,nz_min=0,nz_hour=8,zdn_hour=10,zdf_hour=23;

bit flag_xianshi;//定义所需变量

char mode;

bit show;

uchar last;

uintwendu;

bitflag_nz=1;

bitflag_zd;

bitnz_ok;

4.2 仿真图及结果

由Lab center Electronics公司推出的Proteus软件,可以专门对单片机系统进行仿真[4]。本实验调用Proteus中元件库中的元器件,设计完系统后,调整元器件的位置并连线。修改元器件的属性及名称,使之符合设计要求。最后,核实电路图是否正确。

将生成的hex类型的文件载入AT89C51单片机,点击Proteus软件左下角的运行键,即可进行仿真,结果如图3所示。

5 结 论

本实验以AT89C51单片机为核心,通过对多功能电子钟内部结构的分析,利用C51语言对所要实现的功能进行编程。利用Proteus软件进行仿真,设计可以实现显时、调时、测温、报时功能于一体的多功能电子钟,成功实现了预期功能。设计的多功能电子钟具有广阔的市场前景,但在使用便利性方面还有较大提升空间,后续将会将继续研究,以不断给予完善和优化。

图3 Proteus仿真结果

参考文献:

[1] 易丽华,黄 俊.基于AT89C51单片机与DS18B20的温度测量系统[J].电子与封装,2009,9(5):39-43.

[2] 张毅刚.单片机原理及接口技术(C51编程)[M].第2版.北京:人民邮电出版社,2016.

[3] 祝凤莲.基于DS1302的数字钟设计[J].科技广场,2012,(7):126-128.

[4] 李世瑾.基于单片机的智能电子时钟的设计与应用[J].信息通信,2016,(6):90-92.

猜你喜欢

电子钟报时子程序
电子钟被拆之后
“果蔬电池”求真趣
基于STC80C51的电子钟研制
报时猪
感应式报时闹钟
报时猫
浅谈子程序在数控车编程中的应用
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序
简化编程与子程序嵌套的应用