网上有很多关于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口全部定义啦。
实验平台:ALIENTEK MiniSTM32开发板
实验图片:
部分源码:完整源码见附件
- //实验平台:ALIENTEK Mini STM32开发板
- //实验名称:SHT10温湿度传感器显示实验
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "lcd.h"
- #include "SHT10.h"
- SHT1x sht1x; //定义传感器结构体
- int main(void)
- {
- u8 t=0,error=0,checksum,value=0;
- volatile u8 T_Display=0,H_Display=0;
- u16 T_Value=0,H_Value=0;
- delay_init(); //延时函数初始化
- uart_init(9600); //USART1初始化
- LED_Init(); //LED初始化
- LCD_Init();
- SHT1x_Init();
-
- POINT_COLOR=RED;//设置字体为红色
- LCD_ShowString(60,120,200,16,16,"SHT1X Test");
- POINT_COLOR=BLUE;//设置字体为蓝色
- LCD_ShowString(60,150,200,16,16,"Temp: . C");
- LCD_ShowString(60,170,200,16,16,"Humi: . %RH");
-
- if(!SHT1X_read_statusreg(&value))
- {
- if(value&0x07)
- {
- for(value=5;value!=0;value--)
- {
- if(!SHT1X_write_statusreg(0))break;
- else SHT1X_softreset();
- }
- }
- }
- while(1)
- {
- //------------------------读取SHT1X传感器数据--------------------------------------
- error+=SHT1x_Measure( &T_Value,&checksum,0); //measure temperature
- error+=SHT1x_Measure( &H_Value,&checksum,1); //measure humidity
-
- if(error!=0)SHT1x_Reset(); //通讯故障,复位传感器
- else
- {
- sht1x.T_Result = T_Value;
- sht1x.H_Result = H_Value;
- SHT1X_Caculation1((float*)&sht1x.T_Result, (float*)&sht1x.H_Result );
-
- sht1x.Temperature=sht1x.T_Result;
- sht1x.Humidity=(u16)sht1x.H_Result;
- sht1x.DEW=SHT1X_dewpoint1(sht1x.T_Result, sht1x.H_Result);
- }
- //------------------------------------------------------------------------------
-
- //显示函数处理
- //-------------------温度显示-------------------------------------------------
-
- if(sht1x.Temperature<0)
- {
- LCD_ShowChar(60+40,150,'-',16,0); //显示负号
- sht1x.Temperature=-sht1x.Temperature; //转为正数
- }
- else LCD_ShowChar(60+40,150,' ',16,0); //去掉负号
-
- LCD_ShowNum(60+40+8,150,sht1x.Temperature/100,2,16); //显示正数部分
- if((sht1x.Temperature%100)>=0 && (sht1x.Temperature%100)<=9 )
- {
- LCD_ShowNum(60+40+32,150,sht1x.Temperature%100,1,16); //显示小数部分
- }
- else
- {
- LCD_ShowNum(60+40+32,150,sht1x.Temperature%100,2,16); //显示小数部分
- }
-
- //-------------------------湿度显示-----------------------------------------------
- LCD_ShowNum(60+40+8,170,sht1x.Humidity/100,2,16); //显示正数部分
- if((sht1x.Humidity%100)>=0 && (sht1x.Humidity%100)<=9 )
- {
- LCD_ShowNum(60+40+32,170,sht1x.Humidity%100,1,16); //显示小数部分
- }
- else
- {
- LCD_ShowNum(60+40+32,170,sht1x.Humidity%100,2,16); //显示小数部分
- }
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|
|