单片机的多路温度采集控制系统设计方案.docx

上传人:b****4 文档编号:2956057 上传时间:2022-11-16 格式:DOCX 页数:17 大小:232.64KB
下载 相关 举报
单片机的多路温度采集控制系统设计方案.docx_第1页
第1页 / 共17页
单片机的多路温度采集控制系统设计方案.docx_第2页
第2页 / 共17页
单片机的多路温度采集控制系统设计方案.docx_第3页
第3页 / 共17页
单片机的多路温度采集控制系统设计方案.docx_第4页
第4页 / 共17页
单片机的多路温度采集控制系统设计方案.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机的多路温度采集控制系统设计方案.docx

《单片机的多路温度采集控制系统设计方案.docx》由会员分享,可在线阅读,更多相关《单片机的多路温度采集控制系统设计方案.docx(17页珍藏版)》请在冰豆网上搜索。

单片机的多路温度采集控制系统设计方案.docx

单片机的多路温度采集控制系统设计方案

基于51单片机的多路温度采集控制系统设计

言:

随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。

本次设计的目的在于学习基于51单片机的多路温度采集控制系统设计的基本流程。

本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。

单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LED进行显示。

本系统可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。

我所采用的控制芯片为AT89c51,此芯片功能较为强大,能够满足设计要求。

通过对电路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。

关键词:

温度多路温度采集驱动电路

正文:

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单元的当前温度值得二进制数形式转换为十进制数

(7)数码显示子程序DISP

该子程序利用89C51串口的方式0串行移位寄存器工作方式,将片内RAM的30H、31H、32H单元的BCD码查表转换为七段码后由RXD端串行发出去,然后经74LS164串并转换,将七段值传送给数码管,以十进制形式显示出当前温度值。

根据以上分析画出的部分程序设计流程图如图1-0至图1-4所示。

图1-0部分程序设计流程图的设计框架

图1-1主程序流程图

图1-2T0中断服务程序流程图

图1-3温度采样及模数转换子程序流程图

 

图1-4温度计算子程序流程图

3、具体内容

<1)温度控制器电器原理图设计

按以上分析及相关知识设计出的温度控制器电路原理图如图1-5所示。

图1-5温度控制电路原理图

<2)温度数据表

在图1-5所示的电路中,热敏电阻的连接如图1-6所示。

R8

100k

图1-6热敏电阻的连接

本设计所使用的热敏电阻的分度表及ADC0809转换后的电压数字量见附表1-1所示

转换后的电压数字量的计算方法为:

热敏电阻与R8并并联后的总电阻:

R=

R与R7串联电路中R的分压值<即输入ADC0809的模拟量):

V=5R/

5V被分成256等分<8位量化),则每份的电压值:

△=5/256

输入的模拟量电压经8位量化后的数字量:

D=V/△

例如,热敏电阻在温度为20℃时的阻值为62.254千欧,则根据上述方法计算出的电压数字量为169,注意在计算中R7用实测值19.6千欧代入进入计算。

在实际做该电路时,可根据自己所选择的热敏电阻的分度表计相关电路参数,按上述方法计算出ADC0809转换后的各温度对应的电压数字量。

程序中的温度数据表构成:

1个温度数据占2个字节,前一字为温度值,后一个字节为该温度下热敏电阻上的模拟电压转换成德8位数字量。

如在20℃时,热敏电阻对应的电压数字量为169,则20,169组成一个温度为20℃的温度数据。

按这样方法组成的0-49℃的温度数据表如下:

DATATAB:

DB0,194,1,193,2,192,3,191,4,190

DB5,189,6,188,7,187,8,186,9,185

DB10,184,11,182,12,181,13,180,14,178

DB15,177,16,175,17,174,18,173,19,171

DB20,169,21,168,22,166,23,165,24,163

DB25,161,26,159,27,158,28,,156,29,154

DB30,152,31,150,32,149,33,147,34,145

DB35,143,36,141,37,139,38,147,39,135

DB40,133,41,131,42,129,43,127,44,125

