单片机温湿度传感器课程设计_第1页
单片机温湿度传感器课程设计_第2页
单片机温湿度传感器课程设计_第3页
单片机温湿度传感器课程设计_第4页
单片机温湿度传感器课程设计_第5页
免费预览已结束,剩余38页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息与电气工程学院课程设计说明(2015 /2016学年第2学期)课程名称单片机应用课程设计题 目:温湿度监测系统专业班级自动化3班学生姓名学号:指导教师:苗敬利、王立国、王静爽、侯帅、何明星、赵奇设计成绩2016 年摘要,通过在LCD1602上实时显示室内环A/D转换器为一体得DHT90专感器芯片,本设计实现得就是单片机温湿度测量与控制系统境得温度与相对湿度。系统采用集温湿度传感器与通过单片机AT89C52处理进行显示,其它模块包括了实时时钟 /日期产生电路与超限报警处 理电路,对所测量得值进行实时显示与报警处理。本文介绍了基于ATMEL公司得AT89C52系列单片机得温湿度实时测量与控制系

2、统与显示系统得设计,包括介绍了硬件结构原理,并用,提高了测量精度与效率。关键词:温湿度;SHT10传感器;单片机;DHT11传感器1设计目得:制定温湿度监测系统 得操作流程,指导温湿度监测系统得正确使用与维护,防止温湿度监测系统操作不当而造成损坏,并保证测试得数据准确。2温湿度检测得简介2、1系统得概述温湿度测量技术在当今得工厂加工、医疗区域、农业区域中已经起来重要得位子,例如资源得节约、产品质量得提高、产品数目得提高,这些问题现在已经越来越受到外界得关注了。当今,知识信息与知识得工业化已经开始了飞一般得进步,温度与湿度得问题影响得范围距离已经不再之前谈到得那些方面,它还体现在科技发展、卫生用

3、品、医药卫生、国家安全基础等多种方面。就上述几个问题与情况,温湿度检测得准确性、稳定性、快速性、安全性这些方面得设计要求变得尤其重要。在最近几年中,使用SHT10控制得温湿度传感器与温湿度数据得网上直接检验技术现已成为当下得一种发展方向与追求。本次毕业设计介绍与实现了一种单片机与自动化温湿度传感器互相结合,它们两就组成了一种简单得温湿度检测器系统。这种检测系统具有以下得特点:易操作、制作成本低、准确性较高、持续时间长、较为稳定。2、2系统设计选题得背景2、2、1国内外研究现状关于我国国内温湿度研究得时间相对于国外还就是比较晚得,毕竟我国对于温湿度检测技术得研究才刚刚起步。初期我国只运用了相对落

4、后得温湿度得微机控制测量技术,而这门技术还就是在参考当时国外发展国家得检测技术得基础上,这门技术局限于测量单方面环境因,经过素,不支持复杂、多项得环境控制。我国关于温湿度检测技术从对国外发达技术得学习慢慢时间得不断地实验,现已经发展到微测量计算机应用得层次上。目前,国内用得技术基本上包括单片机,这种技术就是利用单片机控制得温湿度检测得系统,过程与步骤都比较简单还不能实现多参数多回路得温湿度控制系统,相对于那些发达得国家,技术还就是比较落后。2、2、2 国外外研究现状关于国外温湿度研究得时间相对于国内来说还就是较早。国外初期首先设计出通过组合得形式得模拟式器件 ,运用了就地取材得方法 , 将其收

5、集得信号进行一系列得指示并加以记录。近阶段世界各国都在研究与开发基于计算机得控制温湿度系统, 此系统受多因子得控制 , 其主要特点为精确性高、稳定性强。以后温湿度发展趋势向着无人操作化、精度稳定化发展。2、3 系统得分类水汽压型 :测出大气中对某一装置得总压力 ,然后再测出大气中得水汽对同一装置得压力将测出得两个压力进行百分比得对比压力 , 即可以得出温湿度得大小值。电阻式湿度片 : 通过外界温湿度变化与电阻值得关系得来设计出得测量仪器。当外界得温湿度改变时 ,与其用电路连接得电阻也随之改变。 温湿度片就就是这里得核心器件 ,它可以感应到外界温湿度得变化。干湿球温度表 :通过两只完全相同得温度

