ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:181.58KB ,
资源ID:9116165      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9116165.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(温度测量及湿度检测解读.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

温度测量及湿度检测解读.docx

1、温度测量及湿度检测解读智能测控系统课程大作业作业题目 : 环境温度测量及湿度检测 学院名称 : 电气工程学院 专业班级 : 测控1303班 学生姓名 : 杜栋梁 学 号 : 201323030320 完成时间: 2016-6 任课教师 : 王威 1 课程大作业内容1.1 课题设计背景随着科技的发展对对检测技术要求的不断增高,迫使新材料的开发及寻找检测能力的不断提升。传感器的种类与测量精度以及测量稳定性也发生了巨大的变化,从最初的接触式测温到非接触式测温,膨胀式、热电阻式以及热电偶式测温,使温度检测领域得到了快速发展。再加上单片机技术的不断发展,测量检测变得更加方便。温湿度传感器除电阻式、电容式

2、湿敏元件之外,还有电解质离子型湿敏元件、重量型湿敏元件(利用感湿膜重量的变化来改变振荡频率)、光强型湿敏元件、声表面波湿敏元件等。湿敏元件的线性度及抗污染性差,在检测环境湿度时,湿敏元件要长期暴露在待测环境中,很容易被污染而影响其测量精度及长期稳定性。在公共工作场所为了达到让人感到舒适的环境温度及湿度,往往需要对温度、湿度进行检测已达到最佳的效果。本课题以ds18b20温度传感器为温度检测器件,设计了一个对单点温度实时检测的单片机温度检测系统。以bsp_dht11湿度传感器为湿度检测器件。1.2 课题设计的意义(1)、该设计具有以下优点:制作简单,便于使用,价格便宜,稳定可靠,功耗低省电。(2

3、)通过设计与制作可以达到这些目的:熟悉MSP430单片机技术的应用范围;掌握MSP430单片机编程的特点,提高实践操作能力能够在制作过程中发现并改正错误。达到一定的解决问题的能力。提高了动手的能力。1.3 设计目标使用ds18b20温度传感器测量环境温度并完成A/D转换。bsp_dht11湿度传感器测量湿度,把数据发送到MSP430中进行转换用LCD进行显示。2 系统设计方案系统设计方案的选择是决定设计作品完整度与精度的重要前提,一个好的作品的完成需要选择比较多种方案,从多种方案中选择最优方案,才能使设计作品精度更高。本次设计主要从实用性,稳定性,精度等级,可靠性,经济性等方面进行考虑。在完成

4、本次课程设计要求、目的的情况下尽可能的准确和经济的条件下进行选择。2.1 温湿度传感器选型与论证本设计采用测量精度高,性能稳定可靠的ds18b20温度传感器作为温度检测器件和bsp_dht11温湿度传感器作为湿度监测器件。尽管bsp_dht11也能够检测出环境温度,但该传感器的测温范围窄,精度不够,和要求测量的环境较为苛刻。因此选用较为精确的ds18b20来测量温度。该传感器具有适应性强检测迅速,受环境影响较小。且对温度可以接触和非接触测量均可。而其他传感器价格和测量条件较为苛刻因此不建议选取。2.2 显示屏的选择与论证方案一:采用LCD1602显示。LCD1602是一种专门用于显示字母、数字

5、、符号等点阵式LCD,能够同时显示16x02即32个字符。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。由于它不能显示汉字,而温度湿度的显示需要显示汉字,所以此方案不可行。方案二:采用LCD5110显示。LCD5110采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,支持多种串行通信协议,传输速率高达4Mbps,可全速写入显示数据,无等待时间。它由84x48的点阵LCD组成,可显示汉字和字符。LCD5110工作电压3.3V,正常显示时工作电流200uA以下,而且接口简单,体积小便

6、于安装携带,速度快,价格便宜。所以采用此方案,显示模块选择用LCD 5110。但屏幕色彩较暗,在光线较强的地方无法清晰的辨别。方案三:采用TFT彩屏显示。TFT-LCD采用低压应用,低驱动电压,固体化使用安全性和可靠性提高;平板化,又轻薄,节省了大量原材料和使用空间;低功耗,它的功耗约为CRT显示器的十分之一,反射式TFT-LCD甚至只有CRT的百分之一左右,节省了大量的能源;高亮度,高对比度,高响应速度。无辐射、无闪烁,对使用者的健康无损害。适用范围宽,从-20到+50的温度范围内都可以正常使用,寿命超过3万小时,且价格便宜因此本次设计采用TFT-LCD作为显示屏。2.2 信号采集电路ds1

7、8b20是一种64 位只读存储器储存器件的唯一片序列号。高速暂存器含有两个字节的温度寄存器,这两个寄存器用来存储温度传感器输出的数据。除此之外,高速暂存器提供一个直接的温度报警值寄存器(TH和TL),和一个字节的配置寄存器。配置寄存器允许用户将温度的精度设定为9,10,11 或12 位。TH,TL 和配置寄存器是非易失性的可擦除程序寄存器(EEPROM),所以存储的数据在器件掉电时不会消失。ds18b20通过达拉斯公司独有的单总线协议依靠一个单线端口通讯。当全部器件经由一个3态端口或者漏极开路端口(DQ引脚在ds18b20上的情况下)与总线连接的时候,控制线需要连接一个上拉电阻。在这个总线系统

8、中,微控制器(主器件)依靠每个器件独有的64位片序列号辨认总线上的器件和记录总线上的器件地址。由于每个装置有一个独特的片序列码,总线可以连接的器件数目事实上是无限的。ds18b20的另一个功能是可以在没有外部电源供电的情况下工作。当总线处于高电平状态,DQ与上拉电阻连接通过单总线对器件供电。同时处于高电平状态的总线信号对内部电容(Cpp)充电,在总线处于低电平状态时,该电容提供能量给器件。这种提供能量的形式被称为“寄生电源”。作为替代选择,ds18b20同样可以通过VDD引脚连接外部电源供电。如下图2.1s18b20的工作原理图2.1用户单片机发送一次开始信号后,DHT11 从低功耗模式转换到

9、高速模式,待主机开始信号结束后,DHT11 发送响应信号,送出 40bit 的数据,并触发一次信采集。信号发送如图所示。数据时序图2.2bsp_dht11时序原理图2.22.3 供电电源的选择本设计采用标准USB数据线5V为该设计供电。3 硬件设计硬件电路的设计是该系统重要的部分,是系统运行的前提,如果硬件设计的科学合理就能大大增加该系统功能的稳定性,可靠性。系统软件的设计是以硬件设计为前提,硬件设计是单片机高效工作的前提与重要保障,但是只有软件和硬件都正确,并且软件与硬件能够相互兼容、协调工作才能使系统工作达到我们想要的效果。本系统的硬件设计部分主要包括传感器电桥电路设计、运算放大电路的设计

10、、单片机最小系统设计下面进行详细介绍。3.1 结构框图 本设计采用均采用3.3V电源供电,温度传感器和温湿度传感器采集到数据后发送到单片机,单片机根据接收到的数据进行处理后再LCD屏幕上显示。如图3.1位系统结构框图。图3.1 系统结构框图3.2 温度信号采集电路温度信号的获取关系到后续电路设计的难度,因此温度信号是获取是本设计的关键。3.2.1传感器简介ds18b20的简介:独特的单线接口仅需一个端口引脚进行通讯每个器件有唯一的64 位的序列号存储在内部存储器中简单的多点分布式测温应用无需外部器件可通过数据线供电。供电范围为3.0V到5.5V测温范围为-55125(67257)在1085范围

11、内精确度为5温度计分辨率可以被使用者选择为912位最多在750ms 内将温度转换为12 位数字用户可定义的非易失性温度报警设置报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件与ds1822兼容的软件应用包括温度控制、工业系统、消费品、温度计或任何热感测系统bsp_dht11的简介:DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小

12、数数据 +8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。实际使用时发现小数位都是0,这一步忽略对结果也不造成影响。3.3单片机的最小电路图MSP430g2553简介:MSP430G2553性能参数(DIP-20) 工作电压范围:1.83.6V。5种低功耗模式。16位的RISC结构,62.5ns指令周期。超低功耗运行模式-230A;待机模式-0.5A;关闭模式-0.1A;可以在不到1s的时间里超快速地从待机模式唤醒。基本时钟模块配置:具有四种校准频率并高达16MHz的内部频率;内部超低功耗LF振

13、荡器;32.768KHz晶体;外部数字时钟源。两个16 位Timer_A,分别具有三个捕获比较寄存器。用于模拟信号比较功能或者斜率模数(A/D)转换的片载比较器。带内部基准、采样与保持以及自动扫描功能的10位200-ksps 模数(A/D)转换器。16KB闪存,512B的RAM。16个I/O口。这里给出了本次实验的最小电路图3.1最小电路图3.14 软件设计4.1 程序模块本装置主要用到MSP430g2553单片机的IO功能程序设计中主要包括:1. 单片机对温度传感器的数据接收模块。2. 单片机对温湿度传感器的数据接收模块。3. 对LCD屏的显示模块。4.2 软件设计流程图图4.1软件流程图5

14、调试本次设计最主要的工作之一就是对系统的调试部分,因为一个测量显示软件的主要功能就是显示正确的结果。开始显示的数据会因为采集的不准确和其他方面的误差导致接收到的数据不能正确表示想要的得到的数据,也可能会因为采集过程出现频繁的错误等问题。因此调试的工作极其重要,在温度传感器的采集过程中经过和标准的温度值的校准,测出了误差的范围和误差的大致规律最后在现实过程中消除了这种误差让温度测量更加准确稳定。在湿度传感器的调试过程中的工作更是复杂,湿度传感器可以返回温度和湿度值,但经过检测返回的温度值与实际的温度值偏差较大,而湿度的计算方法是在该温度条件下的空气中水含量的多少,这就使得测得的温度不准导致湿度不

15、准确,最后查阅资料找到了湿度的测量计算方法。将返回的湿度值加权后再显示出来。这些工作很复杂湿度传感器的工作要求的时序很高就导致在时序配置上要花很大功夫一点不对就不能返回正确的结果屡屡出错。总之调试工作发杂多变。6总结本次设计的东西看起来很简单,好像没有什么技术含量。但当实际操作时想要完美的运行却遇到了重重的困难。因为MSP430是开始接触的单片机,之前也一直没有做过关于它的太多试验。修改驱动显示屏程序也花费了很长时间才将原来51单片机的程序移植过来,结果刷屏与显示与想要显示的位置不符,后来请教同学计算了LCD的显示位置才更改过来。接下来的湿度调试,因为开始找不到bsp_dht11温湿度传感器的

16、原理图就在网上找了关于它的程序结果发现不能用不管怎么更改总是无法返回正确的数值,最后终于找到了关于该传感器的详细资料。发现该传感器的工作要求对时序的要求特别严格,最后精确计算了延时时间并且进行了延时时间的修改才能返回结果。但得到的湿度值与正常的湿度值存在较大的偏差,但没有标准湿度值可以进行比较于是选取了天气预报软件上面公布的湿度值进行校准。 因为这次作业选用的是模块化的传感器且传感器对电压的要求不太严格3.0V5.0V均可以,为了降低设计设计的复杂度就选取了给单片机供电的3.3V电压作为传感器和显示屏的供电电压。本次对单片机的实际制作成东西才感到动手的重要性,和一些看起来简单的东西也许不那么简

17、单。在以后的学习中要增加动手的能力。参考文献1 杨家成单片机原理与应用及C51程序设计北京:清华大学出版社,20072 夏路易 石宗义Protel 99se电路原理图与电路板设计教程北京:北京希望电子出版社,20043 李林功单片机原理与应用基于实例驱动和Proteus仿真北京:科学出版社,20114 皮大能等. 单片机课程设计指导书. 北京:北京理工大学出版社,20105 MSP430单片机C语言应用程序设计实例精讲 电子工业出版社 2006.05附件程序主程序#include #include font.h#include sys.h#include lcd.h#include ds18b

18、20.h#include dht11.hvoid CLK_Init(void) /时钟配置 if (CALBC1_16MHZ =0xFF | CALDCO_16MHZ = 0xFF) while(1); / If calibration constants erased / do not load, trap CPU! DCOCTL=0; BCSCTL1 = CALBC1_16MHZ; / Set range DCOCTL = CALDCO_16MHZ; / Set DCO step + modulation */ BCSCTL2 |= 0X06; /SMCLK为DCO的8分频,2Mvoid

19、showjiemian() /界面显示 LCD_Fill(0,0,128,40,WHITE);/在指定区域填充颜色 showhanzi(0,4,0); showhanzi(32,4,1); showhanzi(64,4,2); showhanzi(96,4,3);/环境监测 LCD_ShowString(100,68,%);/%: showhanzi1(14,42,0,RED,YELLOW); showhanzi1(34,42,1,RED,YELLOW);/温度 showhanzi1(100,42,2,BLUE,YELLOW);/ showhanzi1(14,68,3,RED,YELLOW);

20、 showhanzi1(34,68,4,RED,YELLOW);/湿 度 LCD_ShowString(56,42,); /温度显示 LCD_ShowChar(72,42,.,0); LCD_ShowString(70,68,); /湿度显示int main(void) WDTCTL = WDTPW | WDTHOLD; / Stop watchdog timer unsigned int temp=0,temp1,temp2,temp3; /ucharRH_data_H = 0; P2DIR |= 0x1f;/设置P2为输出方式输出方式 P2OUT |= 0X1f; BACK_COLOR=Y

21、ELLOW; POINT_COLOR=BLUE; /背景色,画笔色 CLK_Init(); Lcd_Init(); LCD_Clear(YELLOW); DHT11_IO_Init(); showjiemian(); while(1) temp=Read_Temp(); temp1=temp/100; temp2=temp%100/10; temp3=temp%10; LCD_ShowNum(56,42,temp1,2);/显示数字 LCD_ShowNum(80,42,temp2,1);/显示数字 LCD_ShowNum(88,42,temp3,1);/显示数字 DHT11(); LCD_Sh

22、owNum(88,68, ucharRH_data_H,3); delay_ms(1000); 温度采集#include #include ds18b20.h#include sys.hvoid DS18B20_Init(void) /DS18B20初始化函数 DQ_OUT; DQ_L; /拉低总线 delay_us(480); /精确延时 大于 480us DQ_H; /释放总线 delay_us(48); DQ_IN; DQ_OUT; DQ_H; delay_us(360);void DS18B20_WriteData(u8 dat) /写一个字节 u8 i; for(i=0;i=1; /

23、准备下一位数据的传送 delay_us(50); DQ_H; /释放总线,等待总线恢复 delay_us(8); u8 DS18B20_ReadData(void) /读一个字节 u8 i; u8 dat=0; for(i=0;i=1;/右移,准备接受新的数据位 DQ_L; /拉低总线产生读信号 delay_us(5); DQ_H; /释放总线准备读数据 delay_us(5);/等待5微秒 DQ_IN;/配置为输入,开始读取数据位 _NOP(); if(READ_DQ)/该位是否为高 dat|=0x80;/是就将此位置高 delay_us(50);/等待50微秒 DQ_OUT; DQ_H;

24、delay_us(5); return(dat);/将读到的一个字节返回u16 Read_Temp(void) /读取温度 u16 temp_low,temp_high,d; float c; DS18B20_Init();/初始化,每次写命令都从初始化开始 DS18B20_WriteData(0xcc); /跳过ROM命令 DS18B20_WriteData(0x44); /温度转换命令 DS18B20_Init();/初始化,每次写命令都从初始化开始 DS18B20_WriteData(0xcc); /跳过ROM命令 DS18B20_WriteData(0xbe); / temp_low=

25、DS18B20_ReadData();/读温度低字节 temp_high=DS18B20_ReadData(); /读温度高字节 temp_high=8; d=temp_high|temp_low; c=d*0.0625; d=(u16)(c*100); return(d); /返回16位变量湿度采集#includedht11.h#include sys.h#include unsigned int uchartemp;unsigned char ucharT_data_H,ucharT_data_L,ucharRH_data_H,ucharRH_data_L,ucharcheckdata;u

26、nsigned char ucharT_data_H_temp,ucharT_data_L_temp,ucharRH_data_H_temp,ucharRH_data_L_temp,ucharcheckdata_temp;void DHT11_IO_Init() P1SEL &= BIT0;void COM(void) unsigned char i; unsigned char ucharFLAG; uchartemp=0; P1DIR &= BIT0; for(i=0;i8;i+) ucharFLAG=2; while(!(P1IN&0x01)&ucharFLAG+); delay_us(

27、30); uchartemp=uchartemp18MS DATA_H; delay_us(30); P1DIR &= BIT0; if(!(P1IN&0x01) ucharFLAG=1; while(!(P1IN&0x01)&ucharFLAG+); ucharFLAG=1; while(P1IN&0x01)&ucharFLAG+); COM(); ucharRH_data_H_temp=uchartemp; COM(); ucharRH_data_L_temp=uchartemp; COM(); ucharT_data_H_temp=uchartemp; COM(); ucharT_dat

28、a_L_temp=uchartemp; COM(); ucharcheckdata_temp=uchartemp; uchartemp=(ucharT_data_H_temp+ucharT_data_L_temp+ucharRH_data_H_temp+ucharRH_data_L_temp); if(uchartemp=ucharcheckdata_temp) ucharRH_data_H=ucharRH_data_H_temp; ucharRH_data_L=ucharRH_data_L_temp; ucharT_data_H=ucharT_data_H_temp; ucharT_data_L=ucharT_data_L_temp; ucharcheckdata=ucharcheckdata_temp; else ucharRH_data_H=12; ucharT_data_H=23; /P2DIR |= BIT0;显示#include #include font.h#include sys.h#include lcd.hu16 BACK_COLOR, POINT_COLOR; /背景色,画笔色 void LCD_Writ_Bus(char da) /串行数据写入 u8 i; for(i=0; i8; i+) if(da & 0x80) SDA_H; else SDA

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2