




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于51单片机SHT1膈湿度传感器检测程 序(含电路图)卜面是原理图:J,2占 占.¥后了ALE.na,T.fii.3i«:> - F FUHInlnJFIIH-lwr川sluESJfQEKKK卜面是SHT11与MC旌接的典型电路:卜面是源代码:#include <reg52.h>#include <intrins.h>/*宏定义*/ #define uint unsigned int#define uchar unsigned char#define noACK 0#define ACK 1#define STATUS_REG_W 0x06#
2、define STATUS_REG_R 0x07#define MEASURE_TEMP 0x03#define MEASURE_HUMI 0x05#define RESET 0x1e enum?TEMP,HUMI;typedef?union? 定义共用同类型unsigned?int?i;float?f; value;I*?位定义*/ sbit lcdrs=P2A0;sbit lcdrw=P2A1;sbit lcden=P2A2;sbit SCK = P1A0;sbit DATA = PW1;/*变量定义*/uchar table2="SHT11温湿度检测”;uchar table3
3、=uchar table4=uchar table5=IIIIII II.温度为:湿度为:C"II.uchar wendu6;uchar shidu6;/*1ms延时函数*/ void?delay(int?z)(int?x,y;for(x=z;x>0;x-)for(y=125;y>0;y-);)/*50us延时函数*/ void?delay_50us(uint t)(uint j;for(;t>0;t-)for(j=19;j>0;j-);)/*50ms延时函数*/ void?delay_50ms(uint t)(.uint j;for(;t>0;t-)f
4、or(j=6245;j>0;j-);/*12864液晶写指令*/ void?write_12864com(uchar com)(.lcdrs=0;delay_50us(1);P0=com;lcden=1;delay_50us(10);lcden=0;delay_50us(2);/*12864液晶写数据*/void?write_dat(uchar dat)(.lcdrs=1;lcdrw=0;delay_50us(1);P0=dat;lcden=1;delay_50us(10);lcden=0;delay_50us(2);.I*12864液晶初始化*/ void?init12864lcd(v
5、oid)(delay_50ms(2);write_12864com(0x30);delay_50us(4);write_12864com(0x30);delay_50us(4);write_12864com(0x0f);delay_50us(4);write_12864com(0x01);delay_50us(240);write_12864com(0x06);delay_50us(10);write_12864com(0x0c);delay_50us(10);.I*12864液晶显示函数*/ void?display1(void)(uchar i;write_12864com(0x80);f
6、or(i=0;i<18;i+)(write_dat(table2i);delay_50us(1);/*12864液晶显示函数*/ void?display2(void)(uchar i;write_12864com(0x90);for(i=0;i<18;i+)(write_dat(table3i);delay_50us(1);./* 12864液晶显示函数*/ void?display3(void)(uchar i;write_12864com(0x88);for(i=0;i<8;i+)(write_dat(table4i);delay_50us(1);./*12864液晶显
7、示函数*/void?displaywendu(void)(uchar i;write_12864com(0x94);for(i=0;i<3;i+)(write_dat(wendui);delay_50us(1);.for(i=0;i<1;i+)(write_dat(table5i);delay_50us(1);for(i=4;i<5;i+)(write_dat(wendui);delay_50us(1);./*12864液晶显示函数*/ void?displayshidu(void)(uchar i;write_12864com(0x8C);for(i=0;i<3;i+
8、)(write_dat(shidui);delay_50us(1);.for(i=0;i<1;i+)(write_dat(table5i);delay_50us(1);.for(i=4;i<5;i+)(write_dat(shidui);delay_50us(1);)I*SHT11写字节程序*/char?s_write_byte(unsigned?char?value)(unsigned?char?i,error=0;for?(i=0x80;i>0;i>>=1)?/ 高位为 1,循环右移(if?(i&value) DATA=1;?/和要发送的数相与,结果为
9、发送的位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通讯错误)/*SHT11读字节程序*/char?s_read_byte(unsigned?char?ack)( 一 一unsigned?char?i,val=0;DATA=1;?/释放数据线for(i=0x80;i>0;i>>=1)?/ 高位为 1
10、,循环右移(SCK=1;if(DATA) val=(val|i);?/读一位数据线的值SCK=0;)DATA=!ack;?SCK=1;_nop_();_nop_();_nop_();?/ 延时 3usSCK=0;_nop_();_nop_();_nop_();DATA=1;?/释放数据线 return?val;)I*SHT11启动传输*/ void?s_transstart(void)(.DATA=1; SCK=0;?/ 准备_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA
11、=1;_nop_();SCK=0;/*SHT11连接复位*/ void?s_connectionreset(void)(.unsigned?char?i;DATA=1; SCK=0;?/ 准备for(i=0;i<9;i+)?/DATA保持高,SCK寸钟触发9次,发送启动传输,通迅即复位(SCK=1;SCK=0;s_transstart();?/ 启动传输/*SHT11温湿度检测*/char?s_measure(unsigned?char?*p_value, unsigned?char?*p_checksum, unsigned?charmode)(unsigned error=0;uns
12、igned?int?i;s_transstart();?/ 启动传输switch(mode)?/选择发送命令(case?TEMP : error+=s_write_byte(MEASURE_TEMP);?break;? 测量温度 case?HUMI : error+=s_write_byte(MEASURE_HUMI);?break;?/测量湿度default?:?break;for?(i=0;i<65535;i+)?if(DATA=0)?break;?等待测量结束if(DATA) error+=1;?/如果长时间数据线没有拉低,说明测量错误*(p_value) =s_read_byte
13、(ACK);?/读第一个字节,高字节(MSB)*(P_value+1)=s_read_byte(ACK);?/ 读第二个字节,低字节(LSB)*p_checksum =s_read_byte(noACK);?/read CRC 校验码 return?error;?/ error=1 通讯错误/*SHT11温湿度值标度变换及温度补偿*/void?calc_sth10(float?*p_humidity ,float?*p_temperature)(一const?float?C1=-4.0;? 12位湿度精度 修正公式const?float?C2=+0.0405;? 12位湿度精度修正公式cons
14、t?float?C3=-0.0000028;? 12位湿度精度修正公式const?float?T1=+0.01;?/ 14位温度精度5V条件 修正公式const?float?T2=+0.00008;?/ 14 位温度精度5V条件 修正公式 float?rh=*p_humidity;?/ rh: 12 位湿度 float?t=*p_temperature;?/ t: 14位温度float?rh_lin;?/ rh_lin:湿度 linear 值float?rh_true;?/ rh_true:湿度 ture 值float?t_C;?/ t_C :温度 Ct_C=t*0.01 - 40;?/补偿温
15、度rh_lin=C3*rh*rh + C2*rh + C1;?/相对湿度非线性补偿rh_true=(t_C-25)*(T1+T2*rh)+rh_lin;?/相对湿度对于温度依赖性补偿if(rh_true>100)rh_true=100;?/湿度最大修正if(rh_true<0.1)rh_true=0.1;?/湿度最小修正*p_temperature=t_C;?/返回温度结果*p_humidity=rh_true;?/返回湿度结果/*?主函数*/void?main(void) (unsigned?int?temp,humi;value humi_val,temp_val;?/定义两个
16、共同体,一个用于湿度,一个用于温度unsigned?char?error;?/ 用于检验是否出现错误unsigned?char?checksum;?/CRCinit12864lcd();display1();display2();display3();s_connectionreset();?/ 启动连接复位while(1)温度测湿度测error=0;?/ 初始化error=0 ,即没有错误error+=s_measure(unsigned?char*)&temp_val.i,&checksum,TEMP);?/县 里error+=s_measure(unsigned?char
17、*)&humi_val.i,&checksum,HUMI);?如果发生错误,系统复位鼻 单if(error!=0) s_connectionreset();?/else转换为浮点数转换为浮点数修正相对湿度及温度humi_val.f=(float)humi_val.i;?/temp_val.f=(float)temp_val.i;?/calc_sth10(&humi_val.f,&temp_val.f);?/temp=temp_val.f*10;humi=humi_val.f*10;wendu0=temp/1000+'0'?/温度百位wendu1=temp%1000/100+'0'?/温度十位?wendu2=temp%100/10+'0'?/ 温度个位wendu3=0x2E;? 小数点wen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际产品授权分销合同
- 办公家具采购合同一
- 商品买卖合同「样本」
- 商业地产买卖合同模板范文
- 公司设立投资合作合同范本
- 矿山弃渣处理合同范本
- 消防及安全整改合同履行细则
- 校企合作合同新范本
- 土地使用权出让合同及物业销售细则
- 趸船结构培训课件
- 2025年黑龙江民族职业学院单招职业技能测试题库附答案
- 年产60万吨掺混肥项目可行性研究报告申请立项
- 2025年茂名市高三年级第一次综合测试(一模)物理试卷(含答案)
- 《电子商务法律法规》电子商务专业全套教学课件
- 《产后出血预防与处理指南(2023)》解读课件
- 全套教学课件《工程伦理学》
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- 2024年山东经贸职业学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 清华大学考生自述
- GB 29444-2012煤炭井工开采单位产品能源消耗限额
- 幼儿园中班绘本:《我喜欢我的小毯子》
评论
0/150
提交评论