6、表 ,使她们并列在一起 ,其中用一只温度表测量气温, 另外一支温度表表头需要缠绕着浸透过纯蒸馏水得脱脂纱布, 这两种温度表结合起来就就是干湿球温度表。2、 4 系统设计得内容与要求对某一特定环境下用温室度传感器感受到温度与湿度变化, 把这种变化转化为电信号输入到单片机中,然后进行各端口得控制使其数据显示在LCD显示屏上,完成了对仓库额得温室与湿度得测量。要求误差在上下10%之内。3 数据采集部分3、1 温度传感器采用热电阻温度传感器。热电阻就是利用导体得电阻随温度变化得特性制成得测温元件。现应用较多得有铂、铜、镍等热电阻。其主要得特点为精度高、测量范围大、便于远距离测量。 铂得物理、 化学性能

7、极稳定 , 耐氧化能力强 , 易提纯 , 复制性好 , 工业性好 , 电阻率较高 ,因此 ,铂电阻用于工业检测中高精密测温与温度标准。缺点就是价格贵, 温度系数小 , 受到磁场影响大 , 在还原介质中易被玷污变脆。按IEC标准测温范围200650 C ,百度电阻比W(100)=1、3850 时,R0 为 100Q与 10Q ,其允许得测量误差A级为± (0、15C +0、002|t|),B级为± (0、3C +0、005|t|)。铜电阻得温度系数比铂电阻大,价格低,也易于提纯与加工;但其电阻率小,在腐蚀性介质中使用稳定性差。在工业中用于50180C测温。3、2湿度传感器测量

8、空气湿度得方式很多,其原理就是根据某种物质从其周围得空气吸收水分后引起得物理或化学性质得变化,间接地获得该物质得吸水量及周围空气得湿度。电容式、电阻式与湿涨式湿敏原件分别就是根据其高分子材料吸湿后得介电常数、电阻率与体积随之发生变化而进行湿度测量得。采用HS1100/HS1101湿度传感器。HS1100/HS1101电容传感器,在电路构成中等效于一个电容器件 ,其电容量随着所测空气湿度得增大而增大。不需校准得完全互换性,高可靠性与长期稳定性,快速响应时间,专利设计得固态聚合物结构,由顶端接触(HS1100)与侧面接触(HS1101)两种封装产品,适用于线性电压输出与频率输出两种电路,适宜于制造

9、流水线上得自动插件与自动装配过程等。相对湿度在1% 100%RH范围内;电容量由16pF变到200pF,其误差不大于± 2%RH晌应时间小于5s;温度系数为0、04 pF/C。3、3采用得传感器大连北方测控工程有限公司生产得温湿度传感器DHT90,将两者得功能集成在一起,并且输出得就是数字信号,不需要再进行 A/D转换,其温度测量得范围为 40 C123、8 C ,分辨率为0、01 C;测湿范围为0100%RH分辨率为0、03%RH综合上面各种设计得技术要求与 传感器得特性,考虑到设计简约化,选择使用传感器 DHT90,输出得就是数字信号,不需要进行A/D转换,简化了系统设计。4系统

10、设计方案 4、1系统框架图本系统由单片机主控电路,DHT11温湿度采集模块,1602液晶显示模块3部分组成,下图为框架图。4、一:采用温湿度器就是机 AT89C52 款含有已校准数字信号输出得I温湿度复合传感器。DH皿采集温湿度数据'伽液数字温湿度传感 它应用专用得数字模块采集技术与温湿度传感技术,确保产品具有极高得可靠性与卓越得长期稳定性。传感器包括一个电阻 式感湿元件与一个 NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。DHT1I1DHT11原理图DHT11实物图4、2、2方案二:由于本实验Proteus库中无dh

