APP下载

基于DS1302的多功能数字钟设计

2015-10-24宋慧超王秀清

关键词:寄存器闹钟按键

宋慧超,王秀清

(内蒙古民族大学物理与电子信息学院,内蒙古 通辽 028043)

基于DS1302的多功能数字钟设计

宋慧超1,王秀清2

(内蒙古民族大学物理与电子信息学院,内蒙古通辽028043)

提出一种多功能数字钟的设计方案,以STC89C52单片机为控制系统的核心,利用DS1302、LCD1602以及DS18B20等芯片显示时间、日期、温度,通过按键模块修正时间、设置闹钟.系统在proteus下进行仿真验证,实现了所述功能.

单片机;DS18B20;LCD1602;DC1302

图1 总体框图Fig.1 Overall block diagram

数字钟是一种通过电子电路实现计时功能的钟表.与传统的机械时钟相比,数字钟观察时间更为方便,它不采用机械驱动,寿命也更长,与石英钟相比,则更具准确性,其误差可低至正负百万分之5/秒.数字钟可以通过集成电路、专用时钟芯片及外围电路或者单片机来实现[1-4],其中利用单片机实现的多功能数字钟以结构简单、精度高、体积小、成本低等优点受到人们的普遍欢迎,具有很高的实用性和广泛的应用前景.

1 系统硬件设计

多功能数字钟具有时钟与温度显示的功能、调时功能、闹钟设定功能等[5].因此数字钟的硬件部分应包括时间显示电路、按键电路、闹铃指示电路、温度传感器电路以及液晶显示电路,总的系统框图如图1所示.

核心控制器选用的是STC公司生产的STC89C52单片机,它是一种增强型的51单片机,具有8K系统内可编程Flash存储器,512字节RAM及32位I/O口线,指令代码完全兼容传统的8051单片机,同时又具有传统51单片机不具备的扩展功能.

显示电路选择工业字符型液晶芯片LCD1602,其显示的内容为16*2个字符,即同时显示两行,每行16个字符.LCD1602与单片机连接电路如图2所示,单片机P0口接数据线D0~D7,由于P0口内部没有上拉电阻,因此需要连接10K上拉排阻以增加单片机的驱动能力.寄存器选择端RS、读写控制端R/W、使能端E分别接P2.5、P2.6、P2.7引脚.VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,使用时可以通过一个10K的电位器调整对比度.

按键和闹钟设计电路如图3所示.闹钟模块通过蜂鸣器实现,当P3.7输出高电平时,三极管截止,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,蜂鸣器发出声音.按键模块用于调整时间,四个按键分别接到单片机的P3.0、P3.1、P3.2、P3.3,功能分别为设置闹钟、调整时间、时间值加1和时间值减1.

图2 LCD1602电路图Fig.2 LCD1602 circuit diagram

图3 按键和闹钟电路图Fig.3 Buttons and alarm clock circuit diagram

DS18B20是采用单总线的方式进行测温的数字温度传感器[6],可读取9~12位的温度读数,分辨率较高,并将结果转化为串行数字信号输出.因此DS18B20数据端与单片机的P1.2直接相连接即可.

图4 DS1302电路图Fig.4 DS1302 circuit diagram

时钟芯片选择DS1302,它是一种性能高、功耗低、带RAM的实时时钟芯片,可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能.DS1302与单片机之间进行的通信仅需要三个接口,分别为复位/片选端RST、数据传输端(双向)I/O、时钟输入端SCLK.典型连接电路如图4所示,其中RST、SCLK、I/O引脚分别与单片机的P1.7、P1.5、P1.6相连接.VCC2连接的5V是工作电压,VCC1连接的3 V是后备工作电压.X1和X2是振荡源,外接32.768kHz晶振.

表1 DS1302时钟寄存器Tab.1 DS1302 clock registers

表2 DS1302控制字Tab.2 Control word of DS1302

2 系统软件设计

2.1DS1302内部寄存器

在DS1302中有12个与时间、日期有关的寄存器,通过访问寄存器地址的方式进行时间数据读写,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch)以BCD码格式存放数据[7],输出前要进行码制转换.各寄存器功能如表1所示.

DS1302的控制字如表2所示,数据从控制字开始传输,其最高有效位必须置1,否则数据不被写入DS1302.位6是标志位,为0时表示存取日历时钟数据,为1时表示存取RAM数据.第5到1位用于指示操作单元的地址.位0是控制字的最低有效位,为零时进行写操作,为1时进行读操作.

控制字输出的总是从最低位开始,在输入控制字的下一个SCLK时钟上升沿到来时,数据从最低有效位即位0开始依次写入DS1302,当在SCLK脉冲的下降沿到来时,从低位0到高位7依次读出DS1302的数据[8].

2.2系统软件程序

以下是主函数main的部份程序代码,从中可以看出主程序所包含的各功能子函数.

下面对程序中所使用的头文件进行简单说明.

1302.h头文件给出了1302的驱动程序,主要包含了1302的初始化函数init1302()和读写控制函数wite1302(uchar addr,dat)与read1302(uchar addr).DS1302是以BCD码进行数据的写入和读取的,因此读取的数据要先转换成十进制,再进行函数返回.

