AHT10溫濕度感測器讀取例程 51微控制器

2021-10-03 07:50:09 字數 2388 閱讀 7222

aht10溫濕度感測器讀取例程(51微控制器)

所需材料:名稱

個數aht10溫濕度感測器

151微控制器

1連線線纜

若干概述:

aht10溫濕度感測器是以i2c為介面傳送資料的器件,所以我們編寫程式時是以i2c協議為主,這裡我們使用軟體模擬的方法來實現i2c通訊。

器件簡介:

aht10 配有乙個全新設計的 asic專用晶元、乙個經過改進的mems半導體電容式濕度感測元件和乙個標準的片上溫度感測元件,其效能已經大大提公升甚至超出了前一代感測器的可靠性水平,新一代溫濕度感測器,經過改進使其在惡劣環境下的效能更穩定。

**:

#define aht10addwr 0x70

//aht10寫資料位址

#define aht10addrd 0x71

//aht10讀資料位址

void

aht10init()

//aht10初始化

void

aht10_init()

//初始化}}

}void

aht10_rst()

//軟復位

void

aht10_mea()

//觸發測量

unsigned char

aht10_status()

//讀取aht10狀態暫存器

unsigned char

aht10_calen()

//判斷aht10校準使能

void

aht11_read_data

(unsigned long

*ct)

//接收濕度溫度資料

}start_i2c()

;sendbyte

(aht10addrd)

; byte_1th =

rcvbyte()

;//狀態資料

ack_i2c()

;//應答

byte_2th =

rcvbyte()

;//濕度資料

ack_i2c()

; byte_3th =

rcvbyte()

;//濕度資料

ack_i2c()

; byte_4th =

rcvbyte()

;//高4位為濕度 低4位為溫度

ack_i2c()

; byte_5th =

rcvbyte()

;//溫度資料

ack_i2c()

; byte_6th =

rcvbyte()

;//溫度資料

noack_i2c()

;stop_i2c()

; retudata =0;

//原始濕度資料合成

retudata =

(byte_2th<<8)

|byte_3th;

retudata =

((retudata<<8)

|byte_4th)

>>4;

retudata = retudata &

0x000fffff

; ct[0]

= retudata;

retudata =0;

//原始溫度資料合成

retudata =

((byte_4th %16)

<<8)

|byte_5th;

retudata =

(retudata<<8)

|byte_6th;

retudata = retudata &

0x000fffff

; ct[1]

= retudata;

}

注:

1.在程式設計時先呼叫初始化函式,在呼叫讀取資料函式。

2.在讀取到原始資料後,我們還需要對原始資料進行計算,算出所對應的 溫度值和濕度值

計算溫濕度公式:

h1 =

(dt[0]

*1000

/1024

/1024);

//計算濕度

t1 =

(dt[1]

*200*10

/1024

/1024

-500);

//計算溫度

1.aht10資料手冊

ps:筆者水平有限,如有紕漏或不足之處歡迎指正

AHT10 溫濕度感測器

aht10 標頭檔案 ifndef i2c ath10 h define i2c ath10 h include c types.h void delayms u32 ms void aht10init void aht10 rst unsigned char aht10 status unsign...

溫濕度感測器採集

軟體 keil firetool助手 硬體 stm32核心板,溫濕度感測器,st link燒錄器,ttl轉usb模組 首先保證程式編譯通過,電腦連線stm32核心板 核心板連線溫濕度感測器 st link燒錄器 ttl轉usb模組 預設電腦已安裝st link驅動 設定keil相關引數,參考 最後燒...

溫濕度感測器採集

硬體i2c 對應晶元上的i2c外設,有相應的i2c驅動電路,其所使用的i2c管腳也是專用的,因而效率要遠高於軟體模擬的i2c 一般也較為穩定,但是程式較為繁瑣。硬體i2c是直接呼叫內部暫存器進行配置 而軟體i2c是沒有暫存器這個概念的。軟體i2c 一般是使用gpio管腳,用軟體控制scl,sda線輸...