基于单片机的环境温度测量系统设计.docx

上传人:b****7 文档编号:11276415 上传时间:2023-02-26 格式:DOCX 页数:18 大小:384.18KB
下载 相关 举报
基于单片机的环境温度测量系统设计.docx_第1页
第1页 / 共18页
基于单片机的环境温度测量系统设计.docx_第2页
第2页 / 共18页
基于单片机的环境温度测量系统设计.docx_第3页
第3页 / 共18页
基于单片机的环境温度测量系统设计.docx_第4页
第4页 / 共18页
基于单片机的环境温度测量系统设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于单片机的环境温度测量系统设计.docx

《基于单片机的环境温度测量系统设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的环境温度测量系统设计.docx(18页珍藏版)》请在冰豆网上搜索。

基于单片机的环境温度测量系统设计.docx

基于单片机的环境温度测量系统设计

基于单片机的环境温度测量系统设计

一、绪论

1.1简介

随着国民经济的进展,人们需要对各中加热炉、热处置炉、反映炉和锅炉中温度进行监测和控制。

采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等长处,而且能够大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。

在日常生活及工业生产进程中,常常要用到温度的检测及控制,温度是生产进程和科学实验中普遍而且重要的物理参数之一。

在生产进程中,为了高效地进行生产,必需对它的主要参数,如温度、压力、流量等进行有效的控制。

温度控制在生产进程中占有相当大的比例。

温度测量是温度控制的基础,技术已经比较成熟。

传统的测温元件有热电偶和二电阻。

而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方式相对比较复杂,需要比较多的外部硬件支持。

咱们用一种相对比较简单的方式来测量。

咱们采用美国DALLAS半导体公司继DS18B20以后推出的一种改良型智能温度传感器DS18B20作为检测元件,温度范围为-55~125ºC,最高分辨率可达0.0625ºC。

DS18B20能够直接读出北侧温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低本钱和易利用的特点。

1.2 设计的市场现状分析 

纵观市场,温湿度检测技术已经比较成熟,已有的各类温湿度检测产品,五花八门,犹如八仙过海,各显神通,如A2000家用温湿度报警表、YD-808A工业用温湿度显示器等产品。

 

从功能上分析这些产品能够看出,一个比较完整的环境温湿度检测系统应该具有以下主要的四个功能:

 

(1)实时检测出环境中的温度和湿度参数; 

(2)检测的参数值显示在显示设备上(如数码管,液晶显示器等);  

(3)按照环境要求,设定温度湿度报警的上下限值,并实时报警;  

(4)与上层监控设备通信(如PC),实现数据传输(双向或单向); 

因此,本设计也应该具有这些功能,而且对每一个部份进行优化设计,也能够扩展系统功能。

 

二、系统设计

2.1设计要求

利用单片机AT89C51作为控制器,和用改良型智能温度传感器DS18B20作为温度收集器,设计了一款数字温度计,能够显示环境的温度和测量人体的体温。

2.2设计思想

采用数字温度芯片DS18B20测量温度,输出信号全数字化。

便于单片机处置及控制,省去传统的测温方式的很多外围电路。

且该芯片的物理化学性很稳固,它能用做工业测温元件,此元件线形较好。

在0—100摄氏度时,最大线形误差小于1摄氏度。

DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89S51组成的温度测量装置,它直接输出温度的数字信号,可直接与运算机连接。

如此,测温系统的结构就比较简单,体积也不大。

采用51单片机控制,软件编程的自由度大,可通过编程实现各类各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。

既能够单独对多DS18B20控制工作,还能够与PC机通信上传数据,另外AT89S51在工业控制上也有着普遍的应用,编程技术及外围功能电路的配合利用都很成熟。

该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并能够按照需要设定上下限报警温度。

该系统扩展性超级强,它能够在设计中加入时钟芯片DS1302以获取时刻数据,在数据处置同时显示时刻,并能够利用AT24C16芯片作为存储器件,以此来对某些时刻点的温度数据进行存储,利用键盘来进行调时和温度查询,取得的数据能够通过MAX232芯片与运算机的RS232接口进行串口通信,方便的收集和整理时刻温度数据。

2.3系统设计原理

利用温度传感器DS18B20能够直接读取被测温度值,进行转换的特性,模拟温度值通过DS18B20处置后转换为数字值,然后送到单片机中进行数据处置,并与设置的温度报警限比较,超过限度后通过扬声器报警。

同时处置后的数据送到LED中显示。

2.4系统组成

系统框图主要由主控制器、单片机复位、报警按键设置、时钟振荡、LED显示、温度传感器组成。

系统框图如图所示:

1.主控制器

单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就可以知足电路系统的设计需要,很适合便携手持式产品的设计利用系统可用二节电池供电。

2.显示电路

显示电路采用LED液晶显示数码管,从P3口RXD,TXD串口输出段码。

显示电路是利用的串口显示,这种显示最大的长处就是利用口资源比较少,只用p3口的RXD,和TXD,串口的发送和接收,四只数码管采用74LS164右移寄放器驱动,显示比较清楚。

3.温度传感器

温度传感器采用美国DALLAS半导体公司生产的DS18B20温度传感器。

DS18B20输出信号全数字化。

便于单片机处置及控制,在0—100摄氏度时,最大线形误差小于1摄氏度,采用单总线的数据传输,可直接与运算机连接。

用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并能够按照需要设定上下限报警温度。

取得的数据能够通过MAX232芯片与运算机的RS232接口进行串口通信,方便的收集和整理时刻温度数据。

2.5DS18B20温度传感器与单片机的接口电路

DS18B20能够采用两种方式供电,一种是采用电源供电方式,现在DS18B20的1脚接地,2脚作为信号线,3脚接电源。

另一种是寄生电源供电方式,如图3-3所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。

【2】

当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必需有强的上拉,上拉开启时刻最大为10us。

采用寄生电源供电方式时VDD端接地。

由于单线制只有一根线,因此发送接口必需是三态的。

三、系统硬件设计

3.180C51单片机

80C51有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位按时/计数器。

80C51的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。

80C51单片机的大体组成框图见图:

80C51单片机的中断系统

80C51系列单片机的中断系统有5个中断源,2个优先级,能够实现二级中断服务嵌套。

由片内特殊功能寄放器中的中断允许寄放器IE控制CPU是不是响应中断请求;由中断优先级寄放器IP安排各中断源的优先级;同一优先级内各中断同时提出中断请求时,由内部的查询逻辑肯定其响应顺序。

80C51单片机的按时/计数器

在单片机应用系统中,常常会有按时控制需求,如按时输出、按时检测、按时扫描等;也常常要对外部事件进行计数。

80C51单片机内集成有两个可编程的按时/计数器:

T0和T1,它们既能够工作于按时模式,也能够工作于外部事件计数模式,另外,T1还能够作为串行口的波特率发生器。

3.2LCD液晶显示器

LM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,能够实现字符移动,闪烁等功能,LM016L与单片机MCU通信可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄放器,指令寄放器(IR)和数据寄放器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。

IR用于寄放指令码,只能写入不能读出,DR用于寄放数据,数据由内部操作自动写入DDRAM和CGRAM,或暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和同意数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,能够查看参考文献(30)中的表4.CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM但愿,LM016L液晶模块的引脚图如图所示:

液晶显示部份与89C51的接口

用89C51的P2口作为数据线,用P3.二、P3.一、P3.0别离作为LCD的E、R/W、RS。

其中E是下降沿触发的片选信号,R/W是读写信号,RS是寄放器选择信号本模块设计要点如下:

显示模块初始化:

第一清屏,再设置接口数据位为8位,显示行数为1行,字型为5×7点阵,然后设置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。

向LCD的显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.第一取一个要显示的字符或数据送到LCD的显示缓冲区,程序延时2.5ms,判断是不是够显示的个数,不够则地址加一取下一个要显示的字符或数据。

3.3通信模块

80C51内部已集成通信接口URT,只需扩展一片MAX232芯片将输出信号转换成RS-232协议规定的电平标准, MAX232是一种双组驱动器/接收器,每一个接收器将EIA/TIA-232-E电平输入转换为5V  TTL/CMOS电平。

每一个驱动器将TTL/CMOS输入电平转换为EIA/TIA-232-E电平。

即EIA接口,就是把5V转换为-8V到-15V电位0V转换为8V到15V再经RXD输出,接收时由RXD输入,把-8V到-15V电位转换为5V,8V到15V转换为0V。

MAX232的工作电压只需5V,内部有振荡电路产生正负9V电位。

MAX232引脚图如图所示:

四、系统软件设计

4.1主程序设计

整个系统的功能是由硬件电路配合软件来实现的,当硬件大体定型后,软件的功能也就大体定下来了。

从软件的功能不同可分为两大类:

一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。

二是执行软件(子程序),它是用来完成各类实质性的功能如测量、计算、显示、通信等。

每一个执行软件也就是一个小的功能执行模块。

这里将各执行模块一一列出,并为每一个执行模块进行功能概念和接口概念。

各执行模块计划好后,就可以够计划监控程序了。

第一要按照系统的整体功能选择一种最适合的监控程序结构,然后按如实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。

4.2DS18B20初始化

18B20初始化流程图见图:

4.3数据测试

将温度传感器与冰水混合物接触,通过充分搅拌达到热平衡后调节系统,使显示读数为0.00(标定0℃);利用气压计读出那时本地的大气压强,并按照大气压强和本地重力加速度计算出那时的实际压强;按照沸点与压强的关系查出沸点温度。

把温度传感器放入滚水中,待显示读数稳固后从头调节,使显示器显示读数等于本地那时沸点温度后工作结束。

该温度计的量程为0℃~100℃,读数精度为0.1℃,实际利用一般在0℃~100℃。

采用0℃~50℃和50℃~100℃的精密水银温度计作查验标准,对设计的温度计进行测试,其结果表明能达到该精度要求。

五、仿真结果

设置温度上限为37度,温度下限为10度。