11、t11模块,使用sht11代替。为了营造无人瞧守状态,本次设计中还应用了远程通信系统。方案一中系统得控制核心就是AT89C52单片机,它得主要作用就是读取温湿度传感器工作时得内部参数,测试得结果可以显示在 LCD上面。4、3系统功能模块设计4、3、1中央控制单元单片机AT89 C52显示模块 LCD LMOiGL敏感元件 遥湿度传 集器SHT10本次温湿度检测系统设计中,由单片机组成得中央控制单元有十分重要得作用。这就是整个系统得大脑,它发出操作命令指挥系统工作。该单片机不仅可以控制LCD显示屏幕得工作状态,还可以时时刻刻管理着监测着外部环境得温湿度得变化得温湿度传感器得工作状态。依照所需设计

12、得要求与控制得目得,本次毕业设计选择了 AT89C52芯片,该芯片里面包含4k Bytes ISP 得能多次烧入得 Flash器件,就是一类简单高效率得 CMOS 8位芯片。AT89C52芯片就是使用了 ATMEL公司厂家中得较为先进高级得控制与制作技术做为支持动力。AT89C52芯片还包括 MCS52系统得操作命令与 89C52管脚得排列,其中较重要得8位CPU与ISP Flash存储单元就是它得核心部件。AT89C52芯片得系统功能具有巨大得优势,它可以满足设计中系统稳定运行得基本要求O AT89C52芯片具16位可编程定时计数器3个,有引脚40个,全双工串行通信口2个,外部双向输入/输出

13、(I/O)端口 32个,外中断口 2个,读写口线2个,AT89C52芯片得管脚结构如下图所示: 1 1 1 1 r I - - ' ' 1 "j鬥:韶严1鬥鬥門诃鬥 二J鬥诃诃呂斗已严严I J卜尸严Fl鬥鬥二Ig4、3、2晶振电路模块与复位电路模块L三WL. id LJ- AZl_-1.h q d 1 C3_ O_-T;-.«O_gWr: >-1O-口FTd dI 刈討討:卜卜1"+4卜】单片机晶振电路模块:单片机得工作条件就是要在时钟驱动得作用下才可以稳定得进行工作所需得电容大小通常为 30PF。单片机工作时需要一个信号脉冲,晶振得作用就就

14、是提供这个信号脉冲。在时钟驱动作用下,晶振电路所提供得信号脉冲就就是单片机得工作速度。举个例子来说明,一个频率为12MHZ得晶振电路芯片,它得工作速度就是12MHZ每秒得运行速度,与我们使用得电脑手机得 CPU一个道理。就于多大得频率才能使单片机更好得更稳点得工作得问题,一般情况下其工作时所需要得频率在24MHZ左右,超过这个值,系统工作就不稳定了。单片机系统得工作速度取决于时钟信号,其内部镶有时钟振荡电路,在单片机得外部接通一个振荡源就可以工作了。复位电路模块:复位电路在设计得系统中起着重要得作用,它保障了设计得系统可以在稳定得环境下工作,复位电路得主要作用功能就就是上电复位。当复位信号消除

15、得时候,系统微机电路才可以稳定高效得工作,消除复位信号得条件就是VCC得电压在4、7V与5、2V之间,只有在提供稳定无误差得时钟信号才能实现本次得设计。下图为其仿真图晶振电路与复位电路4、3、3显示模块LCD显示电路就是本系统得功能具体体现得重要模块,实现了对温湿度检测得液晶屏控制得功能。温湿度显示电路得组成有SHT10温湿度传感器、LCD液晶显示屏幕。其显示模块先接受来自单片机处理后得信号 ,再将其结果显示在液晶屏幕。STC89C52得P2 口接1602得8 位数据线,通过输出数据控制 1602显示不同得提示字符。1602本身内置各种字符,还可以自定义显示字符。本设计中根据不同场合1602会

16、显示各种提示字符。P0、0P0 2接1602控制端,其中P0O接使能端E,写操作时,使能端下降沿有效。P0、1接读写控制端R/W,R/W=O, 读操作;R/W=1,写操作。P0 2接寄存器选择端 RS,RS=O,写操作时指向指令寄存器,读操作时LCD1602 得 VSS为电指向地址寄存器;RS=1,无论读操作还就是写操作都指向数据寄存器。源地,需接地;VDD为电源电压;V0为LCD驱动电压,接电位器,通过调节电位器控制显示得亮度,使LCD显示清晰而无黑影。背光电源线LCD正负两端分别接电源与地即可。下图为其rJnm L F n 啊电fl .Q O|C 3 0-0-IDDJLCD1 UUUlta

