SHT11温湿度传感器与1602应用代码及仿真.docx
- 文档编号:864814
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:16
- 大小:29.86KB
SHT11温湿度传感器与1602应用代码及仿真.docx
《SHT11温湿度传感器与1602应用代码及仿真.docx》由会员分享,可在线阅读,更多相关《SHT11温湿度传感器与1602应用代码及仿真.docx(16页珍藏版)》请在冰豆网上搜索。
SHT11温湿度传感器与1602应用代码及仿真
C1
1OdF
XTJO
RSI
pOnALBEA
74D
270
辭•IRA
SCk<
5HT11 QATA PO.OZi*iMPO1.^D1PQZ/ACffPQ.^AD^P0.4WD4F05/AD&POOr^AP0.7W? FZ.OW P±.1A=GP2.2ZAK)F2.3W.11FZ4/A1JP2.fi/Alt3: P2.6M14IP2丁闻挣 36- 38; 3b3 近 34i 32^ 莎 Zj 22: ITT RP1;呻F氐曲 P1P1F1P1P1門FP1 P3.WR^O P3.irra> Fj.g/rjwpa.sThTT P3.-4/TOF3.5H1 PMB殛 P97.W EX1> 仿真图形 TEnP: 026.? 5: C HUni: 077.2^RH i■ ine RD.DTACOTO.1/W1 PCI.2/哒 P0.3/她3F0.即糾PO.a/flMPWB/純阳FQ,7/fiC7 U2 P2MB P2.1朋P22/AK)PZ^AHP2.4/A12F2.5/A13RJS/AMIP2.7/A15 2? P1D P1.1 P12 P13 H耳 PW P2 P3.0fR^E> P3.1jTXI>P32/iwT5P3.3iiNfi P3 P3.&T1 P3日殛 P2.7/R& 运行后结果 #ifndef_TOU_H #define__TOU_H__ #include #ineludevintrins.h> 〃#include #defineucharunsignedcharenum{TEMP,HUMI}; sbitDATA=P1A1; sbitSCK=P1A0; sbitRS=P2A0;sbitRW=P2A1;sbitE=P2A2; sfrDBPort=0x80; 〃P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口 /********DS1602 voidLCD_Initial(); 函数声明 ********/ voidGotoXY(unsignedcharx,unsignedchary); voidPrint(unsignedchar*str); voidLCD_Write(bitstyle,unsignedcharinput); /******** SHT10 函数声明 ********/ voids_connectionreset(void); chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode); voidcalc_sth10(float*p_humidity,float*p_temperature); //floatcalc_dewpoint(floath,floatt); #endif *************************************************************************************************** **************************************************** //SHT10程序(SHT10.c): 实用文档 〃#include #definenoACK0 #defineACK1// //继续传输数据,用于判断是否结束通讯结束数据传输; //地址命令读/写 #defineSTATUS_REG_W0x06〃00000110 #defineSTATUS_REG_R0x07〃00000111 #defineMEASURE_TEMP0x03〃00000011 #defineMEASURE_HUMI0x05//00000101 #defineRESET0x1e//00011110 //写字节程序 chars_write_byte(unsignedcharvalue){ unsignedchari,error=0; for(i=0x80;i>0;i>>=1)// { if(i&value)DATA=1;// elseDATA=0; SCK=1; _nop_();_nop_();_nop_();〃 SCK=0; } DATA=1;// SCK=1; error=DATA;// _nop_();_nop_();_nop_(); SCK=0; DATA=1; returnerror;〃error=1 } //读字节程序 chars_read_byte(unsignedcharack) // { unsignedchari,val=0; DATA=1;// for(i=0x80;i>0;i>>=1)// { SCK=1; 高位为1,循环右移 和要发送的数相与,结果为发送的位 延时3us 释放数据线 检查应答信号,确认通讯正常 通讯错误 释放数据线 高位为1,循环右移 if(DATA)val=(val|i);//读一位数据线的值 SCK=0; } DATA=! ack;// SCK=1; _nop_();_nop_();_nop_();// SCK=0; _nop_();_nop_();_nop_(); DATA=1;// returnval; } //启动传输 voids_transstart(void) //generatesatransmissionstart // //DATA: || //______ //SCK: ___||___|| { DATA=1;SCK=0;// _nop_(); SCK=1; _nop_(); DATA=0; _nop_(); SCK=0; _nop_();_nop_();_nop_(); SCK=1; _nop_(); DATA=1; _nop_(); SCK=0; } 如果是校验,读取完后结束通讯; 延时3us 释放数据线 准备 //连接复位 voids_connectionreset(void) //communicationreset: DATA-line=1andatleast9SCKcyclesfollowedbytransstart // //DATA: || //_______________ //SCK: __||__|L_||__|」||__|」||__||||—1| { unsignedchari; DATA=1;SCK=0;//准备 for(i=0;i<9;i++)//DATA保持高,SCK时钟触发9次,发送启动传输,通迅即复位 { SCK=1; SCK=O; 启动传输 启动连接复位 发送复位命令 通讯错误 } s_transstart();// } //软复位程序 chars_softreset(void) //resetsthesensorbyasoftreset { unsignedcharerror=0;s_connectionreset();// error+=s_write_byte(RESET);//returnerror;〃error=1 } /*读状态寄存器 chars_read_statusreg(unsignedchar*p_value,unsignedchar*p_checksum) // //readsthestatusregisterwithchecksum(8-bit) { unsignedcharerror=0; s_transstart();//transmissionstart error=s_write_byte(STATUS_REG_R);//sendcommandtosensor*p_value=s_read_byte(ACK);//readstatusregister(8-bit)*p_checksum=s_read_byte(noACK);//readchecksum(8-bit) returnerror;//error=1incaseofnoresponseformthesensor } //写状态寄存器 chars_write_statusreg(unsignedchar*p_value) //writesthestatusregisterwithchecksum(8-bit) { unsignedcharerror=0; s_transstart();//transmissionstart error+=s_write_byte(STATUS_REG_W);//sendcommandtosensorerror+=s_write_byte(*p_value);//sendvalueofstatusregister returnerror;//error>=1incaseofnoresponseformthesensor }*/ //温湿度测量 chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode) //进行温度或者湿度转换,由参数mode决定转换内容; { //enum{TEMP,HUMI};//已经在头文件中定义 unsignederror=0;unsignedinti; s_transstart();//启动传输 switch(mode)//选择发送命令 { caseTEMP: error+=s_write_byte(MEASURE_TEMP);break;//测量温度 caseHUMI: 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(ACK);// *(p_value+1)=s_read_byte(ACK);// 等待测量结束 如果长时间数据线没有拉低,说明测量错误 读第一个字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SHT11 温湿度 传感器 1602 应用 代码 仿真