机测量和控制技术在经济迅速发展的今天,已被广泛应用于人类生活中,如工业控制、自动检测、智能仪器仪表、家用电器、等各个方面。而主控制器是每个控制系统不可或缺的部分,正因为单片机有体积小,重量轻,抗干扰能力强,环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易等优点,所以它是很多设计人员的首选控制器。而在人们的日常生活或工业生产中,经常要对温度进行检测及控制。在许多场合器材设备对温度的要求非常高,而传统的温度计反应速度慢、读数麻烦、测量精度不高、误差大,所以需要设计一种高精度的温度计。为了在很大程度上提高对温度的控制水平,因此以单片机为核心的温度采集与控制系统很有用研发和应用意义。
本文研究了一个可以实时存储和显示当前的温度数据,并且可以切换显示当前的时间而且可对其时间进行修改的温度显示系统。文章以STC89C52单片机,DS18B20温度传感器以及DS1302时钟芯为硬件基础,主要介绍了相关的硬件电路和相关应用程序。硬件电路主要包括STC89C52单片机最小系统,测温电路、实时时钟电路、数码管显示电路以及通讯模块电路等。系统程序主要包括主程序,读出温度子程序,计算温度子程序、数码管显示程序以及按键控制程序等。
一、温度显示系统总设计原理
系统设计总框架如图1.
1.控制模块:通过应用单片机,对系统进行初始化,主要完成对数码管显示、按键的处理等功能,起到总体控制和协调各模块工作的作用。
2.盘输入模块:主要完成与时间相关的设置和温度、时间、日期的切换。
3.码管显示模块:主要对单片机送来的时间、日期、温度信息进行显示。
4 .度采集模块:采用D S 1 8 B 2 0温度传感器,向单片机提供实时温度信息。
5.子钟模块:采用时钟芯片DS1302,该芯片可以进行时、分、秒的计数,DS1302通过串行方式与单片机进行数据传送,向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息。
二、各模块实现
1.主控制模块
在文章设计的温度显示系统设计中,控制核心是STC89C52单片机,该单片机51系列增强型8位单片机,它有32个I/O口,片内含4KFLASH工艺的程序存储器,便于用电的方式瞬间擦除和改写,而且价格便宜,其外部晶振为12MHz,一个指令周期为1μS.使用该单片机完全可以完成设计任务,其最小系统主要包括:
位电路、震荡电路以及存储器选择模(EA脚的高低电平选择),电路如图2.
2.键盘输入模块
键盘输入模块(见图3)上“0”、“4”、“8”、“C”可以配置成独立按键,通过跳帽J11切换,在独立按键中,应该把跳帽接到左端。
功能介绍:本文中,P3.0-P3.3四个独立按键分别时间调整按键、功能加减、日历切换按键、温度切换按键。当P3.0(set)按下系统进入时调整状态:分单元闪烁,再按下P3.1(up)时,对显示的数码管的时段进行加一功能,达到对时调整,再次按下P3.0(set)时进入分钟调整状态,分单元闪烁,通过按键P3.1(up)加一调整分的显示,秒不进行调整,时间调整结束后,再次按下P3.0(set)进入正常时钟显示;当按下P3.2(switchriqi)时,切换到日历的显示;当按下P3.3(setwendu)时,切换到温度的显示。
3.数码管显示模块
显示原理:因为所有位数码管的段选线被并联在一起,位选线控制哪一位数码管有效的有效,所以就需要为每一位数码管配一个锁存器,进而简化了硬件电路。点亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉残留作用,使人感觉到各位数码管似乎同时在显示。由于动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的限流电阻。数码显示模块电路见图4.
4.温度采集部分
文章采用一线制数字温度传感器DS18B20.
传感器输出信号进4.7K的上拉电阻直接接到单片机的P1.0引脚上。该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。在本设计中采用外部供电方式实现DS18B20传感器与单片机的连接,其接口电路下如图5所示。
工作原理:温度以16bit带符号位扩展的二进制补码形式读出,下表给出了温度值和输出数据的关系。程序中需将16进制温度值转化为十进制,再转化为数码管显示需要的段码表数据格式。
5.电子钟模块
采用时钟芯片DS1302,该芯片可以进行时、分、秒的计数,DS1302通过串行方式与单片机进行数据传送,向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息。
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。读写时序说明:
DS1302是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。要想与DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如图6.
控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。
位6:如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1(A4~A0):指示操作单元的地址;位0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。
重要位:
秒寄存器时钟停止位CH=0,振荡器工作允许;CH=1,振荡器停止。
控制寄存器写保护位WP=0,允许写入;WP=1,禁止写入外部引脚分配(如图7所示)。
三、系统软件设计
软件设计总流程图(如图8所示)。
四、结果显示
(1)时间显示如图9.
(2)按下“0”键时分设置,时分闪烁等待设置。
(3)按下“4”键时或分加一,按“0”
确认。
(4)按下“A”键显示温度,如图10.
(5)按下“8”键显示日期,如图11.