DB45,123,46,121,47,118,48,116,49,114

在温度采样机模数转换子程序中,采样得到的当前温度下热敏电阻上的数字电压存于20H单元,在温度计算子程序中通过查表的方法从表中的第一个温度<0℃)下热敏电阻上的数字电压开始,依次取出各温度下热敏电阻上的十字电压,与与存于20H单元的当前温度下热敏电阻上的的数字电压比较,如小于当前温度的数字电压,则在取出下一温度的数字电压与当前温度的数字电压比较;直到大于或等于当前的温度数字电压,比较结束。

如大于则取出前一温度作为当前温度存于21H单元,如等于则将该温度作为但前温度存于20H单元。

这种温度计算方法,避免了温度特性曲线的非线性对温度计算精确性的影响,计算出的温度非常精确。

<3)温度控制程序设计

在本设计中,晶体振荡器频率为6MHz,T0定时时间为100ms,T0工作于方式1,则T0的初值为:

X=<最大计数值M―定时时间t/及其周期Tm)=216-100ms/2us=15536=3CB0H

按以上任务分析设计出的源程序如下:

ORG0000H。

跳转到主程序

LJMPMAIN。

ORG000BH。

LJMPT0INT。

跳转到T0中断服务程序;

主程序

ORG0100H。

MAIN:

MOVR1,#10。

T0100马上定时溢出计数寄存器R1赋初值10

MOVP1,#0FFH。

所有指示灯灭

MOVSP,#60H。

堆栈指针赋初值60H

MOVTMOD,#01H。

T0定时、方式1、软启动

MOVTL0,#0B0H。

T0赋初值

MOVTH0,#3CH。

MOVIE,#82H。

开放T0中断

SETBTR0。

启动T0

SJMP$。

定时/计数器0中断服务程序

ORG0200H。

T0INT:

DJNZR1,NEXT。

T0溢出10次,即1s进一次采样处理

LCALLADCON。

调用温度采样及模数转换子程序

LCALLCALCU。

调用温度计算子程序

LCALLDRVCON。

调用驱动控制子程序

LCALLMETRICCON。

调用十进制转换子程序

LCALLDISP。

调用数码管显示子程序

MOVR1,#10。

R1重赋值10

NEXT:

MOVTL0,#0B0H。

T0重装初值

MOVTH0,#3CH。

RETI。

温度采样及模数转换子程序

ORG0300H。

ADCON:

MOVDPTR,#0F0FFH。

选通ADC0809通道0

MOVA,#00H。

MOVX@DPTR,A。

启动A/D转换

HERE:

JNBP3.3,HERE。

判断数据转换是否结束,没结束则等待

MOVXA,@DPTR。

读取转换后的数据

MOV20H,A。

将从ADC0809中读取的当前温度下热敏电阻上的电压值存于20H单元

RET;

温度计算子程序

ORG0400H。

CALCU:

MOVR2,#01H。

R2为数据表的索引值寄存器

MOVDPTR,#DATATAB。

温度数据表首地址送DPTR

NEXT1:

MOVA,R2。

索引值送A

MOVCA,@A+DPTR。

查表取出某一温度的数字电压值

CJNEA,20H,K1。

与当前温度的数字电压值比较

DECR2。

等于当前温度的数字电压值,则查表取出该温度值作为当前温度值

MOVA,R2。

MOVCA,@A+DPTR。

LJMPK3。

K1:

JNCK2。

大于当前温度的数字电压值,则继续取出下一温度的数字电压进行比较

DECR2。

小于当前温度的数字电压值,则查表取出前一个温度值作为当前温度值

DECR2

DECR2

MOVA,R2。

MOVCA,@A+DPTR。

LJMPK3。

K2:

INCR2。

INCR2。

LJMPNEXT1。

K3:

MOV21H,A。

将当前温度值存于21H单元

RET。

DATATAB。

DB0,194,1,193,2,192,3,191,4,190;温度数据表

DB5,189,6,188,7,187,8,186,9,185

DB1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1