17、L* di岂3S 團Mte仿真图:RV1I :卜I 1*显示模块4、3、4温湿度传感器U2卩孕3p252利用型号为SHT10得温湿度传感器来测试仓库得温度与湿度。下图为其仿真图>SCK A KSISIDATA mU %RH军SHT10温湿度传感器仿真图上三个按键:t J ?来控制操作。当?打到左边时为湿度得调节,当?打到右边得时候为温度得调节;t就是增大按键,就是减小按键。5系统得仿真与调试 5、1Proteus对系统仿真根据设计要求,从Proteus元件库中找到所需要用到得元件,画好电路图并且检查有无错误。最后通过keil uVision软件编写得C语言程序,转换成HEX文件下载到画好

18、得得电路上进行调试。以下就是系统得仿真电路图:如叮囂盟rvnp>«£4 P曹C HUnteD, P號ftHG 斗- '.X. ,.| 1h.'1 - - 4.' W*-:-:3r 1?3智:A: :kI :卜.严鑿益蔭. 11P-“ y- 三忘/. TSr J :J系统运行图5、2LCD得仿真RV1IK=T5、3硬件运行结果flIM -LCDli_rvilM 乩TEHP s 02S兮比CHUnI二e32,兮比RHsS也 庄 § LU SSHBSESqmic-m| ro I I F s|g| 、8 6 ml匸钊巴I竺峑注bl asEis

19、ps捋卜X卜* - * 9 4占* «Led运行图RM】 W I I>口:山 u 釜 uamiibJ£ -KTUBREU ra irxE-1 rnnrtiT- UMtS ra n*Afrp ni W ru A-AM ra-TAETS-5佃nl_r1TT运行结果图I"p:I'jfri-U* n H jvk Iri IpFX WAH吒 *-rx r wL±k- :r6总结实物运行图历经两周得课设 ,又懂得了很多得知识 , 在这两周得时间里 , 感受良多吧可以算就是。因为我们做得课设里面因为Proteus库中没有DHT11元件,导致我们做了将近一

20、个星期得课设全部推翻。无奈得对着那一堆程序没日没夜得改着。 从一开始得不了解 ,觉得很复杂 ,有传感器、单片机与 1602,最麻烦得就是还要编程序 ;到最后得完成 ,对各个模块都有了更深认知。设计综合利用单片机技术、传感器技术、数字电子技术与LCD显示等科学知识,完成了单片机控制得温度、湿度与显示装置得设计, 比较系统地介绍了硬件得组成及设计方法并利用单片机C语言完成了系统软件得设计。1. 把传感器技术应用到单片机控制系统中 , 实现了对环境温度与湿度得数据采集与读取。2、利用LCD液晶得显示技术完成了环境温度、湿度及显示电路得设计。3. 在本设计得基础上皆有继电器模块, 可以外接调温调湿电器

21、 , 把功能扩展延伸为实现对环境温湿度得控制。4. 整个系统软硬件搭配合理 , 设计、开发、维护方便 , 性价比高原理图得绘制使我从新学习了一次Proteus, 对软件种元器件更加熟悉 , 画仿真图时更为流畅。在进行设计之前有着很多要解决得问题 , 比如元器件得选择问题、各个模块得设计与主程序得编程。通过这次设计 , 我从到图书馆得网站查找相应得资料应用到对应电路参与设计得思考。每个模块都要经过多次得设计 , 不断得试验 , 让我对之前在学校所学得书本上得理论知识有了更为深刻得了解。 在完成毕业设计得过程就是一次难得得理论与实际相结合得过程, 在这段时间我更为深刻得理解与掌握了大学期间所学得一

