📄 shtxx_iic.lst
字号:
149 {
150 1 unsigned char initdat;
151 1 initdat=0x06;//写状态寄存器命令
152 1 iic_start();//启动I2C
153 1 IICSendByte(initdat);//发送命令
154 1 // slave_ACK();//给SHTXX应答位
155 1 check_ACK();
156 1 if(F0==0)
157 1 {// initdat=0x00;//14bit(温度)、12bit(湿度)
158 2 initdat=0x01;//12bit(温度)、8bit(湿度)
159 2 IICSendByte(initdat);//发送状态字
160 2 //slave_ACK();//给SHTXX应答位
161 2 check_ACK();
162 2 }
163 1 }
164 //--------------------------------------------------------------------------------------------------
165 // 函数名称: ReadStatus
166 // 返回接收的数据
167 // 函数功能: 读状态寄存器
168 //--------------------------------------------------------------------------------------------------
169 /*unsigned char ReadStatus(void)
170 {
171 unsigned char rdata;
172 rdata=0x07;//读状态寄存器命令
173 iic_start();//启动I2C
174 IICSendByte(rdata);//发送命令
175 slave_ACK();//给SHTXX应答位
176 rdata=IICreceiveByte();//接收状态字
177 slave_NOACK();//给SHTXX非应答位,结束读命令
178 return(rdata);
179 }*/
C51 COMPILER V7.00 SHTXX_IIC 10/10/2007 14:42:10 PAGE 4
180 //--------------------------------------------------------------------------------------------------
181 // 函数名称: MeasureTem
182 // 函数功能: 测量温度,调用后应延迟
183 //--------------------------------------------------------------------------------------------------
184 void MeasureTem(void)
185 {
186 1 unsigned char initdat;
187 1 initdat=0x03;//测量温度命令
188 1 iic_start();//启动I2C
189 1 IICSendByte(initdat);//发送命令
190 1 check_ACK();
191 1 /* TH0=0X28;
192 1 TL0=0X00;//11.0592MHz 60mS
193 1 TR0=1;*/
194 1 }
195 //--------------------------------------------------------------------------------------------------
196 // 函数名称: MeasureHum
197 // 函数功能: 测量湿度,调用后应延迟
198 //--------------------------------------------------------------------------------------------------
199 void MeasureHum(void)
200 {
201 1 unsigned char initdat;
202 1 initdat=0x05;//测量湿度命令
203 1 iic_start();//启动I2C
204 1 IICSendByte(initdat);//发送命令
205 1 check_ACK();
206 1 /* TH0=0Xca;
207 1 TL0=0X00;//11.0592MHz 15mS
208 1 TR0=1;*/
209 1 }
210 //--------------------------------------------------------------------------------------------------
211 // 函数名称: SoftReset
212 // 函数功能: 软复位,复位接口、清空状态寄存器, ,即清空为默认值,调用后应延迟11mS
213 //--------------------------------------------------------------------------------------------------
214 /*void SoftReset(void)
215 {
216 unsigned char initdat;
217 initdat=0x1E;//软复位命令
218 iic_start();//启动I2C
219 IICSendByte(initdat);//发送命令
220 /* TH0=0Xca;
221 TL0=0X00;//11.0592MHz 15mS
222 TR0=1;*/
223 //}
224 //--------------------------------------------------------------------------------------------------
225
226
227 //--------------------------------------------------------------------------------------------------
228 // 函数名称: ReadData
229 // 返回接收的数据
230 // 函数功能: 读测量数据
231 //--------------------------------------------------------------------------------------------------
232 int ReadData(void)
233 {
234 1 int rdata;//int *p;
235 1 unsigned char dd[2];
236 1 while(SDA==1);//等待转换结束
237 1 dd[0]=IICreceiveByte();//接收状态字
238 1 slave_ACK();//给SHTXX应答位
239 1 dd[1]=IICreceiveByte();//接收状态字
240 1 slave_NOACK();//给SHTXX非应答位,结束读命令
241 1 // p=dd;
C51 COMPILER V7.00 SHTXX_IIC 10/10/2007 14:42:10 PAGE 5
242 1 // rdata=*p;
243 1 rdata=(dd[0]<<8)+dd[1];
244 1 // rdata=dd[0]*256+dd[1];
245 1 return(rdata);
246 1 }
247 //--------------------------------------------------------------------------------------------------
248 // 函数名称: CalculateTem
249 // 返回计算后的温度数据
250 // 函数功能: 计算温度值
251 //--------------------------------------------------------------------------------------------------
252 float CalculateTem(void)
253 {
254 1 float rdata;int rdat;
255 1 // uchar *p;
256 1 float temp;
257 1 rdat=ReadData();
258 1 /* p=&rdat;
259 1 *p=*p&0x0f;//12bit模式,清除高4位
260 1 //*p=*p&0x3f;//14bit模式,清除高2位
261 1 */ rdat=rdat&0x0fff;
262 1 rdata=rdat;
263 1 temp=0.04*rdata-40;//12bit温度公式
264 1 //temp=0.01*rdata-40;//14bit温度公式
265 1 return(temp);
266 1 }
267 //--------------------------------------------------------------------------------------------------
268 // 函数名称: CalculateHum
269 // 返回计算后的湿度数据
270 // 函数功能: 计算湿度值
271 //--------------------------------------------------------------------------------------------------
272 float CalculateHum(void)
273 {
274 1 float rdata;int rdat;
275 1 // uchar *p;
276 1 float hump;
277 1 rdat=ReadData();
278 1 /* p=&rdat;
279 1 *p=*p&0x00;//8bit模式,清除高8位
280 1 //*p=*p&0x0f;//12bit模式,清除高4位
281 1 */ rdat=rdat&0x0ff;
282 1 rdata=rdat;
283 1 hump=0.648*rdata-rdata*rdata*0.00072-4;//8bit湿度公式
284 1 //temp=0.0405*rdata-rdata*rdata*0.0000028-4;//12bit湿度公式
285 1 return hump;
286 1 }
287 //--------------------------------------------------------------------------------------------------
288
289
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 333 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 10
IDATA SIZE = ---- 2
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -