⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shtxx_iic.lst

📁 基于AT89C2051的SHT11温湿度传感器嵌入式程序KEIL环境
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -