基于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 字(可選)
點贊分享一起學習成長。