|
本设计:8 ^: e% O! x: g4 ?0 I
基于stm32的温湿度采集Proteus仿真(仿真+程序) 仿真图protues 8.9 程序编译器:keil 5 编程语言:C语言 编号:C0041 5 [* A+ R2 U8 `. o4 N: K) d
功能描述: 通过STM32采集DHT11温度传感器的数据,将温湿度信息显示在LCD显示屏上及虚拟串口上。 ( r+ d: I. W7 }2 ^: G
仿真图(源文件): 源程序(提供源文件): 以下为部分程序: - int main(void)" N/ q8 e# Z8 V/ r* W p
- {
$ f G1 Z4 K* d4 h! _* ~ - DHT11_Data_TypeDef DHT11_Data;
: m1 Z, O1 Y+ g# x4 w: W/ J) }4 i# C- G - RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
8 i5 j! y+ D9 z% E& N- ` - /* 配置SysTick 为1us中断一次 *// ]4 J5 B2 x$ ^6 w. Q$ i
- SysTick_Init();
4 o- f' G8 z% x0 R - LED_GPIO_Config();
: y/ w' ?6 u! a ~% g( ?, |- }! M0 K - //LED1_ON;
! R, ?$ F# u8 f* T6 J) z - LED2_ON;/ h. @ q: K( j0 F
- LED3_ON;! W9 u q$ l# x3 ?/ Q% R
- //NVIC_Configuration();
8 @" {9 b# c# e3 c2 t- R - LcdGpioInit();
9 v) z+ J0 Z) R7 m& @8 D5 J6 y - LCD1602Init();
# J! U: g& ]: T. }* z; Q/ i, X# H - USART_Config();//初始化串口1
* Q+ O* R3 \, \3 I# [' x6 u( M - NVIC_Configuration();
y3 g- Q* s. y& [ - printf("\r\n***dht11 温湿度传感器实验***\r\n");
% f, h! X9 ?5 N: S: i - /*初始化DTT11的引脚*/) s/ a0 I3 M0 L6 _
- DHT11_Init();
t0 F7 g0 Q( c0 \% g* C* s - //printf("22\n");
6 y4 e$ i8 S: D5 M# h* E: i( j. S - dht11_delay_ms(10); * V- [6 U- u9 ?0 y
- while(1)4 }3 q) a# B. T: e: I+ K# I4 ]
- {" f: U8 P4 K& I
- //调用DHT11_Read_TempAndHumidity读取温湿度,若成功则输出该信息
[- L+ k8 ^6 X* a5 C$ u7 p - if( DHT11_Read_TempAndHumidity ( & DHT11_Data ) == SUCCESS)2 {* z8 l4 N9 x" V& ]; I1 L0 X5 y
- {+ i; C! I+ w8 n, P
- uint8_t index = 0;
1 U, \2 W' Q/ r( V* k- \: D - char str[20];0 r2 f9 } W+ n" u* F
- printf("\r\n读取DHT11成功!\r\n\r\n湿度为%d.%d %RH ,温度为 %d.%d℃ \r\n", DHT11_Data.humi_int, DHT11_Data.humi_deci, DHT11_Data.temp_int, DHT11_Data.temp_deci);
. @- V! b, L5 W; E4 W* v, J - sprintf(str, "H:%d.%d T:%d.%d", DHT11_Data.humi_int, DHT11_Data.humi_deci, DHT11_Data.temp_int, DHT11_Data.temp_deci);
) S. S$ B# j5 ` O* J7 | - LcdWriteCom(0x80);//设置第一行 数据地址指针0 q" Y6 f4 q$ X/ T \- V
- for(index = 0; index < 20; index++)
( i; \- k5 N4 |, O& |5 J% d1 z) { - LcdWriteDate(str[index]); //写入数据
, c- V& Q& m& \9 z - }
$ o! D; ]2 c0 l6 \1 r9 h - else0 b; I+ I' q! ?3 T `- @
- {5 i& D, ~( u, [& V, g& C0 C
- printf("Read DHT11 ERROR!\r\n");
) K% E9 [6 y( E, h - }
- u: L6 h; u! X - Delay_ms(10);
: T2 e1 a+ P+ j1 s7 a% c# L! C- i! B9 e - }
复制代码
2 @( v9 m9 [" a# P; u- }* ~& F2 P |