找回密码
 注册

QQ登录

只需一步,快速开始

搜索

基于STM32的SHT10/11温湿度监测程序

[复制链接]
coolice 发表于 2021-12-16 17:15:10 | 显示全部楼层 |阅读模式
网上有很多关于STM32的SHT1X温湿度的监测程序,大部分都有问题,也有很多人在咨询。现在把测试成功的程序和资料分享给大家。希望对大家有帮助。(网友只需要更改SHT1X温湿度传感器的SDA和SCL的引脚即可。)
完整源码: STM32-SHT1X程序.zip (386.53 KB, 售价: 3 E币)
调试说明:
1.将SHT1X的引脚配置为
SHT1X系列管脚顺序:
1-->GND
2-->DATA   PC3
3-->SCK    PC2
4-->VCC
5-->NC
出现的问题:
1.将LCD屏插上之后,SHT1X无信号采集
原因:LCDZ在初始化是把PC口全部定义啦。

5.jpg
实验平台:ALIENTEK MiniSTM32开发板
实验图片:
1.jpg 2.jpg 3.jpg
部分源码:完整源码见附件
  1. //实验平台:ALIENTEK Mini STM32开发板
  2. //实验名称:SHT10温湿度传感器显示实验

  3. #include "led.h"
  4. #include "delay.h"
  5. #include "sys.h"
  6. #include "usart.h"
  7. #include "lcd.h"
  8. #include "SHT10.h"

  9. SHT1x sht1x; //定义传感器结构体

  10. int main(void)
  11. {

  12.     u8 t=0,error=0,checksum,value=0;
  13.     volatile u8 T_Display=0,H_Display=0;
  14.     u16 T_Value=0,H_Value=0;

  15.     delay_init(); //延时函数初始化
  16.         uart_init(9600); //USART1初始化
  17.         LED_Init(); //LED初始化
  18.     LCD_Init();   
  19.     SHT1x_Init();
  20.    
  21.     POINT_COLOR=RED;//设置字体为红色
  22.         LCD_ShowString(60,120,200,16,16,"SHT1X Test");

  23.         POINT_COLOR=BLUE;//设置字体为蓝色
  24.          LCD_ShowString(60,150,200,16,16,"Temp:   .   C");        
  25.         LCD_ShowString(60,170,200,16,16,"Humi:   .   %RH");        
  26.    
  27.     if(!SHT1X_read_statusreg(&value))
  28.     {
  29.         if(value&0x07)
  30.         {
  31.             for(value=5;value!=0;value--)
  32.             {
  33.                 if(!SHT1X_write_statusreg(0))break;
  34.                 else SHT1X_softreset();
  35.             }
  36.         }
  37.     }
  38.         while(1)
  39.         {  
  40. //------------------------读取SHT1X传感器数据--------------------------------------
  41.         error+=SHT1x_Measure( &T_Value,&checksum,0);  //measure temperature
  42.         error+=SHT1x_Measure( &H_Value,&checksum,1);  //measure humidity
  43.                         
  44.         if(error!=0)SHT1x_Reset(); //通讯故障,复位传感器
  45.         else
  46.         {
  47.             sht1x.T_Result = T_Value;
  48.             sht1x.H_Result = H_Value;
  49.             SHT1X_Caculation1((float*)&sht1x.T_Result, (float*)&sht1x.H_Result );
  50.            
  51.             sht1x.Temperature=sht1x.T_Result;
  52.             sht1x.Humidity=(u16)sht1x.H_Result;
  53.             sht1x.DEW=SHT1X_dewpoint1(sht1x.T_Result, sht1x.H_Result);
  54.         }
  55. //------------------------------------------------------------------------------
  56.         

  57. //显示函数处理         
  58. //-------------------温度显示-------------------------------------------------
  59.       
  60.         if(sht1x.Temperature<0)
  61.         {
  62.             LCD_ShowChar(60+40,150,'-',16,0);                        //显示负号
  63.             sht1x.Temperature=-sht1x.Temperature;    //转为正数
  64.         }
  65.         else LCD_ShowChar(60+40,150,' ',16,0);  //去掉负号
  66.         
  67.         LCD_ShowNum(60+40+8,150,sht1x.Temperature/100,2,16);        //显示正数部分        
  68.         if((sht1x.Temperature%100)>=0 && (sht1x.Temperature%100)<=9 )
  69.         {
  70.             LCD_ShowNum(60+40+32,150,sht1x.Temperature%100,1,16);        //显示小数部分         
  71.         }
  72.         else
  73.         {
  74.             LCD_ShowNum(60+40+32,150,sht1x.Temperature%100,2,16);        //显示小数部分         
  75.         }
  76.         
  77. //-------------------------湿度显示-----------------------------------------------
  78.         LCD_ShowNum(60+40+8,170,sht1x.Humidity/100,2,16);        //显示正数部分            
  79.         if((sht1x.Humidity%100)>=0 && (sht1x.Humidity%100)<=9 )
  80.         {
  81.             LCD_ShowNum(60+40+32,170,sht1x.Humidity%100,1,16);        //显示小数部分         
  82.         }
  83.         else
  84.         {
  85.             LCD_ShowNum(60+40+32,170,sht1x.Humidity%100,2,16);        //显示小数部分         
  86.         }
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|ELEOK |网站地图

GMT+8, 2024-7-26 00:40

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表