1.如图所示,现在温度时43度,超出上限温度,黄灯亮,实现报警。

2.如图所示,现在温度为5度,低于下限温度,绿灯亮,实现报警。

3.如图所示,现在温度为20度,在所设范围内,两灯都没亮,说明温度正常。

六、总结

本文介绍了基于80C51单片机的数字温度计控制系统的设计,对整个硬件电路和软件程序设计做了分析,学习了数字温度传感器DS18B20,设计软件仿真,更直观的反映设计的正确性。

并对其中的一些大体原理也做了简要的概述。

其实本篇论文,仅仅是对数字温度计控制系统做出了一个简单的设计方案,数字温度计科利用在很多领域,在一些人不能直接进入的场所,利用单片机控制的数字温度计,能够设置并控制其中的温度,数字温度计还能够利用在温室中,如此就可以够方便的控制温室中的温度,当温度超过所要求的温度时,可发生报警。

总之数字温度计利用在很多领域。

本课题只是单片机控制数字温度计系统得一种设计方式。

 

附录:

系统程序清单

#include

#defineucharunsignedchar

#defineuintunsignedint

uchari;

sbitlcdrs=P3^0;

sbitlcdrw=P3^1;

sbitlcden=P3^2;

sbitd1=P1^0;

sbitd2=P1^1;

ucharcodet0[]="thetemperature";

ucharcodet1[]="is";

ucharcodewendu[]="0123456789";//利用一个温度表解决温度显示乱码

sbitDQ=P3^7;//概念ds18B20总线IO

//液晶显示模块

voiddelay(uintz)

{

uintx,y;

for(x=100;x>1;x--)

for(y=z;y>1;y--);

}

voidwrite_com(ucharcom)

{

lcdrs=0;

P2=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidwrite_date(uchardate)

{

lcdrs=1;

P2=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidinit_lcd()

{

lcden=0;

lcdrw=0;

write_com(0x38);

write_com(0x01);

write_com(0x0c);

write_com(0x06);

write_com(0x80);

for(i=0;i<16;i++)

{

write_date(t0[i]);

delay(0);

}

write_com(0x80+0x40);

for(i=0;i<16;i++)

{

write_date(t1[i]);

delay(0);

}

}

//温度收集模块

voidtmpDelay(intnum)//延时函数

{

while(num--);

}

/******************************************************************************/

voidInit_DS18B20()//初始化ds1820

{

unsignedcharx=0;

DQ=1;//DQ复位

tmpDelay(8);//稍做延时

DQ=0;//单片机将DQ拉低

tmpDelay(80);//精准延时大于480us

DQ=1;//拉高总线

tmpDelay(14);

x=DQ;//稍做延时后若是x=0则初始化成功x=1则初始化失败

tmpDelay(20);

}

unsignedcharReadOneChar()//读一个字节

{

unsignedchari=0;

unsignedchardat=0;

for(i=8;i>0;i--)

{

DQ=0;//给脉冲信号

dat>>=1;

DQ=1;//给脉冲信号

if(DQ)

dat|=0x80;

tmpDelay(4);

}

return(dat);

}

voidWriteOneChar(unsignedchardat)//写一个字节

{

unsignedchari=0;

for(i=8;i>0;i--)

{

DQ=0;

DQ=dat&0x01;

tmpDelay(5);

DQ=1;

dat>>=1;

}

}

unsignedintReadtemp()//读取温度

{

unsignedchara=0;

unsignedcharb=0;

unsignedintt=0;

floattt=0;

Init_DS18B20();

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneChar(0x44);//启动温度转换

Init_DS18B20();

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneChar(0xBE);//读取温度寄放器

a=ReadOneChar();//持续读两个字节数据//读低8位

b=ReadOneChar();//读高8位

t=b;

t<<=8;

t=t|a;//两字节合成一个整型变量。

tt=t*0.0625;//取得真实十进制温度值,因为DS18B20能够精准到0.0625度,所以读回数据的最低位代表的是0.0625度

t=tt*10+0.5;//放大十倍,如此做的目的将小数点后第一名也转换为可显示数字,同时进行一个四舍五入操作。

return(t);

 

}

voiddisplay()

{

unsignedintnum,num1;//概念的时候用uchar宏概念就会犯错

unsignedintshi,ge,xiaoshu;//这里的num,shi,ge,xiaoshu必须用unsignedint无符号整数来表示,用unshignedchar字符型则显示错误

num=Readtemp();

num1=num/10;

if(num1>37)

{d1=0;d2=1;delay(500);}

if(num1<10)

{d1=1;d2=0;delay(500);}

else

{d1=1;d2=1;}

shi=num/100;

ge=num/10%10;

xiaoshu=num%10;

write_com(0x80+0x40+5);

write_date(wendu[shi]);

write_com(0x80+0x40+6);

write_date(wendu[ge]);

write_com(0x80+0x40+7);

write_date(0x2e);

write_com(0x80+0x40+8);

write_date(wendu[xiaoshu]);

}

voidmain()

{

init_lcd();

while

(1)

{

display();

delay(10);

}

}

 

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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