基于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 字(可選)

點贊分享一起學習成長。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912470.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912470.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912470.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows 10 查詢 Nginx 進程教程

1. 打開命令提示符&#xff08;CMD&#xff09; 按 Win R&#xff0c;輸入 cmd&#xff0c;回車。或者在開始菜單搜索欄輸入“cmd”&#xff0c;選擇“命令提示符”。 2. 查看是否有正在運行的 Nginx 進程 輸入命令&#xff1a; tasklist | findstr nginx這個命令會列出所有…

使用 Kafka 優化物流系統的實踐與思考

使用 Kafka 優化物流系統的實踐與思考 在現代物流系統中&#xff0c;訂單處理、倉儲管理、運輸調度等環節復雜且實時性要求高。為了滿足異步解耦、高吞吐、高可用、事件驅動和數據可靠性等需求&#xff0c;Kafka 作為分布式消息隊列和流處理平臺&#xff0c;成為了我們的首選。…

Rust中模式匹配let Some(gas_price) = tx.gas_price用法

你問得非常好&#xff0c;let Some(gas_price) tx.gas_price 是 Rust 中的一種模式匹配寫法&#xff0c;它用于從 Option 類型中提取值。 ? 背景知識&#xff1a;什么是 Option&#xff1f; 在 Rust 中&#xff0c;如果一個值可能存在也可能不存在&#xff0c;就會用 Option…

什么是LLM大語言模型

什么是LLM大語言模型 LLM的全稱是&#xff0c;Large Language Model&#xff0c;簡稱LLM&#xff0c;翻譯為大語言模型&#xff0c;其核心是模擬人類語言的復雜規律&#xff0c;實現語義理解、推理分析、文本生成等任務&#xff0c;主要目的是實現能讀懂和說出人類語言的模型。…

雜談-架構時代演進

關于未來 5-10 年軟件系統演化方向 1. 云原生 ? 超云原生&#xff08;Post Cloud Native&#xff09; Kubernetes 平臺自治化&#xff1a; K8s Operator 日益強大&#xff0c;逐步具備自愈、自動擴縮容、自動調優能力。 云廠商與企業私有云逐步融合為一體…

如何查看服務器的運行日志?

&#x1f7e2; 一、Linux服務器 Linux日志都在**/var/log**目錄下&#xff0c;最常用的有&#xff1a; &#x1f4c2; 常用日志文件 文件內容/var/log/messages大部分系統日志&#xff08;CentOS常見&#xff09;/var/log/syslog系統消息日志&#xff08;Ubuntu/Debian常見&a…

在幸狐RV1106開發板上用gcc14.2本地編譯安裝postgresql 17.5數據庫

在幸狐RV1106開發板上用gcc14.2本地編譯安裝postgresql 17.5數據庫 編譯環境&#xff1a; RV1106G3 Linux luckfox-rv1106 5.10.160 #3 Fri Jun 27 14:16:20 AWST 2025 armv7l GNU/Linux BusyBox v1.36.1 gcc version 14.2.0 (GCC) GNU ld (GNU Binutils) 2.44 GNU Make 4.4 n…

Go語言中map[string]interface{} 和 map[string]string的區別

在 Go 語言中&#xff0c;map[string]interface{} 和 map[string]string 是兩種不同類型的 map&#xff0c;它們的主要區別在于值的類型以及這種差異帶來的使用場景和靈活性的不同。 1. 值的類型 map[string]interface{}&#xff1a;這里的 interface{} 表示 Go 中的空接口類型…

AdGuard Home 安裝及使用

AdGuard Home 是 AdGuard 開源的一個私人 DNS 服務端,只需在網關部署,即可實現全局域網的廣告攔截與隱私反追蹤。在 DNS 解析的過程中,匹配規則庫內的 URL 進行攔截,同時在客戶端中,還可以通過自定義過濾規則實現網頁 DOM 的攔截。 基于 Golang 編寫的 AdGuard Home,官方…

繞過 GraphQL 暴力破解保護

