基于51单片机的数字温度计设计19874.docx

上传人:b****8 文档编号:9649510 上传时间:2023-02-05 格式:DOCX 页数:17 大小:772.53KB
下载 相关 举报
基于51单片机的数字温度计设计19874.docx_第1页
第1页 / 共17页
基于51单片机的数字温度计设计19874.docx_第2页
第2页 / 共17页
基于51单片机的数字温度计设计19874.docx_第3页
第3页 / 共17页
基于51单片机的数字温度计设计19874.docx_第4页
第4页 / 共17页
基于51单片机的数字温度计设计19874.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

基于51单片机的数字温度计设计19874.docx

《基于51单片机的数字温度计设计19874.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字温度计设计19874.docx(17页珍藏版)》请在冰豆网上搜索。

基于51单片机的数字温度计设计19874.docx

基于51单片机的数字温度计设计19874

 

题目:

基于51单片机的数字温度计设计

学生姓名:

杨宝

班级:

自动化083班

学号:

20084460318

指导老师:

李兰君,唐耀庚

2011年 12月 26日

 

基于51单片机的数字温度计设计

摘要:

随着时代的进步和发展,单片机技术已经普及到我们生活,工作的方方面面。

单片机已经走进了我们的生活,并有了不可替代的地位。

而在工业五大基本参数中,温度的测量尤其广泛,可见精确的温度对于工业发展来看有多大的作用。

本文将介绍一种基于单片机的简单数字温度计,本温度计可以毕竟精确地测量并显示温度,并实现上下限的报警功能。

关键字:

AT89C2051单片机DS18B20温度测量报警

正文:

第一章绪论

温度计这个词对于我们来说应该都算是家喻户晓了,即使在我们孩提时,温度计也是屡见不鲜。

那时候我们见得最多的就当体温计了,每次感冒生病了,量体温是必不可少的,再后来我们又见到了气温计等一系列的温度计。

但是,这些温度计总的来说都是模拟的,在数字化越来越普及的当代,数字产品的有点已被我们没个人知晓。

和传统的温度计相比,数字温度计具有读数方便,测温范围广,测温准确等优点。

在一些需要对温度有准确测量的场所,数字温度计有传统温度计无法替代的作用。

在社会发展的方向来看,数字式仪表也是科技发展的潮流。

该设计是以AT89C2051单片机为控制器,DS18B20为温度传感器,三位共阴极LED数码管为显示单元,发光二极管当报警装置的数字温度计,基本能够满足实际应用的需要。

目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。

社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,89C51单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。

与传统的温度计相比,其具有读数方便,测温范围广,测温准确,输出温度采用数字显示,主要用于对测温要求比较准确的场所,或科研实验室使用。

该设计控制器使用ATMEL公司的AT89C51单片机,测温传感器使用DALLAS公司DS18B20,用液晶来实现温度显示。

第二章总体设计方案

2.1设计方案

方案的选择主要在于温度检测方面的选择,其它方面基本上都差不多。

2.1.1方案一

设计一个测温电路,包括温度传感器,温度变送器,A/D转换电路。

具体流程为温度传感器测量温度信号,经过温度变送器变换为电流信号,再通过A/D转换器转换为数字信号进入单片机进行处理,再在数码管上显示。

采用热电偶温差电路测温,温度检测部分可以使用低温热偶,热电偶由两个焊接在一起的异金属导线所组成(热电偶的构成如图2.1),热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。

通过将参考结点保持在已知温度并测量该电压,便可推断出检测结点的温度。

数据采集部分则使用带有A/D通道的单片机,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。

热电偶的优点是工作温度范围非常宽,且体积小,但是它们也存在着输出电压小、容易遭受来自导线环路的噪声影响以及漂移较高的缺点,并且这种设计需要用到A/D转换电路,感温电路比较麻烦。

图2.1热电偶电路图

2.1.2方案二

温度测量上使用集成芯片DS18B20,实现温度测量并输出数字信号,由单片机接收。

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

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

系统框图如图2-1-2所示

图2-1-2DS18B20温度测温系统框图

2.1.3方案选择

根据上述两种方案的设计思路可以看出来方案二更加容易实现和操作,而且电路相对简单,软件设计也比较简单,所以应选择方案二。

第三章系统的硬件设计

根据经验硬件设计思路而得系统的硬件应由一系列的模块组成,根据本设计可以把此数字温度计分解成以下5个基本模块:

温度采集模块、数值显示模块、报警模块、单片机模块、外存模块,系统框图如图3.1所示。

图3.1系统模块框图

3.1温度采集模块

温度测量模块是选用集成芯片DS18B20作为温度的测量和変送,输出信号为数字信号。

