基于 51 单片机的温度采集系统
前言
随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮
演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设
计与研究有十分重要的意义。
本次设计的目的在于学习基于 51 单片机的多路温度采集控制系统设计的基本流程。本
设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,
把温度信号通过单总线从数字温度传感器传递到单片机上。单片机数据处理之后,发出控制
信息改变报警和控制执行模块的状态,同时将当前温度信息发送到 LED 进行显示。本系统
可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过进行温度数据的
运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。
我所采用的控制芯片为 AT89c51,此芯片功能较为强大,能够满足设计要求。通过对
电路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。
关键词:温度 多路温度采集 驱动电路
Abstract
With the rapid development of modern information technology, temperature measurement
control system in industry, agriculture and People's Daily life plays a more and more important
role in people's life, and it has great influence, so temperature gathering the design of control
system and research has the extremely vital significance.
The design aims to study omulti-channel based on 51 single-chip microcomputer control
system design temperature gathering the basic process. This design USES the single chip
microcomputer as the data processing and control unit, in order to perform the data processing,
SCM control digital temperature sensor, the temperature signal through a single bus from digital
temperature sensor transfer to the single. Single-chip microcomputer data processing, making
control information change after police and the control performs module, and the current state of
temperature information sent to LED displayed. This system can realize multiple temperature
signal acquisition and display, you can use the buttons to set the temperature limit value, through
the operational treatment temperature data, making control signal to control the purpose of the
buzzer and relays.
I adopted the control chip for AT89c51, the chip function is relatively strong, can satisfy the
design requirement. Through the circuit design of the peripheral expansion of chips, to achieve a
workshop of temperature control and adjustment function.
Keywords: temperature multi-channel temperature gathering drive circuit
正文
1、温度控制器电路设计
本电路由 89C51 单片机温度传感器、模数转换器 ADC0809、窜入并出移位寄存 74LS164、
数码管、和 LED 显示电路等组成。由热敏电阻温度传感器测量环境温度,将其电压值送入
ADC0809 的 IN0 通道进行模数转换,转换所得的数字量由数据端 D7-D0 输出到 89C51 的
P0 口,经软件处理后将测量的温度值经单片机的 RXD 端窜行输出到 74LS164,经 74LS164
窜并转换后,输出到数码管的 7 个显示段,用数字形式显示出当前的温度值。89C51 的 P2.0、
P2.1、P2.2 分别接入 ADC0809 通道地址选择端 A、B、C,因此 ADC0809 的 IN0 通道的地
址为 F0FFH。输出驱动控制信号由 p1.0 输出,4 个 LED 为状态指示,其中,LED1 为输出
驱动指示,LED2 为温度正常指示,LED3 为高于上限温度指示,LED4 为低于下限温度指
示。当温度高于上限温度值时,有 p1.0 输出驱动信号,驱动外设电路工作,同时 LED1 亮、
LED2 灭、LED3 亮、LED4 灭。外设电路工作后,温度下降,当温度降到正常温度后,LED1
亮、LED2 亮、LED3 灭、LED4 灭。温度继续下降,当温度降到下限温度值时,p1.0 信号
停止输出,外设电路停止工作,同时 LED1 灭、LED2 灭、LED3 灭、LED4 亮。当外设电路
停止工作后,温度开始上升,接着进行下一工作周期。
2、 温度控制器程序设计
本软件系统有 1 个主程序,6 个子程序组成。6 个子程序为定时/计数器 0 中断服务程序、
温度采集及模数转换子程序 ADCON、温度计算子程序 CALCU、驱动控制子程序 DRVCON、
十进制转换子程序 METRICCON 及数码管显示子程序 DISP。
(1) 主程序
主程序进行系统初始化操作,主要是进行定时/计数器的初始化。
(2) 定时/计数器 0 中断服务程序
应用定时计数器 0 中断的目的是进行定时采样,消除数码管温度显示的闪烁现象,用户
可以根据实际环境温度变化率进行采样时间调整。每当定时时间到,调用温度采集机模数转
换子程序 ADCON,得到一个温度样本,并将其转换为数字量,传送给 89C51 单片机,然后
在调用温度计算子程序 CALCU,驱动控制子程序 DRVCON,十进制转换子程序
MERTRICCON,温度数码显示子程序 DISP。
(3) 温度采集及模数转换子程序 ADCON
该子程序进行温度采样并将其转换为 8 位数字量传送给 89C51 的 P0 口。采样得到的温
度数据存放在片内 RAM 的 20H 单元中。
(4) 温度计算子程序 CALCU
根据热敏电阻的分度值和电路参数计算出出一张温度表,存放在 DATATAB 数据表中,
由于篇幅关系,本程序只给出 0-49℃的温度数据。一个温度有两个字节组成,前一字节为
温度值,后一字节为该温度所对应的热敏电阻上的电压的数字量。根据采样值,通过查表及
比较的方法计算出当前的温度值,并将其存入片内 RAM 的 21H 单元。采用查表法计算温度
值时为了克服热敏电阻的阻值——温度特性曲线的非线性,提高测量精度。
(5) 驱动控制子程序 DRVCON
该子程序调节温度,当温度高于上限温度时(本程序设为 30℃), P1.0 输出驱动控制
信号,驱动外设工作降温;当温度下降到下限温度时(本程序设为 25℃),P1.0 停止输出,
温度上升,周而复始;工作状态有 LED1-LED4 指示。
(6) 十进制转换子程序 METRICCON
将存放于内部 RAM21H 单元的当前温度值得二进制数形式转换为十进制数(BCD 码)
形式,以便输出显示,转换结果存放在片内 RAM 的 32H 单元(百位)、31H(十位)、30H
单元(个位)。
(7) 数码显示子程序 DISP
该子程序利用 89C51 串口的方式 0 串行移位寄存器工作方式,将片内 RAM 的 30H、
31H、32H 单元的 BCD 码查表转换为七段码后由 RXD 端串行发出去,然后经 74LS164 串并
转换,将七段值传送给数码管,以十进制形式显示出当前温度值。 根据以上分析画出的部
分程序设计流程图如图 1-0 至图 1-4 所示。
开始
在 0000H 处放置一条长跳转
指令
LJMP MAIN 跳转到主程序
在 0000H 处放置一条长跳转指令
LJMP T0INT 跳转到 T0 中断服务程
序
图 1-0 部分程序设计流程图的设计框架
主程序
计数寄存器 R1 赋初值 10
P1 口赋初值 FFH,所有指示
灯全灭
堆栈指针 SP 赋初值 60H
TMOD 赋初值 01H
T0 工作于定时方式 1 软启动
TH0 赋初值 3CH,
TL0 赋初值 B0H,
T0 定时 100ms
IE 赋初值 82H,T0 允许中断
SETB TR0
启动 T0 工作
动态停机
图 1-1 主程序流程图
N
T0 中断服
务程序
温度采样时
间间隔到否
Y
调用温度采用及模数转换
子程序 ADCON
调用温度计算子程序
CALCU
调用驱动控制子程序
DRVCON
调用十进制转换子程序
METRICCON
调用数码管显示子程序 DISP
T0 重装初值
中断返回
图 1-2 T0 中断服务程序流程图
温度采样及模数
转换子程序
将 ADC0809
启动 A/D 转换
转换结束否
读取转换数据
将转换数据存于片内
RAM20H 单元
返回
图 1-3 温度采样及模数转换子程序流程图
温度计算
子程序
温度数据表索引值寄
存器 R2 赋初值 01H
温度数据表首地址送
DPTR
查表取出某一温度的
电压数据
大于
当 前 温度 电 压 值 与 查
表 取 得的 某 一 温 度 电
压值比较
相等
小于
索引值加 2
取出表中前一温
查表取出该温度
度值
值
将该温度值存于
将该温度值存于
21H 单元
21H 单元
返回
返回
图 1-4 温度计算子程序流程图
3、具体内容
(1)温度控制器电器原理图设计
按以上分析及相关知识设计出的温度控制器电路原理图如图 1-5 所示。
图 1-5 温度控制电路原理图
(2)温度数据表
在图 1-5 所示的电路中,热敏电阻的连接如图 1-6 所示。