網上有很多關于STM32的SHT1X溫濕度的監測程序,大部分都有問題,也有很多人在咨詢。現在把測試成功的程序和資料分享給大家。希望對大家有幫助。(網友只需要更改SHT1X溫濕度傳感器的SDA和SCL的引腳即可。)
完整源碼:
STM32-SHT1X程序.zip
(386.53 KB, 售價: 3 E幣)
2021-12-16 17:14 上傳
點擊文件名下載附件
售價: 3 E幣 [記錄]
[ 購買]
調試說明:
1.將SHT1X的引腳配置為
SHT1X系列管腳順序:
1-->GND
2-->DATA PC3
3-->SCK PC2
4-->VCC
5-->NC
出現的問題:
1.將LCD屏插上之后,SHT1X無信號采集
原因:LCDZ在初始化是把PC口全部定義啦。
5.jpg (97.18 KB)
下載附件
2021-12-16 17:14 上傳
實驗平臺:ALIENTEK MiniSTM32開發板
實驗圖片:
1.jpg (38.13 KB)
下載附件
2021-12-16 16:58 上傳
2.jpg (45.55 KB)
下載附件
2021-12-16 16:58 上傳
3.jpg (21.22 KB)
下載附件
2021-12-16 16:58 上傳
部分源碼:完整源碼見附件
- //實驗平臺: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)指出,本站將立即改正。
|