DS18B20采用单总线的数据传输,可以直接通过一个I/O口向单片机接收设置信号和向单片机发送温度的测量值。

3.1.1DS18B20的结构

DS18B20有耐磨耐碰,体积小,使用方便,封装形式多样等特点。

本设计采用的封装为PR-35,其引脚图如3-1-1-1。

由图所示,DS18B20只有三个引脚,两边的引脚为电源的正于地,中间的信号引脚可以直接于单片机的I/O相连,这就大大简化了温度测量模块的硬件电路。

从图3-1-1-2我们可以看出DS18B20内部结构主要由四部分组成:

64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

图3-1-1-1DS18B20引脚图图3-1-1-2DS18B20内部结构图

3-1-2DS18B20的工作步骤

根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:

每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。

复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。

3-1-3DS18B20于单片机的硬件连接

因为DS18B20可以于单片机直接连接,所以连接的硬件电路图非常简单,硬件电路如图3-1-3-1所示。

图3-1-3-1DS18B20于单片机的硬件连接图

3.2数值显示模块

数值显示模块由三个带有小数点的七段数码管为主体,外加上拉电阻组成,硬件电路如图3-2-1。

增加的上拉电阻是为了提高数码管的电流,依据此图,可以得知显示的范围为0~999℃。

由于只能显示三位,所以精确都也不恒定,由0.01℃变化到1℃。

图3.2.1数值显示模块图

3.3报警模块

报警模块由5个发光二极管构成,当测量到的温度值小于报警下限或大于报警上限,发光二极管发光。

也可以通过5个发光二极管的发光情况判断报警的是上限报警还是下限报警,报警电路的触发信号是由单片机的P37引脚发出的。

报警模块的硬件电路如图3-3-1所示。

图3-3-1报警模块电路图

3.4单片机模块

单片机模块是系统的控制单元主要复杂系统的调控,如接收温度模块的信号,处理并为显示模块,报警模块等模块提供信号。

单片机模块是以AT89C2051为基础外加单片机的外围电路构成,外围电路如晶振电路,复位电路,按键等。

3.4.1晶振电路

晶振电路由一个12M的晶振和两个电容构成的一个无输入,而输出电路,其硬件电路如图3-4-1-1所示。

图3-4-1-1晶振电路图图3-4-2-1复位电路图

3-4-2复位电路

本设计采用基本的复位电路,硬件电路如图3-4-2-1。

3.5外存模块

外存模块是由24C08为基础组成了,24C08是8K位串行

总线EEPROM,采用1024×8bit的组织结构以及两线串行接口,具有页写能力。

引脚排列和模块电路如图3-5-1。

图3-5-124C08的引脚图和外存模块的硬件图

外存模块是为了保存一定时间段一定时刻的温度值,用来统计温度在这段时间之中的变化情况。

第4章系统的软件设计

在一个加工程序中,如果其中有些加工内容完全相同或相似,为了简化程序,可以把这些重复的程序段单独列出,并按一定的格式编写成子程序。

主程序在执行过程中如果需要某一子程序,通过调用指令来调用该子程序,子程序执行完后又返回到主程序,继续执行后面的程序段。

为了进一步简化程序,可以让子程序调用另一个子程序,这种程序的结构称为子程序嵌套。

在编程中使用较多的是二重嵌套。

系统的软件主要有下列子程序:

温度采集于处理子程序、显示数据子程序、报警子程序、外存存储子程序等,主程序主要是根据实际情况把子程序进行合理的安排运行。

4.1主程序

主程序的主要功能是负责温度的实时显示,读出并处理温度采集模块测量的当前温度值,温度测量没1s进行一次。

这样可以在1s之内处理完一个采集周期内的其他事情,主程序的流程见图4-1-1。

图4-1-1主程序流程图

没一秒中采集并刷新显示一次温度值,没五分钟保存一次温度值。

4.2显示子程序

显示子程序就是把经过处理过的温度值通过三个数码管显示出来,让我们能够容易而明白地知道即时的温度值。

显示子程序先要判断温度值的正负大小来决定三个数码管的分工,通过判断正负来决定第一个数码管显示的是负号还是作为数据,通过判断数据的大小来决定小数点的位置,总共编辑了5种显示方案。

显示子程序的流程图如图4-2-1所示。

图4-2-1显示子程序流程图

4.3报警子程序

报警子程序是在温度超过上、下限时启动报警,程序流程图如图4-3-1。

4.4外存存储子程序

外存存储子程序所要实现的就是没5分钟外存空间存储一次温度值,程序流程图如图4-4-1。

