基于 51 单片机的多路温度采集控制系统设计
言:
随着现代信息技术的飞速发展,温度测量控制系统在工业、农业
及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活
具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的
意义。
本次设计的目的在于学习基于 51 单片机的多路温度采集控制
系统设计的基本流程。本设计采用单片机作为数据处理与控制单元,
为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单
总线从数字温度传感器传递到单片机上。单片机数据处理之后,发出
控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送
到 LED 进行显示。本系统可以实现多路温度信号采集与显示,可以使
用按键来设置温度限定值,通过进行温度数据的运算处理,发出控制
信号达到控制蜂鸣器和继电器的目的。
我所采用的控制芯片为 AT89c51,此芯片功能较为强大,能够
满足设计要求。通过对电路的设计,对芯片的外围扩展,来达到对某
一车间温度的控制和调节功能。
关键词:温度 多路温度采集 驱动电路
- 1 -
正文 :
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 个子程序为定时/
- 2 -
计数器 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 单元。
采用查表法计算温度值时为了克服热敏电阻的阻值——温度特性曲
- 3 -
线的非线性,提高测量精度。
(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 所示。
- 4 -
开始
在 0000H 处放置一条长跳转
指令
LJMP MAIN 跳转到主程序
在 0000H 处放置一条长跳转指令
LJMP T0INT 跳转到 T0 中断服务程
序
图 1-0 部分程序设计流程图的设计框架
- 5 -
主程序
计数寄存器 R1 赋初值 10
P1 口赋初值 FFH,所有指示
灯全灭
堆栈指针 SP 赋初值 60H
TMOD 赋初值 01H
T0 工作于定时方式 1 软启动
TH0 赋初值 3CH,
TL0 赋初值 B0H,
T0 定时 100ms
IE 赋初值 82H,T0 允许中断
SETB TR0
启动 T0 工作
动态停机
图 1-1 主程序流程图
- 6 -
N
T0 中断服
务程序
温度采样时
间间隔到否
Y
调用温度采用及模数转换
子程序 ADCON
调用温度计算子程序
CALCU
调用驱动控制子程序
DRVCON
调用十进制转换子程序
METRICCON
调用数码管显示子程序 DISP
T0 重装初值
中断返回
图 1-2 T0 中断服务程序流程图
- 7 -
温度采样及模数
转换子程序
将 ADC0809
启动 A/D 转换
转换结束否
读取转换数据
将转换数据存于片内
RAM20H 单元
返回
图 1-3 温度采样及模数转换子程序流程图
- 8 -