基于STM32温湿度检测—串口显示
基于STM32温湿度检测
(仿真+程序)
功能介绍
具体功能:
1.使用DHT11检测温湿度;
2.单片机处理完控制LCD1602显示温湿度;
3.单片机也通过串口显示检测到的温湿度;
添加图片注释,不超过 140 字(可选)
程序
#include "stm32f10x.h"
#include "./systick/bsp_SysTick.h"
#include "./dht11/bsp_dht11.h"
#include "./usart/bsp_usart.h"
#include "./Key/bsp_key.h"
#include "./Led/bsp_led.h"
#include "./LCD/bsp_lcd.h"
#include "./MOTOR/motor.h"
#include "./Tim2/TIM2.h"
#include "./Wave/UltrasonicWave.h"
/*** @brief 主函数* @param 无* @retval 无*/
int main(void)
{DHT11_Data_TypeDef DHT11_Data;RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);/* 配置SysTick 为1us中断一次 */SysTick_Init();LED_GPIO_Config();//LED1_ON;LED2_ON;LED3_ON;//NVIC_Configuration();LcdGpioInit();LCD1602Init();USART_Config();//初始化串口1NVIC_Configuration();printf("\r\n***dht11 温湿度传感器实验***\r\n");/*初始化DTT11的引脚*/DHT11_Init();//printf("22\n");dht11_delay_ms(10);while(1){//调用DHT11_Read_TempAndHumidity读取温湿度,若成功则输出该信息if( DHT11_Read_TempAndHumidity ( & DHT11_Data ) == SUCCESS){uint8_t index = 0;char str[20];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);sprintf(str, "H:%d.%d T:%d.%d", DHT11_Data.humi_int, DHT11_Data.humi_deci, DHT11_Data.temp_int, DHT11_Data.temp_deci);LcdWriteCom(0x80);//设置第一行 数据地址指针for(index = 0; index < 20; index++)LcdWriteDate(str[index]); //写入数据}else{printf("Read DHT11 ERROR!\r\n");}Delay_ms(10);}********//完整资料
********//微信公众号:木子单片机}
/*********************************************END OF FILE**********************/
/********************************************************************************* @file bsp_key.c* @author fire* @version V1.0* @date 2013-xx-xx* @brief 按键应用bsp(扫描模式)******************************************************************************* @attention********************************************************************************/ #include "./key/bsp_key.h" /*** @brief 配置按键用到的I/O口* @param 无* @retval 无*/
void Key_GPIO_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;/*开启按键端口的时钟*/RCC_APB2PeriphClockCmd(KEY1_GPIO_CLK|KEY2_GPIO_CLK,ENABLE);//选择按键的引脚GPIO_InitStructure.GPIO_Pin = KEY1_GPIO_PIN; // 设置按键的引脚为浮空输入GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //使用结构体初始化按键GPIO_Init(KEY1_GPIO_PORT, &GPIO_InitStructure);//选择按键的引脚GPIO_InitStructure.GPIO_Pin = KEY2_GPIO_PIN; //设置按键的引脚为浮空输入GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //使用结构体初始化按键GPIO_Init(KEY2_GPIO_PORT, &GPIO_InitStructure);
}/** 函数名:Key_Scan* 描述 :检测是否有按键按下* 输入 :GPIOx:x 可以是 A,B,C,D或者 E* GPIO_Pin:待读取的端口位 * 输出 :KEY_OFF(没按下按键)、KEY_ON(按下按键)*/
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{ /*检测是否有按键按下 */if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON ) { /*等待按键释放 */while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON); return KEY_ON; }elsereturn KEY_OFF;
}
/*********************************************END OF FILE**********************/
/********************************************************************************* @file bsp_SysTick.c* @author fire* @version V1.0* @date 2013-xx-xx* @brief SysTick 系统滴答时钟10us中断函数库,中断时间可自由配置,* 常用的有 1us 10us 1ms 中断。 ******************************************************************************* @attention********************************************************************************/#include "./systick/bsp_SysTick.h"static __IO u32 TimingDelay;/*** @brief 启动系统滴答定时器 SysTick* @param 无* @retval 无*/
void SysTick_Init(void)
{/* SystemFrequency / 1000 1ms中断一次* SystemFrequency / 100000 10us中断一次* SystemFrequency / 1000000 1us中断一次*/
// if (SysTick_Config(SystemFrequency / 100000)) // ST3.0.0库版本if (SysTick_Config(SystemCoreClock / 100000)) // ST3.5.0库版本{ /* Capture error */ while (1);}// 关闭滴答定时器 SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
}/*** @brief us延时程序,10us为一个单位* @param * @arg nTime: Delay_us( 1 ) 则实现的延时为 1 * 10us = 10us* @retval 无*/
void Delay_us(__IO u32 nTime)
{ TimingDelay = nTime; // 使能滴答定时器 SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;while(TimingDelay != 0);
}/*** @brief 获取节拍程序* @param 无* @retval 无* @attention 在 SysTick 中断函数 SysTick_Handler()调用*/
void TimingDelay_Decrement(void)
{if (TimingDelay != 0x00){ TimingDelay--;}
}
/*********************************************END OF FILE**********************/
硬件设计
使用元器件:
单片机:STM32F103;
添加图片注释,不超过 140 字(可选)
设计资料
01仿真图
本设计使用proteus8.9版本设计!具体如图!
添加图片注释,不超过 140 字(可选)
02程序
本设计使用软件keil5版本编程设计!具体如图!
添加图片注释,不超过 140 字(可选)
03设计资料
全部资料包括程序、仿真源文件等。具体内容如下,全网最全!!
添加图片注释,不超过 140 字(可选)
点赞分享一起学习成长。