图4-3-1报警子程序程序流程图图4-4-1外存存储子程序流程图

第五章总结

该系统硬件电路比较简单明了,主要是由集成芯片和一些电阻电容组成,关键的还是在系统软件方面。

系统温度测量范围广,显示范围可以从-99℃到999℃。

当然数字温度计的测量范围不会这么大,但因小数点位置变化而引起显示情况的增加,就造成程序的复杂性增加了。

此系统是一个基础的数字温度计系统,技术含量不是非常高,只是由一些基本的电路,子程序组成,但是组成系统的子程序比较多,这就在我们做系统时的细心是个考验。

经过调试,本系统基本能满足设计要求。

从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。

最后,还要感谢我的指导老师和热心的同学,在他们的帮助下我的课程设计才能顺利完成,谢谢你们!

 

附录一:

系统原理图

附录二:

系统PCB图

附录三:

系统3D仿真图

附录四:

系统元器件清单

AT89C2051、24C08、DS18B20、晶振、4.7k电阻、10k电阻、电解电容各一个,按键两个,1k电阻8个,发光二极管5个,100pF电容两个

附录五:

部分程序

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitDQ=P1^4;//ds18b20与单片机连接口

unsignedcharcodestr[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x39};//共阴数码管字码表

unsignedcharcodestr1[]={0x0bf,0x86,0x0db,0x0cf,0x0e6,0x0ed,0x0fd,0x87,0x0ff,0x0ef,0x39};//个位带小数点字码表

unsignedcharcodewei[]={0x0fe,0x0fd,0x0fb,0x0f7};

uchardatadisdata[5];

uinttvalue;//温度值

uchartflag;//温度正负标志

/******************************ds1820程***************************************/

voiddelay_18B20(unsignedinti)//延时1微秒

{

while(i--);

}

voidds1820rst()/*ds1820复位*/

{unsignedcharx=0;

DQ=1;//DQ复位

delay_18B20(4);//延时

DQ=0;//DQ拉低

delay_18B20(100);//精确延时大于480us

DQ=1;//拉高

delay_18B20(40);

}

uchards1820rd()/*读数据*/

{unsignedchari=0;

unsignedchardat=0;

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

{DQ=0;//给脉冲信号

dat>>=1;

DQ=1;//给脉冲信号

if(DQ)

dat|=0x80;

delay_18B20(10);

}

return(dat);

}

voidds1820wr(ucharwdata)/*写数据*/

{unsignedchari=0;

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

{DQ=0;

DQ=wdata&0x01;

delay_18B20(10);

DQ=1;

wdata>>=1;

}

}

read_temp()/*读取温度值并转换*/

{uchara,b;

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/

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

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/

ds1820wr(0xbe);//*读取温度*/

a=ds1820rd();

b=ds1820rd();

tvalue=b;

tvalue<<=8;

tvalue=tvalue|a;

if(tvalue<0x0fff)

tflag=0;

else

{tvalue=~tvalue+1;

tflag=1;

}

tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数

return(tvalue);

}

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

voidds1820disp()//温度值显示

{ucharflagdat;

uchari;

disdata[0]=tvalue/1000;//百位数

disdata[1]=tvalue%1000/100;//十位数

disdata[2]=tvalue%100/10;//个位数

disdata[3]=tvalue%10;//小数位

if(tflag==0)

flagdat=0x20;//正温度不显示符号

else

flagdat=0x2d;//负温度显示负号:

if(disdata[0]==0x30)

{disdata[0]=0x20;//如果百位为0,不显示

if(disdata[1]==0x30)

{disdata[1]=0x20;//如果百位为0,十位为0也不显示

}

}

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

{

P2=wei[0];

P0=str[disdata[3]];

delay_18B20(20);

P2=wei[1];

P0=str1[disdata[2]];

delay_18B20(20);

P2=wei[2];

P0=str[disdata[1]];

delay_18B20(20);

P2=wei[3];

P0=str[disdata[0]];

delay_18B20(20);

}

}

/********************主程序***********************************/

voidmain()

{ds1820rst;//初始化显示

while

(1)

{read_temp();//读取温度

ds1820disp();//显示

}

}

参考文献:

[1]康华光电子技术基础数字部分(第五版)北京:

高等教育出版社2006.1

[2]赵亮,侯国锐单片机c语言编程于实例人民邮电出版社

[3]吉雷Protel99从入门到精通西安电子科技大学出版社

[4]李朝青.单片机原理及接口技术(简明修订版).杭州:

北京航空航天大学出版社,1998

[5]李广弟.单片机基础[M].北京:

北京航空航天大学出版社,1994

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

当前位置:首页 > 法律文书 > 判决书

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

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