APP下载

基于AT89S52单片机的数字万年历设计与实现

2018-05-14李彩龙王一凡马千里

科技风 2018年2期
关键词:C语言时钟电源

李彩龙 王一凡 马千里

摘 要:电子万年历是一种非常广泛的日常计时工具,在现代社会越来越流行。它可以对年、月、日、周、时、分、秒进行计时,还具有闰年补偿等多种功能。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周、时、分、秒和温度等信息,还具有时间校准等功能。系统软件设计采用C语言来完成,C语言语法简洁,使用方便,用于完成软件设计非常方便。程序采用模块化设计,使得逻辑关系简单明了,维护方便。

关键词:AT89S52;时钟芯片DS1302;液晶显示屏LCD1602;温度采集芯片DS18B20

本系统为硬件、软件相结合的一组设计。除了采用集成化的时钟芯片外,还有采用MCU的方案,利用AT89系列单片机微机制成万年历电路,采用软件和硬件相结合的方法,控制液晶输出显示。其最大的特点是:硬件电路简单,安装方便易于实现,软件设计独特、可靠。

一、系统总体功能

本系统以AT89S52单片机为控制核心,通过与DS1302和DS18B20通信获取实时时间和实时环境温度,并将得到的数据通过LCD1602液晶显示出来。因此本设计可分为以下模块:控制模块、LCD显示模块、实时时钟模块、实时环境温度采集模块。

基本功能:采用LCD为显示器并能够显示年、月、日、时、分、秒、星期,同时具备以下特殊功能:

(1)能够完成掉电保护;

(2)具有温度显示功能。

二、硬件结构设计框架

设计主要分为硬件设计和软件设计两大部分。硬件设计包括AT89S52单片机、DS1302时钟芯片、LCD1602显示模块、DS18B20温度采集模块等组成。各个部分以单片机为主体协调工作,以完成各种功能。软件采用C语言编写,整个软件系统采用模块化的程序设计方法,设计程序共分为DS1302程序模块、LCD1602程序模块、DS18B20程序模块和主程序模块四个模块。软件系统的主要特点是在硬件的支持之下,实现了完全的友好的人机交互功能。最后将代码编译成HEX文件烧写入单片机,让它可以向各个部分收发指令和数据,整体实现数字万年历的设计。本系统的结构框图如下图1所示:

三、硬件部分

(一)控制系统模块

使用AT89S52作为万年历的主控芯片,AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,每一条I/O线都能独立地作输出或输入。

单片机的最小系统如图2所示,18引脚和19引脚接时钟电路,XTAL1接外部电容和晶振的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部电容和晶振的另一端,在片内它是振荡器倒相放大器的输出,第9引脚为复位输入端,接上电容,电阻及开关后构成上电复位电路,20引脚为接地端,40引脚为电源端,如图2所示:

(二)时钟电路模块

DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。

图3为DS1302的引脚排列,其中VCC1为后备电源,VCC2为主电源,在主电源关闭的情况下,VCC1为芯片供电,使其能保持时钟的连续运行。DS1302由VCC1或VCC2两者中的较大者供电,当VCC2高于VCC1 0.2V时,VCC2给DS1302供电,当VCC2小于VCC1时候VCC1供电。X1和X2是振荡源,外接32.768KHz晶振,RST是复位信号线, I/O为串行数据输入端,SCLK是时钟输入端。

(三)LCD显示模块

1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。图5是其在Proteus中的连接电路。

(四)温度采集模块

1.DS18B20特性和引脚介绍

1)DS18B20单线数字温度传感器,采用单总线的接口方式与微处理器连接时仅需要一条线即可实现微处理器与DS18B20 的双向通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。

2)测量温度范围宽,测量精度高,DS18B20 的測量范围为 -55 ℃ ~+ 125 ℃ ;在 -10~+ 85℃范围内,精度为 ± 0.5℃。

3)在使用中不需要任何外围元件。

4)支持多点组网功能,多个 DS18B20 可以并联在唯一的单线上,实现多点测温。

5)供电方式灵活,DS18B20可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。

6)测量参数可配置,DS18B20的测量分辨率可通过程序设定 9~12 位。

7)负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。

8)掉电保护功能DS18B20内部含有EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。

9)DS18B20具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。

2.下载模块采用USB接口,使用CH341A芯片

CH341A是南京沁恒电子有限公司生产的USB转串、并口的芯片,芯片只需几个周边元件就可工作,只要在电脑上安装个小小的驱动就可以对单片机进行程序下载。

四、软件设计

软件设计是本设计的关键,软件程序编写的好坏直接影响着系统运行情况的良好。因本程序涉及的模块较多,所以程序编写也采用模块化设计。C语言具有编写灵活、移植方便、便于模块化设计的特点,所以本系统的软件采用C51编写。

主程序流程图:

五、仿真

六、结语

本系统以AT89S52为核心部件,使用串行时钟芯片DS1302实现时间计时的功能。在该系统设计调试完成之后,对最后的成功进行分析,同时结合在调试过程中出现的错误进行综合分析,总结在实际系统设计和调试过程中的经验。

在系统硬件设计之前,要结合当前系统的发展趋势和现状对系统功能进行定位,使系统在实际应用中具有竞争力。该系统最大的特点就是界面友好,走时准确,和现在使用LED显示数据的万年历相比,体积更小,可以作为轿车车载显示装置,系统采用液晶显示器,可以使系统应用到更加现代化的地方,使系统采用模块化程序设计法,同时保留了很多的微控制器I/O口,扩展十分方便,以往的采用LED显示数据的万年历要想实现的功能扩展,除需要对系统程序进行修改,还必须增加或减少LED数码管,硬件改动较大。该系统的显示部分界面改动非常灵活,仅仅改动程序就能实现界面的修改,用户还可以选择自己喜欢的界面,这是以LED作为显示装置的数字万年历所不能实现的。

参考文献:

[1]牛昱光.单片机原理与接口技术(第三版).北京:电子工业出版社,2008.

[2]史建芳.智能仪器设计基础,电子工业出版社,2007.

[3]郁有文.传感器原理及工程应用(第三版),西安电子科技大学出版社,2008.

[4]胡振宇,刘鲁源,杜振辉.DS18B20接口的C语言程序设计[J].单片机与嵌入式系统应用,2002.

作者简介:李彩龙(1988-),男,汉族,山西吕梁人,本科,助教,研究方向:电子信息工程。

猜你喜欢

C语言时钟电源
“C语言程序设计”课程混合教学探索
Cool Invention炫酷发明
这个时钟一根针
基于C语言的计算机软件编程技术探究
中职C语言单片机课堂教学中的趣味性探讨
计算机原理中C语言的应用价值
有趣的时钟
等效电源法的应用
时钟会开“花”
新电源