基于单片机SHT11温湿度传感器电路图于程序.doc
《基于单片机SHT11温湿度传感器电路图于程序.doc》由会员分享,可在线阅读,更多相关《基于单片机SHT11温湿度传感器电路图于程序.doc(12页珍藏版)》请在咨信网上搜索。
基于89C51单片机SHT11温湿度传感器电路图于程序作者: 张志杰 SHT11、h文件: #ifndef __SHT11_H__ #define __SHT11_H__ /************************* SHT11相关命令 **************************/ #define uchar unsigned char #define uint unsigned int #define TEM_TEST 0x03//温度检测命令 #define HUM_TEST 0x05//湿度检测命令 #define REG_READ 0x07//读寄存器 #define REG_WRITE 0x06//写寄存器 #define FUNCTION_SET 0x01//设置SHT11得工作精度为8位/湿度 12位温度 /************************** SHT11端口定义 ***************************/ sbit SHT11_DATA=P3^1; sbit SHT11_SCK=P3^0; sbit P33=P3^3; sbit P32=P3^2; sbit P36=P3^6; sbit P37=P3^7; uchar flag_tempeture=0; //显示温度位置得标志 uchar flag_humidity=0; //显示湿度位置得标志 uchar code str1[]={ 0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};//温度图标 uchar code str6_sht11[]="%RH "; uchar code str4_sht11[]="humi="; uchar code str2_sht11[]="temp="; uchar code str7_sht11[]=" ";//清除没不要得显示 /*************************** 函数名称:Delay 函数功能:SHT11内部延时 ****************************/ void Delay { ; ; } /*************************** 函数名称:Delay_Ms 函数功能:SHT11检测等待延时 函数说明:11ms/55ms/210ms 分别对应8位/12位/14位 测量结果 对应得形参为N 则延时Nms ****************************/ void Delay_Ms(uint ms) // ms延时函数 (AT89C51 11、0592MHz) { uint i; uchar j; for(i=0;i<ms;i++) { for(j=0;j<200;j++); for(j=0;j<102;j++); } } /************************** 函数功能:SHT11启动时序 ***************************/ void SHT11_Start { SHT11_SCK=1; SHT11_DATA=1; Delay; SHT11_DATA=0; Delay; SHT11_SCK=0; Delay; SHT11_SCK=1; Delay; SHT11_DATA=1; } /****************************** 函数名称:SHT11_Sendbyte(uchar dat) 函数功能: 向SHT11发送8bite数据 ******************************/ void SHT11_Sendbyte(uchar dat) { uchar i; SHT11_SCK=0; Delay; for(i=0;i<8;i++) { if(dat&0x80) { SHT11_DATA=1; Delay; } else { SHT11_DATA=0; Delay; } dat=dat<<1; SHT11_SCK=1; Delay; SHT11_SCK=0; } } /********************************* 函数名称SHT11_Answer: 函数功能:检测SHT11得响应信号(在第九个时钟周期) ***********************************/ void SHT11_Answer { SHT11_SCK=1; Delay; while(SHT11_DATA==1); SHT11_SCK=0; SHT11_DATA=1; } /************************************ 函数名称:SHT11_Test_Finish 函数功能:检测SHT11温湿度检测就是否完毕 *************************************/ void SHT11_Test_Finish { while(SHT11_DATA==1); } /************************************ 函数名称:SHT11_Receivebyte 函数功能:从SHT11接收8bite数据 *************************************/ uchar SHT11_Receivebyte { uchar i; uchar dat; SHT11_SCK=0; Delay; for(i=0;i<8;i++) { SHT11_SCK=1; Delay; dat=dat<<1; if(SHT11_DATA) { dat=dat|0x01; Delay; } else { dat=dat&0xfe; Delay; } SHT11_SCK=0; Delay; } SHT11_DATA=1; //释放数据总线 return(dat); } /*********************************** 函数名称:MCU_Answer 函数功能:单片机向SHT11发送应答信号 *************************************/ void MCU_Answer { SHT11_SCK=0; Delay; SHT11_DATA=0; Delay; SHT11_SCK=1; Delay; SHT11_SCK=0; Delay; SHT11_DATA=1; //释放数据总线 这条指令非常重要 不加得话导致单片机不能读取低8位 } /*********************************** 函数名称:SHT11_End 当接收两个8byte数据后部接收CRC校验码 ************************************/ void SHT11_End { SHT11_DATA=1; SHT11_SCK=1; Delay; SHT11_SCK=0; Delay; } /************************************* 函数名称:void SHT11_Write_Register(uchar mand ,uchar dat) 函数说明:向SHT11得状态寄存器设置功能 mand为REG_WRITE 0x06写寄存器 dat为 设置SHT11得功能 可以设置检测得数据位数 */ void SHT11_Write_Register(uchar mand ,uchar dat) { SHT11_Start; SHT11_Sendbyte(mand); SHT11_Answer; SHT11_Sendbyte(dat); SHT11_Answer; } /*************************************** 函数名称:uchar SHT11_Read_Register(uchar mand) 函数说明:mand为REG_READ 0x07//读寄存器 返回值为状态寄存器得值 位6显示当前检测完一次数据后电源供电情况 当位6为0时表明VDD>2、47V 当位6为1时表明VDD<2、47V即电量不足 位0表明当前得测量分辨率 当位0为1时表明测量精度:8位/湿度 12位温度 当位0为0时表明测量精度:12位湿度 14位温度 默认为0 *******************************************/ uchar SHT11_Read_Register(uchar mand) { uchar dat; SHT11_Start; SHT11_Sendbyte(mand); SHT11_Answer; dat=SHT11_Receivebyte; SHT11_End; return(dat); } /*************************************** 函数名称:SHT11_Measure(uchar mand,uint time); 函数功能:设置SHT11检测功能,并返回相应得检测结果 函数说明:mand形参用于设定温度检测还就是湿度检测, time形参用于设定检测过程中得等待时间,以确定检测结果得位数 11ms/55ms/210ms 分别对应8位/12位/14位 ****************************************/ uint SHT11_Measure(uchar mand,uchar time) { uint dat=0; uchar data_high,data_low; SHT11_Start; SHT11_Sendbyte(mand); SHT11_Answer; Delay_Ms(time); SHT11_Test_Finish; data_high=SHT11_Receivebyte; MCU_Answer; data_low=SHT11_Receivebyte; SHT11_End; dat=(dat|data_high); dat=(dat<<8)|data_low; return(dat); } /**************************************** 函数名称:Convert_Tempeture12bit(uint dat); 函数功能:将检测到得数据转化为相应得温度数据 函数说明:温度转换公式T=d1+d2*SOt 公式中得参数d1=40,d2=0、04 适用于12位测量精度 */ float SHT11_Convert_Tempeture12bit(uint dat) { float tempeture1; tempeture1=40+0、04*dat; if(tempeture1>23) tempeture1=tempeture1+1; if(tempeture1>55) tempeture1=tempeture1+1; if(P37==1) { if(tempeture1>=16&&tempeture1<30) { P33=1; P32=0; } else { P33=0; P32=1; } } return(tempeture1); } /***************************************** 函数名称:SHT11_Convert_Humidity8bit(uint dat,float temp) 函数功能:将检测到得数据转化为相应得湿度数据 函数说明:相对湿度转换公式RHline=C1+C2*SOrh+C3*SOrh*SOrh(检测数据得线性化 SOrh为单片机接收到得数据) RHtrue=(tempeture25)*(t1+t2*SOrh)+RHline 公式中得参数:C1=4,C2=0,648,C3=0、00072 t1=0、01,t2=0、00128 适用于8位测量精度 */ uint SHT11_Convert_Humidity8bit(uint dat,float temp) { float RHline,RHtrue; uint r; RHline=4+0、648*dat0、00072*dat*dat; RHtrue=(temp25)*(0、01+0、00128*dat)+RHline; r=(RHtrue3)*10+0、5; if(P37==0) { if(r>=400&&r<600) { P33=1; } else { P33=0; } if(r>=600) { P32=1; } else { P32=0; } } return(r); } #endif Display、c文件: #include <reg52、h> #include "SHT11、h" #define uchar unsigned char #define uint unsigned int #define TEM_TEST 0x03//温度检测命令 #define HUM_TEST 0x05//湿度检测命令 #define REG_READ 0x07//读寄存器 #define REG_WRITE 0x06//写寄存器 #define FUNCTION_SET 0x01//设置SHT11得工作精度为8位/湿度 12位温度 uchar DispData[4] = {0, 1, 2, 3}; code uchar DispSegmentP0[10]={0x3f,0x06,0x1b,0x0f,0x26,0x2d,0x3d,0x07,0x3f,0x2f}; code uchar DispSegmentP2[10]={0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x00,0x22,0x22}; // 0 1 2 3 4 5 6 7 8 9 % code uchar DispCtrl[4] = {0xef, 0xdF, 0xbf ,0x7F}; sbit P16=P1^6; sbit P26=P2^6; sbit P34=P3^4; void Temp_delay(unsigned int j) { uchar i; for(i=100;i>0;i) { for(j;j>0;j); } } void Show(uchar *Buffer) { uchar i; for (i=0; i<4; i++) { P1 = DispCtrl[i]; P0 = DispSegmentP0[*Buffer]; P2 = DispSegmentP2[*Buffer]; if(P16==0) P26=1; Temp_delay(2); Buffer++; } } void DispConvert(uchar *DispAddr, uint Temp2Con) { DispAddr[0] = Temp2Con/1000; DispAddr[1] = (Temp2Con DispAddr[0]*1000)/100; DispAddr[2] = (Temp2Con DispAddr[0]*1000 DispAddr[1]*100)/10; DispAddr[3] = Temp2Con DispAddr[0]*1000 DispAddr[1]*100 DispAddr[2]*10; } void main { uint temp; uint dat; uint Hum; //float f; while(1) { Show(DispData); SHT11_Write_Register(REG_WRITE,FUNCTION_SET); temp=SHT11_Measure(TEM_TEST,0x37); temp=SHT11_Convert_Tempeture12bit(temp); dat=SHT11_Measure(HUM_TEST,0x0b); Hum=SHT11_Convert_Humidity8bit(dat,temp); if(P34==0) { P36=1; P37=0; DispConvert(DispData,Hum); } else { P36=0; P37=1; DispConvert(DispData,temp*10); } } } 还有些地方不就是很完美- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 SHT11 温湿度 传感器 电路图 程序
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文