DS18B20的初始化、温度读取函数gettemp(void)、温度转换函数wendu()由ds18b20.h头文件给出,用来实现写读内部RAM中9字节的温度数据、判断温度正负、计算出温度的实际值等功能.

1602.h头文件中给出了LCD1602的写命令函数ml(uchar com)、写数据函数wsj(uchar date)及初始化函数init1602(),其中写命令、写数据函数是通过液晶数据命令选择端变量lcdrs的高低电平来驱动的.

key.h头文件主要对时间按键、闹铃按键、加减按键进行设置,没有键按下时,返回值为0,有键按下时,则返回对应按键的值,分别为1、2、3、4.beep.h头文件通过控制I/O口的电平变化产生方波信号,驱动蜂鸣器发出声音.

3 仿真及结果分析

程序的开发与编译是在Keil C51下进行的,并在Proteus中仿真验证.最终的仿真结果如图5所示,可以看出,液晶屏准确的显示出了当前的日期、时间与温度值.

图5 系统仿真图Fig.5 System simulation diagram

其中,闹钟的设置主要通过4个按键来实现,当按下闹钟设置按键时,时、分、秒位按先后顺序闪烁,每按下+键,对应闪烁位加1,加满后归零,周而复始.每按下-键,闪烁位减1,减至零后则回到最大值再次递减.最终再次按下闹钟设置按键确认设置即可[9].每次启动闹钟时,蜂鸣器的报警次数设置为60次,每响一声,报警次数减1,减至0则报警结束.

时间设置与此类似,按下时间设置按键,年、月、日、星期、时、分、秒位按先后顺序依次闪烁,按下+/-键修改时间值,再次按下时间设置按键后设置完成.

具体仿真结果如图6所示,图(a)表示日期的设置,按下两次时间设置键后,月份值开始闪烁,可通过加减键对其进行修改.图(b)表示的是星期的设置,程序默认的初值为星期一(MON),在这里改为星期三(WES).图(c)表示时间的设置.图(d)表示设置完成后,最终的时间状态.

图6 时间与日期设置仿真图Fig.6 Time and date setting simulation diagram

4 结语

本文通过数字集成芯片DS1302及STC89C52单片机完成了多功能数字钟的设计,利用LCD1602液晶屏显示时、分、秒、日期和9字节的温度数据,设置四个按键分别对时间、日期进行单独校正.系统用C语言编程,在keil开发环境下编译并在proteus中仿真成功,很好的体现了单片机编程灵活,易于扩展的特点.

[1]郑三婷,白燕燕,胡晓霞.浅谈数字电子时钟的设计及应用[J].电子制作,2015(5):90-91.

[2]吴廷鑫.基于FPGA的多功能数字钟设计[J].科技经济市场,2015(5):14-15.

[3]张开碧,王浩,曾勇斌.基于STC89C52单片机的多功能数字钟设计[J].科技信息,2010(35):12-13.

[4]任艳焱.浅谈数学电子钟的设计方法[J].赤峰学院学报(自然科学版),2013,29(8):43-44.

[5]刘娟花,厉谨.基于FPGA的数字日历设计[J].现代电子技术,2014,37(3):137-140.

[6]洪树亮,王富强,刘军伟.基于单片机红外遥控多功能电子钟设计[J].电子科技,2015,28(5):85-86.

[7]任志敏.基于DS1302和LCD1602的万年历系统设计[J].电脑开发与应用,2015,28(3):28-30.

[8]郭小芳,佘明辉.基于单片机的多功能数字钟系统设计与分析[J].电子技术,2012(6):34-38.

[9]冉秦翠,蒲利春,彭厚德,等.多功能电子时钟[J].物理实验,2014,34(7):36-41.

责任编辑:时 凌

Design of Multi-function Digital Clock Based on DS1302

SONG Huichao1,WANG Xiuqing2
(College of Physics and Electronic Information,Inner Mongolia University for the Nationalities,Tongliao 028043,China)

This paper presents a design scheme of multi function digital clock.The core of the control system is STC89C52 microcontroller.The time,date and temperature are displayed by DS1302,LCD1602 and DS18B20.Key module can fix the time and set the alarm clock.The system has been simulated and verified in Proteus and implemented all functions.

Single chip microcomputer;DS18B20;LCD1602;DC1302

TP368.1

A

1008-8423(2015)04-0405-04DOI:10.13501/j.cnki.42-1569/n.2015.12.013

2015-09-29.

内蒙古自治区高等学校科学技术研究项目(NJZY174).

宋慧超(1985-),女,硕士,主要从事信号与信息处理的研究.

猜你喜欢

寄存器闹钟按键
多彩创意闹钟
STM32和51单片机寄存器映射原理异同分析
基于有限状态机的按键检测程序设计
Lite寄存器模型的设计与实现
天然闹钟
小闹钟的提醒
能帮我设个闹钟不等四则
按键消抖在单片机和FPGA实验教学中的应用
一种多方向导光按键结构设计
B超机按键的替换与维护