22、些知识,例如C语言得编程、数字模拟电路、单片机得简单应用、 Proteus 与 keil 软件得使用与设计。在设计过程中 , 由于时间与本人能力得限制 , 设计中存在一些需要改进与优化得地方。 测量精度有待进一步提高 , 软件设计也存在不合理之处。但从设计过程中 , 对于单片机有更进一步得认识 , 对用于单片机仿真得软件操作能力也明显提高, 通过此设计 , 本人受益颇丰。参考文献1李全利等编著、 单片机原理及应用、北京:清华大学出版社,2006、02:1436、2杨西明 , 朱骐主编、单片机编程与应用入门、北京: 机械工业出版社 ,2004、 06:2438、3先锋工作室编著、 单片机程序设计

23、实例 、北京:清华大学出版社 ,2003、 01:6878、4谢宜仁主编、 单片机实用技术问答 、北京: 人民邮电出版社 , 2003、 02:1120、 5孙江宏 , 李良玉等编著、Protel99 电路设计与应用、北京 : 机械工业出版社 ,2004 、07、6房小翠 , 王金凤编著、单片机实用系统设计技术 、北京 : 国防工业出版社 ,1999 、 06、7南建辉等编著、MCS51单片机原理及其应用实例、北京:清华大学出版社,2004、03、8何宏主编、单片机原理与接口技术、北京:国防工业出版社,2006、07:15309叶健斌、基于单片机嵌入式系统得GPS应用、电子质量,2008:(7

24、)1624、10王静、通用库房温湿度测控系统、青岛 :中国海洋大学 ,2009、 05:30 33、11刘宝元 , 张玉虹、 基于单片机得温湿度监控系统设计、国外电子测量技术,2009 、12、12陈汝全、 实用微机与单片机控制技术、成都 :电子科技大学出版 ,2005、 06:16 17、附录 1:DHT11 程序/ 湿度 2090 温度 050 采样间隔 1S #include <intrins 、 h> #include "lcd 、 h"sbit DQ=P3A7;/DTH11 uchar code ASCII="0123456789%c&quo

25、t;uchar code table0=" Hum:00"; uchar code table1=" Tem:00"; uchar tem; uchar hum; display02=0,0; display12=0,0;延时函数/*void delay_ms(uint z)uint x,y;for(x=z;x>0;x)for(y=114;y>0;y);/*初始化 DTH11bit Init_DTH11bit flag;uchar num;DQ=0;delay_ms(19); / >18msDQ=1;for(num=0;num<1

26、0;num+); / 2040us 34、7usfor(num=0;num<12;num+);flag=DQ;for(num=0;num<11;num+); /DTH 响应 80usfor(num=0;num<24;num+); /DTH拉高 80usreturn flag;/*读DTH11数据uchar DTH11_RD_CHARuchar byte=0;uchar num;uchar num1;while(DQ=1);for(num1=0;num1<8;num1+)while(DQ=0);byte<<=1; /高位在前for(num=0;DQ=1;num

27、+);if(num<10)byte|=0x00;elsebyte|=0x01;return byte;/*读取DTH11温度与湿度void DTH11_DUSHU uchar num;if(Init_DTH11=0)hum=DTH11_RD_CHAR; / 比正常值高 7 度左右DTH11_RD_CHAR;tem=DTH11_RD_CHAR;DTH11_RD_CHAR;DTH11_RD_CHAR;for(num=0;num<17;num+); / 最后 BIT 输出后拉低总线 50usDQ=1;显示函数/* void Display_DTH11 display01=hum/10%1

28、0;display00=hum%10;LcdShowStr(0, 0, table0);DisplayOneChar (8, 0, ASCII display01 );显示湿度DisplayOneChar (9, 0, ASCII display00 );DisplayOneChar (10, 0, ASCII10 ); / display11=tem/10%10;display10=tem%10;LcdShowStr(0, 1, table1);DisplayOneChar (8, 1, ASCII display11 );DisplayOneChar (9, 1, ASCII displa

29、y10 );DisplayOneChar (10, 1, 0xdf );主函数显示温度DisplayOneChar (11, 1, ASCII11 ); /* main tem=0;hum=0;delay_ms(1000); /DTH11开始 1s 有错误输出InitLcd1602;while(1)DTH11_DUSHU;Display_DTH11;delay_ms(2000);附录 2:SHT10 程序#include<reg51 、 h>#include <intrins、h>#define uchar unsigned char#define noACK 0/ 继

30、续传输数据 , 用于判断就是否结束通讯#define ACK 1/结束数据传输 ;读/ 写/0000011/0000011/0000001/000001011110#define STATUS_REG_W 0x060#define STATUS_REG_R 0x071#define MEASURE_TEMP 0x031#define MEASURE_HUMI 0x051#define RESET 0x1e /000enum TEMP,HUMI;sbit DATA = P 2人5;sbit SCK = P 2人4;sbit RS = P 2人0;sbit RW = P 2人1;sbit E =

31、P 2人2;、数据端口sfr DBPort = 0x80;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0/*DS1602函数声明*/char s_read_byte(unsigned char ack)void LCD_Initial;void GotoXY(unsigned char x, unsigned char y);void Print(unsigned char *str);void LCD_Write(bit style, unsigned char input);/* SHT10函数声明*/void s_connectionreset(void);char s

32、_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode);void calc_sth10(float *p_humidity ,float *p_temperature);/float calc_dewpoint(float h,float t);/*/ 写字节程序char s_write_byte(unsigned char value)unsigned char i,error=0;for (i=0x80;i>0;i>>=1)/高位为 1, 循环右移if (i&v

33、alue) DATA=1;/与要发送得数相与 , 结果为发送得位else DATA=0;SCK=1;_nop_;_nop_;_nop_;/延时 3usSCK=0;DATA=1;/释放数据线SCK=1;error=DATA;/检查应答信号 , 确认通讯正_nop_;_nop_;_nop_;SCK=0;DATA=1;return error;/error=1通讯错误/ 读字节程序/释放数据线unsigned char i,val=0;DATA=1;for(i=0x80;i>0;i>>=1)/高位为 1, 循环右移SCK=1;if(DATA) val=(val|i);/读一位数据线

34、得值SCK=0;DATA=!ack;/如果就是校验 , 读取完后结束通讯 ;SCK=1;_nop_;_nop_;_nop_;/延时 3usSCK=0;_nop_;_nop_;_nop_;DATA=1;/释放数据线return val;/ 启动传输void s_transstart(void) / generates a transmission start / / DATA: / / SCK : _| |_| |DATA=1; SCK=0;/准备_nop_;SCK=1;_nop_;DATA=0;_nop_;SCK=0;_nop_;_nop_;_nop_;SCK=1;_nop_;DATA=1;_

35、nop_;SCK=0;unsigned char i;DATA=1; SCK=0;/准备for(i=0;i<9;i+)/DATA保持高,SCK时钟触发9/ 连接复位void s_connectionreset(void) / munication reset: DATAline=1 and at least 9 SCK cycles followed by transstart / / DATA: / / SCK : _| |_| |_| |_| |_| |_| |_| |_| |_| |次, 发送启动传输 , 通迅即复位SCK=1;SCK=0;s_transstart;/启动传输*p_

36、value=s_read_byte(ACK);/read status register/ 软复位程序char s_softreset(void) / resets the sensor by a softresetunsigned char error=0;s_connectionreset;/启动连接复位error+=s_write_byte(RESET);/发送复位命令return error;/error=1通讯错误/* 读状态寄存器char s_read_statusreg(unsigned char *p_value, unsigned char *p_checksum) / /

37、reads the status register with checksum (8bit)unsigned char error=0;s_transstart;/transmission starterror=s_write_byte(STATUS_REG_R); /send mand to sensor(8bit)unsigned error=0;s_transstart;/启动传输*p_checksum=s_read_byte(noACK); /read checksum (8bit)return error;/error=1 in case of noresponse form the

38、 sensor/ 写状态寄存器char s_write_statusreg(unsigned char *p_value) / writes the status register with checksum (8bit)unsigned char error=0;s_transstart;/transmission starterror+=s_write_byte(STATUS_REG_W);/send mand to sensorerror+=s_write_byte(*p_value);/send value of statusregisterreturn error;/error>

39、;=1 in case of noresponse form the sensor*/ 温湿度测量char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode)/进行温度或者湿度转换,由参数mode决定转换内容;/enum TEMP,HUMI;/ 已经在头文件中定义unsigned int i;switch(mode)/选择发送命令caseTEMP等待测量结束if(DATA) error+=1;/如果长时间数据线没有拉/ 测量温度error+=s_write_byte(MEASURE_T

40、EMP); break;case HUMI : error+=s_write_byte(MEASURE_HUMI); break; / 测量湿度default : break;for (i=0;i<65535;i+) if(DATA=0) break; /const float T2=+0、00008;/14 位温度精度 5V 条件 修低, 说明测量错误*(p_value) =s_read_byte(ACK); /读第一个字节 , 高字节 (MSB)*(p_value+1)=s_read_byte(ACK);/ 读 第 二个字 节 , 低 字 节(LSB)*p_checksum =s_r

