STM32+SHT11测温湿度,输出显示0

2019-07-14 22:33发布

STM32+SHT11测温湿度,输出显示0,SHT11在ARDUINO上测试正常,附上程序,求指点:
PC9接date,PC8接SCK;
  1. #include "delay.h"
  2. #include "timer.h"
  3. #include "usart.h"
  4. #include "sys.h"
  5. #include "adc.h"
  6. #include "sht10.h"
  7. #include "lcd12864.h"
  8. #include "usart2.h"

  9. u8 t,TL,cnt=0;
  10. u16 TH,Speed;;
  11. u8 usart2buf[60];
  12. u16 dis_temp = 0;
  13. u16 dis_humi = 0;
  14. u16 humi_val, temp_val;
  15. u8 err = 0, checksum = 0;

  16. float humi_val_real = 0.0;        
  17. float temp_val_real = 0.0;

  18. u8 temp[2],humi[2];


  19. int main(void)
  20. {         
  21.         delay_init();
  22.         LCD12864_InitPort();
  23.         LCD12864_Init();
  24.         NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  25.         uart_init(9600);                 //串口初始化为9600
  26.         USART2_Init(9600);       //串口2初始化为9600
  27.         SHT10_GPIO_Config();
  28.         Adc_Init();
  29.        
  30.         LCD_ShowString(3,0,"环境污染检测系统");
  31.         USART2_Send_Data(r_dat1,6);
  32.         delay_ms(5000);
  33.         LCD12864_Clr();
  34.         TIM3_Int_Init(1,2880);//25000 hz的计数频率,0.08ms 1 2880
  35.         while(1)       
  36.         {       

  37.                 err += SHT10_Measure(&temp_val, &checksum, TEMP);                  //获取温度测量值               
  38.                 err += SHT10_Measure(&humi_val, &checksum, HUMI);                  //获取湿度测量值               
  39.                 if(err != 0)                       
  40.                 SHT10_ConReset();               
  41.                 else               
  42.                 {                       
  43.                         SHT10_Calculate(temp_val, humi_val, &temp_val_real, &humi_val_real); //计算实际的温湿度值
  44.                         dis_temp = (u16)(temp_val_real*100);
  45.                         dis_humi = (u16)(humi_val_real*100);
  46.                 }
  47.                
  48.                
  49.                 LCD_ShowString(3,0,"Temp");
  50.                 temp[0] = dis_temp/1000+48;
  51.                 temp[1] = dis_temp%1000/100+48;
  52.                 LCD12684_Wcmd(0x8a);
  53.                 LCD12684_Wdat(':');
  54.                 LCD12684_Wdat(temp[0]);
  55.                 LCD12684_Wdat(temp[1]);
  56.                
  57.                 LCD_ShowString(3,4,"Humi");
  58.                 humi[0] = dis_humi/1000+48;
  59.                 humi[1] = dis_humi%1000/100+48;
  60.                 LCD12684_Wcmd(0x8e);
  61.                 LCD12684_Wdat(':');
  62.                 LCD12684_Wdat(humi[0]);
  63.                 LCD12684_Wdat(humi[1]);
  64.                
  65.                 USART2_Send_Data(r_dat,8);
  66.                 delay_ms(1500);
  67.                
  68.                 USART2_Receive_Data(usart2buf,&cnt);
  69.                 TH = usart2buf[3];
  70.                 TL = usart2buf[4];
  71.                 TH = (TH<<8)+TL;
  72.        
  73.                 for(t=0;t<cnt;t++)
  74.                   {
  75.                           USART_SendData(USART1, usart2buf[t]);//向串口1发送数据
  76.                           while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
  77.                 }

  78.                 printf("温度:%2.2f℃,湿度:%2.2f%% ",temp_val_real,humi_val_real);
  79.         }
  80. }


复制代码
第一次接手STM32,程序看着没问题,可就是显示0,求指点
20150520_205747.jpg 20150520_205733.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。