題目要求&#xff1a; 本實驗的用戶登錄機制由 GraphQL API 提供支持。API 終端節點有一個速率限制器&#xff0c;如果它在短時間內收到來自同一源的太多請求&#xff0c;則會返回錯誤。 要解決實驗問題&#xff0c;請暴力破解登錄機制以 .使用身份驗證實驗室密碼列表作為密碼…

C/C++ 使用rapidjson庫 操作Json格式文件(創建、插入、解析、修改、刪除)

目錄 一、前言 1.簡介 2.兼容性 3.下載 4.安裝 5.官方文檔 6.自述 二、封裝Json 1. 創建一個 Document 對象 2. "key":"value" 3. { } 4. [ ] 5. [ { }, { } ] 6. [ [ ], [ ] ] 7. { [ ], [ ] } 8. { { }, { } } 9. 將Document轉換為字符串…

免安裝一鍵修復網絡診斷 + 權限修復!打印機共享錯誤工具適配 Win7/10/11

各位打印小能手們&#xff01;你們有沒有遇到過共享打印機出問題&#xff0c;搞得自己焦頭爛額的情況&#xff1f;比如系統一更新&#xff0c;打印機就連不上&#xff0c;打印任務失敗&#xff0c;真的是讓人崩潰啊&#xff01;別慌&#xff0c;今天就給大家全面介紹一款打印機…

電腦分屏快捷鍵5

按window右箭頭&#xff1a; 按window左箭頭&#xff1a;

nt!CcFlushCache函數分析之nt!CcFindBcb

nt!CcFindBcb函數分析 第一部分&#xff1a; 1: kd> p nt!CcAcquireByteRangeForWrite0x377: 80a13c49 e866e4ffff call nt!CcFindBcb (80a120b4) 1: kd> t nt!CcFindBcb: 80a120b4 55 push ebp 1: kd> kc # 00 nt!CcFindBcb 01 nt!CcAcqu…

矩陣及矩陣快速冪

一.矩陣與模板 【模板】矩陣求和 時間限制&#xff1a;1秒 內存限制&#xff1a;128M 題目描述 給出兩個&#x1d45b;行&#x1d45a;列的矩陣&#xff0c;求兩個矩陣的和 輸入描述 第一行輸入兩個以空格分隔的整數&#x1d45b;,&#x1d45a;&#xff0c;表示矩…

rk3588獲取探維雷達數據

可以在上期部署完 FASTLIO 的工作空間內&#xff0c;繼續部署探維雷達的驅動程序。不要問為什么不用 mid360&#xff0c;因為我手上只有探維雷達。 探維雷達的驅動鏈接&#xff1a;https://github.com/TanwayLab/tanwaylidar_view/blob/main/README.md 下載驅動并編譯 因為沿…

HTML簡介,初步了解HTML

<html> <body> <h1>我的第一個標題</h1> <p1>我的第一個段落</p1> </body> </html> 什么是HTML HTML是用來描述網頁的一種語言。 HTML指的是超文本標記語言。 HTML不是一種編程語言&#xff0c;而是一種標記語言。 標記語…

ARM集群服務器 定義

ARM集群服務器的核心定義可歸納為以下要點&#xff1a; 一、核心定義 ARM集群服務器是將?多個基于ARM架構的處理器節點?集成在單一物理機箱內&#xff0c;通過高速網絡互聯形成的分布式計算系統。每個節點均具備獨立的計算單元&#xff08;如CPU、GPU/NPU&#xff09;、內存…

進程和線程的區別?

進程&#xff08;Process&#xff09;和線程&#xff08;Thread&#xff09;是操作系統資源分配和調度的核心概念&#xff0c;它們的區別主要體現在以下幾個方面&#xff1a; 1. ??定義與資源分配?? ??進程?? 是程序的??一次執行實例??&#xff0c;擁有獨立的地址空…

AR 學習:開啟未來學習新視界?

AR 學習&#xff0c;即增強現實學習&#xff0c;是一種創新的學習方式&#xff0c;它巧妙地將增強現實技術融入到教育領域。簡單來說&#xff0c;就是利用 AR 技術把虛擬的信息和現實場景完美融合&#xff0c;為學習者打造出一個沉浸式的學習環境。AR 學習打破了傳統學習的邊界…