41、ead_byte(noACK); /read CRC校验码return error;/ error=1 通 讯 错/ 温湿度值标度变换及温度补偿void calc_sth10(float *p_humidity ,float *p_temperature)const float C1=4、0;/ 12位湿度精度修正公式const float C2=+0、0405;/ 12位湿度精度修正公式const float C3=0、0000028;/ 12位湿度精度修正公式const float T1=+0、01;/14 位温度精度 5V 条件 修正公式正公式float rh=*p_humidity;/

42、 rh:12位 湿度性补偿float t=*p_temperature;float rh_lin;float rh_true;float t_C;t_C=t*0 、 01 40;/ t:14位 温度/ rh_lin:/ rh_true:/ t_C :/补偿温度湿度 linear 值湿度 ture 值温度crh_lin=C3*rh*rh + C2*rh + C1; /rh_true=(t_C25)*(T1+T2*rh)+rh_lin;/相对湿度非线性补偿相对湿度对于温度依赖if(rh_true>100)rh_true=100; /湿度最大修正if(rh_true<0 、 1)rh_t

43、rue=0 、 1;/湿度最小修正*p_temperature=t_C;/返回温度结果*p_humidity=rh_true;/返回湿度结果/ 从相对温度与湿度计算露点/*float calc_dewpoint(float h,float t)float logEx,dew_point;logEx=0 、 66077+7、5*t/(237 、 3+t)+(log10(h)2);dew_point = (logEx 0 、 66077)*237 、3/(0 、66077+7、5logEx);return dew_point;*/* */DS1602 程序 (1602 、 c): /#includ

44、e<tou 、 h> / 内部等待函数 * unsigned char LCD_Wait(void)RS=0;RW=1; _nop_;E=1; _nop_;E=0;return DBPort;/向 LCD 写入命令或数据 * #define LCD_MAND 0 / mand#define LCD_DATA1/ Data清屏#define LCD_CLEAR_SCREEN 0x01 /#define LCD_HOMING0x02 /光标返回原点void LCD_Write(bit style, unsigned char input)E=0;RS=style;RW=0; _nop_

45、;DBPort=input; _nop_;/注意顺序E=1; _nop_;/注意顺序E=0; _nop_;LCD_Wait;/ 设置显示模式 *#define LCD_SHOW0x04 /显示开#define LCD_HIDE0x00 /显示关#define LCD_CURSOR0x02 /显示光标#define LCD_NO_CURSOR 0x00 /无光标#define LCD_FLASH0x01 /光标闪动#define LCD_NO_FLASH0x00 /光标不闪动void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_M

46、AND, 0x08|DisplayMode);/ 设置输入模式 * #define LCD_AC_UP 0x02#define LCD_AC_DOWN0x00 / default#define LCD_MOVE0x01 /画面可平移#define LCD_NO_MOVE0x00 /defaultvoid LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_MAND, 0x04|InputMode);/ 初始化 LCD* void LCD_InitialE=0;LCD_Write(LCD_MAND,0x38);/8位数据端口 ,2 行显示 ,5*7 点阵LCD_Write(LCD_MAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); / 开启显示 , 无光标递增 , 画面不动LCD_Write(LCD_MAND,LCD_CLEAR_SCREEN); / 清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC/ 液晶字符输入得位置 * void GotoXY(unsigned char x, unsigned char y)if(y=0)LCD_Write(LCD_MAND,0x80|x);if(y=1)LCD_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论