版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于89C51单片机SHT11温湿度传感器电路图于程序作者:张志杰OH131w»*03*HQjM-i*7»II3mlM3:mi,/口gnvFi»文件:#ifndef_SHT11_H_#defineSHT11H/*SHT1加目关命令#defineucharunsignedchar#defineuintunsignedint#defineTEM_TEST#defineHUM_TEST#defineREG_READ#defineREG_WRITE#defineFUNCTION_SET0x03/温度检测命令0x05/湿度检测命令0x07/读寄存器0x06/写寄存器0x01
2、设置SHT11的工作精度为8位/湿度12位温度/*SHT1端口定义*/sbitSHT11_DATA=P3A1;sbitSHT11_SCK=P3AQ;sbitP33=P3A3;sbitP32=P3A2;sbitP36=P3A6;sbitP37=P3A7;ucharflag_tempeture=Q;/显示温度位置的标志ucharflag_humidity=Q;/显示湿度位置的标志温度图标ucharcodestr1=Qx1Q,QxQ6,QxQ9,QxQ8,QxQ8,QxQ9,QxQ6,QxQQ;/ucharcodestr6_sht11="%RH"ucharcodestr4_sht
3、11="humi=""/清除没不要的显示ucharcodestr2_sht11="temp="ucharcodestr7_sht11="/*函数名称:Delay()函数功能:SHT11内部延时*/voidDelay()/*函数名称:Delay_Ms()函数功能:SHT11检测等待延时函数说明:11ms/55ms/210ms分别对应8位/12位/14位测量结果对应的形参为N则延时Nms*/voidDelay_Ms(uintms)/ms延时函数(AT89C51uinti;ucharj;for(i=0;i<ms;i+)for(j=0;
4、j<200;j+);for(j=0;j<102;j+);/*函数功能:SHT11启动时序*/voidSHT11_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(uchardat)函数功能:向SHT11发送8bite数据/voidSHT11_Sendbyte(uchardat)uchari;SHT11_SCK=0;Delay();for(i=0;i<8;i+)
5、if(dat&0x80)SHT11_DATA=1;Delay();)elseSHT11_DATA=0;Delay();)dat=dat<<1;SHT11_SCK=1;Delay();SHT11_SCK=0;函数名称SHT11_Answer():函数功能:检测SHT11的响应信号(在第九个日钟周期)*/voidSHT11_Answer()(SHT11_SCK=1;Delay();while(SHT11_DATA=1);SHT11_SCK=0;SHT11_DATA=1;/函数名称:SHT11_Test_Finish()函数功能:检测SHT11温湿度检测是否完毕*/voidSHT
6、11_Test_Finish()(while(SHT11_DATA=1);/函数名称:SHT11_Receivebyte()函数功能:从SHT1俄U酿8bite数据*/ucharSHT11_Receivebyte()uchari;uchardat;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;/
7、释放数据总线return(dat);/*函数名称:MCU_Answer()函数功能:单片机向SHT11发送应答信号*/voidMCU_Answer()(SHT11_SCK=0;Delay();SHT11_DATA=0;Delay();SHT11_SCK=1;Delay();SHT11_SCK=0;Delay();SHT11_DATA=1;/释放数据总线这条指令非常重要不加的话导致单片机不能读取低位)/*函数名称:SHT11_End()当接收两个8byte数据后部接收CRC校验码/voidSHT11_End()(SHT11_DATA=1;SHT11_SCK=1;Delay();SHT11_SCK
8、=0;Delay();)/*函数名称:voidSHT11_Write_Register(ucharcommand,uchardat)函数说明:向SHT11的状态寄存器设置功能command为REG_WRITE0x0筋寄存器dat为设置SHT11的功能可以设置检测的数据位数*/voidSHT11_Write_Register(ucharcommand,uchardat)(SHT11_Start();SHT11_Sendbyte(command);SHT11_Answer();SHT11_Sendbyte(dat);SHT11_Answer();/*函数名称:ucharSHT11_Read_Reg
9、ister(ucharcommand)函数说明:command为REG_READ0x07/读寄存器返回值为状态寄存器的值位6显示当前检测完一次数据后电源供电情况当位6为0时表明VDD当位6为1时表明VDD即电量不足位0表明当前的测量分辨率当位0为1时表明测量精度:8位/湿度12位温度当位0为0时表明测量精度:12位湿度14位温度默认为0*/ucharSHT11_Read_Register(ucharcommand)(uchardat;SHT11_Start();SHT11_Sendbyte(command);SHT11_Answer();dat=SHT11_Receivebyte();SHT1
10、1_End();return(dat);/*函数名称:SHT11_Measure(ucharcommand,uinttime);函数功能:设置SHT11检测功能,并返回相应的检测结果函数说明:command形参用于设定温度检测还是湿度检测,time形参用于设定检测过程中的等待时间,以确定检测结果的位数11ms/55ms/210ms分别对应8位/12位/14位*/uintSHT11_Measure(ucharcommand,uchartime)uintdat=0;uchardata_high,data_low;SHT11_Start();SHT11_Sendbyte(command);SHT11
11、_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(uintdat);函数功能:将检测到的数据转化为相应的温度数据函数说明:温度转换公式-T=d1+d2*SOt公式中的参数d1=-40,d2=适用于12位测量精度*
12、/floatSHT11_Convert_Tempeture12bit(uintdat)floattempeture1;tempeture1=-40+*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;)elseP33=0;P32=1;return(tempeturel);)/*函数名称:SHT11_Convert_Humidit
13、y8bit(uintdat,floattemp)函数功能:将检测到的数据转化为相应的湿度数据SOrh函数说明:相对湿度转换公式一-RHline=C1+C2*SOrh+C3*SOrh*SOrh(检测数据的线性化为单片机接收到的数据)RHtrue=(tempeture-25)*(t1+t2*SOrh)+RHline公式中的参数:C1=-4,C2=0,648,C3=t1=,t2=适用于8位测量精度*/uintSHT11_Convert_Humidity8bit(uintdat,floattemp)floatRHline,RHtrue;uintr;RHline=-4+*dat*dat;RHtrue=(
14、temp-25)*+*dat)+RHline;r=(RHtrue-3)*10+;if(P37=0)if(r>=400&&r<600)P33=1;else(P33=0;)if(r>=600)(P32=1;)else(P32=0;)return(r);)#endif文件:#include<>#include""#defineucharunsignedchar#defineuintunsignedint#defineTEMTEST0x03/温度检测命令#defineHUMTEST0x05/湿度检测命令#defineREGREAD0x0
15、7/读寄存器#defineREGWRITE0x06/写寄存器#defineFUNCTIONSET0x01设置SHT11的工作精度为8位/湿度12位温度ucharDispData4=0,1,2,3;codeucharDispSegmentP010=0x3f,0x06,0x1b,0x0f,0x26,0x2d,0x3d,0x07,0x3f,0x2f;codeucharDispSegmentP210=0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x00,0x22,0x22;/0123456789%codeucharDispCtrl4=0xef,0xdF,0xbf,0x7F;s
16、bitP16=P1A6;sbitP26=P2A6;sbitP34=P3A4;voidTemp_delay(unsignedintj)uchari;for(i=100;i>0;i-)for(j;j>0;j-);voidShow(uchar*Buffer)uchari;for(i=0;i<4;i+)P1=DispCtrli;P0=DispSegmentP0*Buffer;P2=DispSegmentP2*Buffer;if(P16=0)P26=1;Temp_delay(2);Buffer+;voidDispConvert(uchar*DispAddr,uintTemp2Con)DispAddr0=Temp2Con/1000;DispAddr1=(Temp2Con-DispAddr0*1000)/100;DispAddr2=(Temp2Con-DispAddr0*1000-DispAddr1*100)/10;DispAddr3=Temp2Con-DispAddr0*1000-DispAddr1*100-DispAddr2*10;voidmain()(uinttemp;uintdat;uintHum;/floatf;while(1)(Show(DispData);SHT11_Write_Register(REG_WRITE,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 软件测试技术进阶
- 装配式建筑构件生产质量检验标准
- (正式版)DB44∕T 2825-2026 森林质量精准提升技术规程
- 2026四川泸州市交通技工学校社会招聘38人考试模拟试题及答案解析
- 2026山东威海港投产业发展有限公司及子公司招聘5人考试备考题库及答案解析
- 金融统计事项报备制度
- 2026新华保险管理干部招聘笔试备考试题及答案解析
- 2026中国人寿保险股份有限公司丽水分公司招聘1人考试参考题库及答案解析
- 2026江西赣州安远县城投集团第一批次招聘18人笔试参考题库及答案解析
- 2026云南德宏州人力资源和社会保障局第一轮招募银龄技师10人笔试备考题库及答案解析
- 2025年四川省从“五方面人员”中选拔乡镇领导班子成员考试历年参考题库含答案详解
- 2026高端航空装备技术创新中心(四川)有限公司春季社会招聘17人笔试历年参考题库附带答案详解
- 2025市政院设计岗笔试试题及官方参考答案
- 2026宁夏农垦酒业有限公司社会招聘3人备考题库及答案详解(名校卷)
- 2026年考消控证试题及答案
- 高低压开关柜投标文件技术标
- 巾帼工作室工作制度
- 新高考教学教研联盟(长郡二十校)2026届高三年级4月第二次联考英语试卷(含答案详解)
- 基于组态王停车场智能监控方案介绍
- 内河航运电动船舶换电运营模式可行性研究
- 2026年监理工程师继续教育试卷附答案
评论
0/150
提交评论