sht10和PI单片机程序.docVIP

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
sht10和PI单片机程序.doc

#include pic.h #include math.h #define DATA RC7 //定义通讯数据端口 #define DATA_IO TRISC7 //用于设置 10 状态 #define SCK RC6 //定义通讯吋钟端口 #define noACK 0 //继续传输数据,用于判断是否结束通讯 #define ACK 1 //结束数据传输; //地址命令 #define MEASURE_TEMP 0x03 //000 00011 #define MEASURE_HUMI 0x05 //000 00101 void init_uart(void); void s_connectionreset(void); void s_transstart(void); char s_measure(unsigned char *p_value,unsigned char *p_checksum, unsigned char mode); char s_write_byte(unsigned char value); char s_read_byte(unsigned char ack); void calc_sth11 (float *p_humidity ,float *p_temperature); float calc_dewpoint(float h,float t); void delay (unsigned int time); union { unsigned int i; float f; }humi_val,temp_val; //定义两个共同体,一个用于湿度,一个用于温度 ****************************************************************************** 延时1MS带参数(int)子程序 void delay (unsigned int time){ unsigned int a,b; for(a=0;atime;a++){ for(b=0;b88;b++); } } // void initjjart(void) // //端门初始化 TRISC7=0; TRISC6=0; } // void s_connectionreset(void) // //连接复位; // I I.准各//DATA保持高,SCK吋钟触发 I I. 准各 //DATA保持高,SCK吋钟触发9次,发送启动传输,通迅即W位 //扁动传输 // _ _ _ // SCK : _| |_| { unsigned char i; DATA=1; SCK=0; for(i=0;i9;i++) { SCK=1; SCK=0; } s_transstart(); // void s_transstart(void) // //启动传输 // // 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; // char s_measure(unsigned char *p_value,unsigned char *p_checksum, unsigned char mode) // //进行温度或者湿度转换,由参数mode决定转换内容; { unsigned error=0; unsigned char i; s_transstart(); //启动传输 switch(mode){ case 02 : error+=s write byte(MEASURE TEMP); break; case 01 : error+=s_write_byte(MEASURE_HUMI); break; default : break; } for (i=0;i110;i++){ delay(2); if(DATA==0) break; //等待测最结朿; } if(DATA) error+=1; //如果长吋间数据线没有拉低,说明测量错误 *(p_value) =s_read_byte(ACK); //读第?一个字节,商字节(MSB) *(p_value+1 )=s_read_byte(ACK); //读第二个字节,低字节(LSB) *p_checksum =s_read_byte(noACK); //read CRC 校验码 return error; } // char s_write_byte(unsigned ch

您可能关注的文档

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档