DHL11
- L; A2 T) I6 V" S) c1.引脚
' Q6 x n) f/ D XPA7->接HDQ
- R( l7 }$ r# T# C
+ z6 F) p* C, O3 f6 G' q) U/ |2.Cubemx实现的配置
" a, o' @& u% L4 M9 I, c4 u+ [
, M8 ^: k1 O9 H
0 O1 G, D( P( j3 C4 V0 H" G
# ]& C' H. O) Z" J6 v, M
3.生成工程
0 k+ M& j6 j; U1.DHT11读取函数
4 Z9 q4 q- Y0 V0 a! |9 ^- uint8_t DHT11_Read_Data(uint8_t *temp, uint8_t *humi)! {/ S- B$ X! @( ^) p) O' ~0 r
- {
& [7 b' s) G ]! w" ~7 f - uint8_t buf[5];
7 e9 x' }9 i1 m - uint8_t i;- T R) q8 d- G
- DHT11_Rst();
- q8 k3 D- `& c4 u2 F8 z - if(DHT11_Check() == 0)5 @( X) J0 w, D
- {
5 @8 }% q9 T4 ]) w& X% B9 O - for(i = 0; i < 5; i++)
4 e9 `( N( [7 k, @( u* W - {4 O; B3 A* o) e% o* O. i( R& @
- buf<i> = DHT11_Read_Byte();) P4 p& x9 m; }
- }. s6 R8 B. |/ Q9 m
- if((buf[0] + buf[1] + buf[2] + buf[3]) == buf[4])
2 V* I" ~( ]; b. _) L. X! C - {) s, v8 |; j0 ]
- *humi = buf[0];+ \, l8 Q6 z4 j) Q+ s
- *temp = buf[2];/ f1 x* e' o5 H4 D4 [
- }+ Y' L* a7 r, y4 e" W: B
- }& `, z: ~, C2 ~& p' E. v. h
- else return 1;
5 ^1 A# S+ P+ |8 J3 U! e7 y& r7 _ - return 0;; ]' \5 d3 ^. w' _1 q; H
- }</i>
复制代码
; p1 n+ ^5 a$ b6 X3 @5 \- h2.DHT11读取测试
! ?; e3 a, ], k# @* h( u
! G2 m( [& j9 ~5 C. I& j8 a
# h9 ^3 q3 d$ B/ Y+ [, H
% d8 T; M/ ~ L5 r& m5 K, @" X- while(DHT11_Init()) //DHT11初始化
: q! M6 U F+ y - {6 K; z- Y, A6 |$ j* S
- LCD_DisplayStringLine(Line5, (uint8_t *)"DHT11 Error ");
0 B. o8 `& F; f' k - HAL_Delay(200);
7 j2 i1 {+ b* p" P c, I - }, O- X+ Z) U F6 P4 F
- LCD_DisplayStringLine(Line5, (uint8_t *)"DHT11 OK ");
) Y& P. J' Z. z: J$ c5 F2 X! n - HAL_Delay(1200);
复制代码- DHT11_Read_Data(&temperature_high, &humidity_high); //读取温湿度值
y7 y9 x9 S( c& W' M. |# q& O0 K2 j - sprintf((char *)arr, "Moisture:%2d%%",humidity_high);. E& L; f" N( g( J+ Z/ G4 g @
- LCD_DisplayStringLine(Line6,arr);
. O. {& z1 p4 R4 Q8 _" F+ D) ?' T - sprintf((char *)arr, "Temperature:%2d",temperature_high);
( F. _6 n8 D* P3 w; |" Z* J* O8 W - LCD_DisplayStringLine(Line8,arr);: @" s: S: |1 g" [
复制代码
C x \( A& l6 x
! C8 c+ W$ z4 c6 g) q; C Y |