日历时钟与温度显示
2021-10-29文仕海
文仕海
(贵州师范大学,贵州贵阳,550025)
0 前言
单片机设计与开发比赛中通常都会涉及两个不同界面的切换问题,然而对于大部分比赛者而言这也是难点之一,而温度传感器DS18B20 和日历时钟寄存器DS1302 都属于常用元器件,也是比赛常考的点。完全可以以此为基础进行相应的开发,开发一个双界面独立显示,同时具有报警功能和闹钟功能的系统,具有很强的实用性。而温度传感器和日历时钟寄存器被广泛的应用于各种领域,销售数量也是位居榜首,所以具有很强的研究价值。设计报警功能和闹钟功能也更加的符合人们的需求,是比较人性化的设计,所以该课题是具有一定的研究价值的,是值得深入了解的设计。
1 总体设计
以温度传感器DS18B20 和日历时钟寄存器DS1302 为核心元器件,以STC15F2K61S2 单片机为整个系统的控制中枢,搭建一个日历时钟和温度显示可互相切换的显示界面,用于显示当前的实时温度和时间,同时可设计报警功能和闹钟提醒功能,更加的贴合人们的实际需求。通过独立按键来实现不同界面之间的切换问题,由8 个共阳的数码管来显示当前界面(温度界面或时间界面)。
图1 总体设计框图
利用温度传感器、日历时钟寄存器、STC15F2K61S2单片机、蜂鸣器、独立键盘、电源和显示设备(8 位共阳的数码管)搭建的整个系统(原理图如图2),既能够满足实际需求也能完成一些个性化的设计,更贴近人们的生活。该系统可分为独立键盘、电源模块、温度转换、日历时钟存储、外部设备显示和报警/闹钟模块六个部分。首先,日历时钟寄存器是时间显示界面上参数的具体来源,使用之前需要对日历时钟寄存器DS1302 写入一个具体的时间,然后再从中读取时间继而才能在界面上显示。其次温度传感器DS18B20 需要及时的读取外部的实时温度并完成一个转换的过程(转换为人们可懂的数据显示出来)。独立键盘部分可控制整个电路的开与关,主要就是控制两个不同界面之间的切换。电源模块部分为这个电路乃至系统提供所需的电源,保证STC15F2K61S2 单片机和其他需要使用电源的元器件的正常工作。外部显示设备就是8 位的共阳数码管组成的(主要是为了方便人们理解,基本外设的工作原理),是整个系统内的主要的显示单元,完成时间界面和温度界面的显示。报警/闹钟模块是基于人们的需求设计而来的,报警模式可以通过设定转换之后的实时温度大于某一温度或是低于某一温度时,提醒人们做一些人为的防护,避免自身受到伤害;而闹钟提醒功能也是目前最常使用的功能之一了,在规定的时间提醒人们做什么事情,被广泛的应用于办公、学习等诸多场所。最后,通过Keil5 软件来编写代码、汇编程序,然后通过stc-isp 软件烧录在STC15F2K61S2 单片机中,再结合相应的硬件设施和简要的电路就能很好的来实现相应的功能。
图2 硬件的原理图
2 硬件设计
■2.1 单片机的选择
现实生活中我们最常用的是C51和C52系列的单片机,是一款比较实用的单片机,同时也是一款非常适合初学者上手的单片机。但是相较于一些高性能的单片机而言该系列的单片机具有运行速度相对较慢,自身的保护能力差,很容易烧坏芯片的缺点,同时也只能适合普通的教学环境和对性能要求不高的场合。而选择STC15F2K61S2 单片机不仅可以完全兼容传统的C51 系列的单片机指令,还具有大容量的RAM 数据存储器、高速、低功耗设计、SPI 高速同步串行通信接口(实现日历时钟寄存器和时间显示界面之间的串行通信,提高通信效率,减小误差)、工作频率低等特点。选择STC15F2K61S2 单片机不仅看中它自身的性能优点,极其重要的一点就是该单片机完全兼容C51的指令,不会存在太大的过渡问题,人们上手起来很快,学习起来也比较方便,实用性非常强,可以广泛的应用于很多场所。
■2.2 温度传感器的选择
简而言之,温度传感器就是指可以感受外界温度并且更进一步的转为可用的输出信号的传感器,对于外界环境的温度测量非常准确,使用也比较方便,广泛的应用于农业、工业、电子车间、火电站和仓库等场所。常用的温度传感器有很多,例如:HTF3223、HF3223、LM335ADT、DS18S20、DS18B20 等,我们这里采用的是型号为DS18B20的温度传感器,也是目前最常用、最主流的传感器之一。该传感器具有体积小、抗干扰性强、与单片机接口简单等显著特点。
DS18B20 数字温度计提供9 位(二进制)温度读数,读取当前器件或外界实时的温度。温度信息经过一条单线接口送入DS18B20 存储或从DS18B20 读出显示。因此从主机CPU 到DS18B20 之间的通信仅需一条数据线(和地线),DS18B20的电源可由数据线本身提供而不需要外部电源,DS18B20 以每一次0.5℃的量变化,可测量温度范围是-55℃至+125℃,并且可在1s 内完成温度与数字的转换过程。然后再通过P0 端口将转换之后的数据传输至外设显示,继而完成温度界面的显示功能。
通常的研究之中都是将GND 引脚直接接地,将DQ 引脚作为温度数字的输入/输出端口(可与数码管输入端相连),而VDD 引脚可选择连接+5V 电压。DS18B20的温度转换与读取过程:(1)DS18B20 复位。(2)写入字节0Xcc,跳过ROM 指令区域。(3)写入字节0X44,开始实时温度的读取与转换。(4)延时700ms-900ms。(5)DS18B20 复位。(6)写入字节0Xcc,跳过ROM 指令区域。(7)写入字节0Xbe,读取高速暂存器的温度值。(8)读取暂存器的第0 个字节,温度数据LSB。(9)读取暂存器的第1 个字节,温度数据MSB。(10)DS18B20 复位,表示读取数据结束。(11)将LSB 和MSB 整合为一个16 位数据。(12)判断读取数据的符号,进行正负温度的处理。而且在写入字节地址之前,一定要先要初始化,使得DS18B20 处于初始状态,以免产生误差。在编写代码时需识记的三个地址:0Xcc、0X44、0Xbe,这是规定的地址具有唯一性。
图3 DS18B20的管脚排列
■2.3 日历时钟寄存器的选择
日历时钟寄存器就相当于若干个储存器的集合,储存读入的数据或是即将要取出的数据,而其内部地址通常被划分为存储读入数据的地址和存储取出数据的地址两个部分。现在市场上主流的日历时钟寄存器有DS1302、DS1307、PCF8485 等,但是通常使用的日历时钟寄存器都是DS1302型号的,DS1302 日历时钟寄存器是目前使用范围最广、功能比较好的一款日历时钟寄存器了。
DS1302 是一款涓流式充电时钟芯片其中包括了实时时钟/日历和31 字节静态RAM 两个部分,而实时时钟就相当于一款电子手表,可提供秒、分、时、日、星期、月、年等基本信息。采用SPI 接口方式与微控制器进行同步通信,同时采用了突发方式可实现多个字节的写入或读出的数据一次性传送。在DS1302 中有两个存储器:实时时钟/日历寄存器与静态RAM 存储器,而本次的研究我们使用到的是前者日历时钟寄存器。使用DS1302 芯片具有低功耗、保证数据和时钟信息的串行实时读取和写入的优点。
DS1302 在工作状态下要将复位脚RST 置为高电平并且将8 位的地址信息和命令信息装入移位寄存器进行保存,进而实现对于DS1302的一个初始化过程。在使用DS1302读取或者写入数据过程中需注意SPI 接口对应的时序:在SCLK 时钟信号的上升沿,数据从外部写入DS1302;在SCLK时钟信号的下降沿,数据从DS1302 读出在数码管上显示。
图4 DS1302 内部结构
DS1302 驱动程序框图如图5 所示。
图5
■2.4 独立键盘控制界面切换的具体算法
(1)在8 位的数码管上面设置温度显示界面(保留一位小数),第一位设置为显示P(表示当前界面是温度界面),中间三位显示数字0,其余位则用来显示当前温度(小数点后面保留一位)。
(2)在设置时间显示界面时,前两位表示时,第三和第四位显示“-”,其余四位分别对应显示分和秒。
(3)因为用到了8 位的共阳极数码管来显示温度界面和时间界面,所以需要定义段码表(将待显示数字对应的段码给到P0,即可在数码管上面显示相应的数值)。
(4)通过独立键盘控制两个界面之间的切换(独立键盘与P3 端口连接),用一个状态标志位Status 来区分目前所处的何种显示界面。
(5)应该合理使用延时函数,消除按键的抖动影响。
(6)定义一个变量(temp)来暂存读取出来的温度,选取一个合适的选择器来控制8 位数码管的选通,通过P0 来传输显示的数据。
(7)界面切换时的参考代码:
■2.5 报警功能模块介绍
该模块的报警功能设置主要是基于温度传感器所测温度来设计的。起初需要在报警模块中设立两个临界参数,在温度传感器实时读取与转换温度的同时,会将读取的实时温度与提前设置好的临界参数做一个对比。当读取温度大于临界参数时,报警模块开始工作发出响声提醒人们外界温度过高,应该注意避暑、适当休息;当读取温度小于临界参数时,报警模块也会开始工作发出响声提醒人们外界温度过低,应该注意保暖、维持体温。
■2.6 闹钟功能模块介绍
闹钟功能模块的具体功能实现是利用STC15F2K61S2单片机的定时器或计数器功能来实现的。人们可以根据自己的生活习惯制定好具体的时间安排表,然后在通过计数器或定时器模块来实现闹钟,这个功能模块可以间接性的帮助人们管理生活,也是人们常用的功能之一。更进一步地,可为了提高运算效率将定时器和计数器的相关指令代码写成函数的形式进行存储,这样一来在实现该闹钟功能模块时速度会提升很多,传递的消息也更具有时效性和价值性。
■2.7 电源模块的介绍
电源模块的选择还是比较宽泛的,可以直接在电路板上面装载一个电源供应器,也可以使用几节小电池串联从而得到一个理想的电压值。选择一个尺寸合适的电池一方面可以方便携带,另一方面也便于整个后期的外形包装。但是在选取电池时,一定要满足基本的参数要求,保证整个系统能够有条不紊的工作。
■2.8 外设的选取介绍
我们常用的外部显示设备非常之多,在这里主要使用到的就是8 位共阳的数码管所组成的一个显示器。它们的公共端都接在高电平上面,只需要在P0 口上输入相应的段码就可以显示对应的数字。该外设结构简单、价格便宜、工作原理易懂、而且非常方便携带。同时外部显示设备也可以结合自身需求,选用其他的液晶显示器作为外设,该模块没有特殊的要求。
3 应用分析
现如今有很多的设备都用到了日历时钟和温度显示,并且也取得了一定的成果。电子时钟日历和液晶电视等设备就是最典型的例子之一,但是现阶段的大部分设备都是同时显示这两个重要参数,很少有独立显示的。随着人们生活水平的提高,人们的需求也在发生相应的改变,日历时钟与温度显示作为一个基本应用也必须做出相应的改变来迎合人们各样的需求。换言之可以将其应用到农业、工业、医疗等更多的领域,精致设备的同时,以此为基础开发更多的应用。以日历时钟与温度显示为基础元件的双界面切换的多功能系统,不仅可以满足人们的基本生活需求,相对之前的应用也会更加的直观,使用起来也会更加的便利。
4 结束语
通过使用温度传感器DS18B20 和日历时钟寄存器DS1302 为主要元器件,利用独立按键来做控制器,能够很好的实现两种界面的切换问题。一方面可以加强对于元器件的认识,另一方面对于界面切换问题的有了实质性的认识。对于一些简单的界面切换问题可以很好的完成,可塑性非常强,适用范围也非常广。以此为基础制作而成的显示系统也具有一定的实用性,成本低廉、而又能达到一定的效果,是具有一定的研究价值的。