stm32溫濕度-超聲波-LCD1602結合項目(Proteus仿真程序)

資料下載地址:stm32溫濕度-超聲波-LCD1602結合項目(Proteus仿真程序)?

程序實現功能:
程序基于stm32芯片實現了控制LED燈亮滅、按鍵控制、串口通信、電機控制、溫濕度數據采集、超聲波測距、LCD顯示屏顯示內容這幾個功能,并用proteus8進行仿真。
1.電路圖
1、我設計的電路圖如下所示:

仿真原理圖如下

2.?程序功能介紹
程序總共包括控制LED燈亮滅、按鍵控制、串口通信、電機控制、溫濕度數據采集、超聲波測距、LCD顯示屏顯示內容這幾個功能,以下是這些功能的介紹:
2.1.?LED燈亮滅與按鍵控制
程序默認運行時,兩個LED燈會被點亮。當按下按鈕后,兩個LED燈會閃爍。

2.2.?串口通信
程序運行時,虛擬終端接串口通信用到的接收端和發送端,通過配置波特率、傳輸的奇偶校驗位、停止位、字長以及重定向,將printf函數打印的內容打印到虛擬終端上。
2.3.?電機的控制
通過L298芯片,改變功率,來控制電機的轉動。

2.4.?溫濕度數據采集
用DHT11溫濕度傳感器來采集溫濕度信息。
通過了解DHT11的工作時序,設計好對應的延時函數,進行數據采集,同時通過循環將每次采集的數據打印在虛擬終端上。
2.5.?超聲波測距
通過超聲波測距模塊來進行測距。
通過了解超聲波測距模塊的時序,利用定時器,采集測到的距離,并且通過循環打印在虛擬終端上。
2.6.?LCD液晶顯示器顯示數據
客戶端可以通過發送“database”字符串進入到數據庫的相關服務,在選擇相應功能執行。如下圖所示:
通過了解LM16016l中各引腳功能,相關控制指令以及寫時序和讀時序,在程序運行時,在顯示屏上打印“hello”。
3.具體代碼如下:
* 文件名??: UltrasonicWave.c
* 描述? ? :超聲波測距模塊,UltrasonicWave_Configuration()函數
? ?? ?? ?? ? 初始化超聲模塊,UltrasonicWave_StartMeasure()函數
? ?? ?? ?? ?? ?? ?? ?? ? 啟動測距,并將測得的數據通過串口1打印出來? ?? ?? ?
* 實驗平臺:野火STM32開發板
* 硬件連接:------------------
*? ?? ?? ? | PC8??- TRIG? ?? ?|
*? ?? ?? ? | PC9??- ECHO? ?? ?|
*? ?? ?? ???------------------
* 庫版本??:ST3.5.0
UltrasonicWave.H
  1. #ifndef __UltrasonicWave_H
  2. #define? ?? ???__UltrasonicWave_H
  3. void UltrasonicWave_Configuration(void);? ?? ?? ?? ?? ?//對超聲波模塊初始化
  4. void UltrasonicWave_StartMeasure(void);? ?? ?? ?? ?? ? //開始測距,發送一個>10us的脈沖,然后測量返回的高電平時間
  5. #endif /* __UltrasonicWave_H */
復制代碼

UltrasonicWave.c
*********************************************************************************/
#include "./Wave/UltrasonicWave.h"
#include "./usart/bsp_usart.h"
#include "./Tim2/TIM2.h"

#define? ?? ???TRIG_PORT? ?? ?GPIOC? ?? ?? ?? ?? ? //TRIG? ?? ?
#define? ?? ???ECHO_PORT? ?? ?GPIOC? ?? ?? ?? ?? ? //ECHO
#define? ?? ???TRIG_PIN? ?? ? GPIO_Pin_8? ?//TRIG? ?? ?
#define? ?? ???ECHO_PIN? ?? ? GPIO_Pin_9? ?? ???//ECHO? ?

unsigned short int UltrasonicWave_Distance;? ?? ?//計算出的距離? ?

/*
* 函數名:DelayTime_us
* 描述??:1us延時函數
* 輸入??:Time? ?? ?? ???延時的時間 US
* 輸出??:無? ?? ???
*/
void DelayTime_us(int Time)? ?
{
? ?unsigned char i;
? ?for ( ; Time>0; Time--)
? ???for ( i = 0; i < 72; i++ );
}

/*
* 函數名:UltrasonicWave_Configuration
* 描述??:超聲波模塊的初始化
* 輸入??:無
* 輸出??:無? ?? ???
*/
void UltrasonicWave_Configuration(void)
{
??GPIO_InitTypeDef GPIO_InitStructure;? ?? ???
? ?? ?? ?? ?? ???
??RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
? ?
??GPIO_InitStructure.GPIO_Pin = TRIG_PIN;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//PC8接TRIG
??GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;? ?? ?? ?? ?? ?? ?? ?//設為推挽輸出模式
??GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;? ?? ?? ?? ?? ???
??GPIO_Init(TRIG_PORT, &GPIO_InitStructure);? ?? ?? ?? ?? ?? ?? ?? ? //初始化外設GPIO

??GPIO_InitStructure.GPIO_Pin = ECHO_PIN;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //PC9接ECH0
??GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;? ?? ?? ?? ?? ???//設為輸入
??GPIO_Init(ECHO_PORT,&GPIO_InitStructure);? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //初始化GPIOA
}

/*
* 函數名:UltrasonicWave_CalculateTime
* 描述??:計算距離
* 輸入??:無
* 輸出??:無? ?? ???
*/
void UltrasonicWave_CalculateTime(void)
{
? ?UltrasonicWave_Distance=TIM_GetCounter(TIM2)*5*34/2000;
}

/*
* 函數名:UltrasonicWave_StartMeasure
* 描述??:開始測距,發送一個>10us的脈沖,然后測量返回的高電平時間
* 輸入??:無
* 輸出??:無? ?? ???
*/
void UltrasonicWave_StartMeasure(void)
{
??GPIO_SetBits(TRIG_PORT,TRIG_PIN);? ?? ?? ?? ?? ?? ? //送>10US的高電平
??DelayTime_us(20);? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//延時20US
??GPIO_ResetBits(TRIG_PORT,TRIG_PIN);
??
??while(!GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN));? ?? ?? ?? ?? ?? ?? ?//等待高電平
??TIM_Cmd(TIM2, ENABLE);? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?//開啟時鐘
??while(GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN));? ?? ?? ?? ?? ?? ?? ?? ? //等待低電平
??TIM_Cmd(TIM2, DISABLE);? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?//定時器2失能
??UltrasonicWave_CalculateTime();? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //計算距離
??TIM_SetCounter(TIM2,0);

? ?? ???printf("\r\ndistance:%d%d cm\r\n",UltrasonicWave_Distance/256,UltrasonicWave_Distance%256);? ?? ???
? ?? ?? ?? ?
}
?



  1. ?

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

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

相關文章

新一代python管理工具--uv

uv 工具全方位介紹 起源與背景 uv 是由 Astral&#xff08;pipx 作者&#xff09;團隊用 Rust 語言開發的新一代 Python 包和環境管理工具。其目標是解決傳統 pip/venv/conda 在依賴解析慢、環境隔離繁瑣、命令復雜等方面的痛點&#xff0c;為現代 Python 項目提供極速、自動…

路由交換技術-思科拓撲搭建

配置流程 1.搭建網絡拓撲圖。 2.規劃配置IP地址&#xff0c;內網配置為192.168.1.0和192.168.2.0網段。 3.劃分vlan10&#xff0c;vlan20&#xff0c;vlan30。 4.配置靜態、動態路由。配置路由器Router7&#xff0c;使內外網互通。 5.配置鏈路聚合。通過鏈路聚合技術&#xff…

清華大學視覺空間智能新突破!Spatial-MLLM:提升多模態大語言模型的視覺空間智能能力

作者&#xff1a;Diankun Wu, Fangfu Liu, Yi?Hsin Hung, Yueqi Duan 單位&#xff1a;清華大學 論文標題&#xff1a;Spatial-MLLM: Boosting MLLM Capabilities in Visual-based Spatial Intelligence 論文鏈接&#xff1a;https://arxiv.org/pdf/2505.23747 項目主頁&a…

AI與機器學習ML:利用Python 從零實現神經網絡

自線性回歸以來&#xff0c;我們已經涵蓋了很多領域。在本期中&#xff0c;我們將開始了解神經網絡內部工作原理的旅程*。* 如果一個人試圖了解任何使用生成式 AI 的工具、應用程序、網站或其他系統的內部工作原理&#xff0c;那么掌握神經網絡的架構至關重要。在這個故事中&a…

Vim 匹配跳轉與搜索命令完整學習筆記

Vim 匹配跳轉與搜索命令完整學習筆記 文章目錄 Vim 匹配跳轉與搜索命令完整學習筆記1. 括號/結構匹配% - 括號匹配跳轉[[ / ]] - 函數定義跳轉[{ / ]} - 代碼塊邊界跳轉 2. 精確單詞搜索* - 向下精確搜索# - 向上精確搜索 3. 模糊單詞搜索g* - 向下模糊搜索g# - 向上模糊搜索 4…

安卓9.0系統修改定制化____系列 ROM解打包 修改 講解 導讀篇

專欄系列前言&#xff1a; &#x1f49d;&#x1f49d;&#x1f49d;本專欄作者從事rom系統修改以及手機維修 刷機多年。從當年山寨機開始。歷經安卓4.--至目前的安卓15.合作伙伴遍及各類工作室以及PDA商家 私人玩友等。在廣告機 平板 pda設備 會議機 車機的rom修改中略有經…

Vue3本地存儲實現方案

在 Vue 3 中實現本地存儲&#xff08;如用戶配置數據&#xff09;&#xff0c;主要通過瀏覽器提供的 localStorage 或 sessionStorage API。以下是詳細實現方案&#xff1a; 基礎實現&#xff08;原生 API&#xff09; javascript 復制 下載 // 存儲數據 localStorage.set…

計算機視覺與深度學習 | 2024年至2025年圖像匹配算法總結(原理,公式,代碼,開源鏈接)

圖像匹配算法 一、核心算法分類與技術路線1. **傳統局部特征 + 匹配優化**(魯棒性強,適合資源受限場景)2. **端到端密集匹配網絡**(高精度,適合復雜形變/弱紋理)3. **基于光流思想的匹配網絡**4. **2024-2025年新趨勢**二、核心開源工具庫匯總三、典型代碼流程(以LoFTR為…

瑞芯微 MIPI D-PHY 接收器(RX)驅動學習筆記

驅動文件位置 driver/phy/rockchip/phy-rockchip-mipi-rx.c 1 重要結構體 struct mipidphy_priv {struct device *dev;//表示與驅動程序關聯的設備。它用于設備管理&#xff0c;如設備注冊、注銷等。struct regmap *regmap_grf;//用于映射和訪問通用寄存器文件&#xff08;Gen…

MySQL從入門到DBA深度學習指南

目錄 引言 MySQL基礎入門 數據庫基礎概念 MySQL安裝與配置 SQL語言進階 數據庫設計與規范化 數據庫設計原則 表結構設計 MySQL核心管理 用戶權限管理 備份與恢復 性能優化基礎 高級管理與高可用 高可用與集群 故障診斷與監控 安全與審計 DBA實戰與運維 性能調…

多個機器人同時加載在rviz及gazebo同一個場景中

1. 配置launch文件 gazebo的加載相對容易&#xff0c;但rviz中加載&#xff0c;需要構建完整的tf樹&#xff08;world → map&#xff08;或map_merged&#xff09;→ odom → base_footprint → base_link → base_scan&#xff09;才能正常顯示&#xff0c;launch文件主要是…

Text2SQL、Text2API基礎

你有一個能力超強但“不太懂行”的助手&#xff08;大語言模型LLM&#xff09;。它能說會道&#xff0c;知識淵博&#xff0c;但它&#xff1a; 不懂你的數據庫&#xff1a; 不知道你的數據庫里有哪些表&#xff0c;表里有哪些字段&#xff0c;這些字段代表什么意思。不懂你的…

JDK 8u231安裝教程 - Windows 64位下載安裝及環境變量配置指南

下載安裝包 把jdk-8u231-windows-x64.exe這個文件下載下來&#xff0c;下載鏈接&#xff1a;https://pan.quark.cn/s/a610ca7e5e9d&#xff0c;隨便放哪兒&#xff0c;比如桌面或者下載文件夾。 雙擊運行安裝 找到下載好的那個exe文件&#xff0c;直接雙擊打開。可能會彈個窗口…

LatentSync V8版 - 音頻驅動視頻生成數字人說話視頻 更新V1.6版模型 支持50系顯卡 支持批量 一鍵整合包下載

LatentSync 是字節跳動開源的一款"AI口型同步神器"&#xff0c;簡單來說就是能讓視頻里的人物嘴巴動得和聲音完美匹配的工具。比如你給一段配音&#xff0c;它能自動調整視頻人物的嘴型&#xff0c;按照配音里的聲音說出來&#xff0c;就像真人說話一樣自然。簡單說就…

從一組線段中得出四邊形的算法

原始的需求是使用OpenCV的直線檢測算法&#xff08;例如LSD&#xff09;之后&#xff0c;得到一組線段。然后需要從這些線段得到類似矩形的四邊形&#xff0c;用于檢測經過透視變換的矩形物體。這些線段不一定首尾相接&#xff0c;彼此之間可能相交或有一定距離。 以下是需求圖…

提示詞Prompts(2)

摘要&#xff1a; 本文介紹了langchain.prompts中基礎的提示詞模板的高級用法&#xff0c;包括利用PipelinePrompt組合Prompt使用&#xff0c;多模態場景、動態占位符的使用等進行了介紹。 文章目錄 1. 背景2. PipelinePrompt2.1 組合兩個Prompt模板2.2 多模態模板 3. 聊天提示…

服務器代碼知識點補充

目錄 UdpServer: 觀察者模式: remove_if算法 管道補充: 文件的標準輸出 ,標準輸入,標準錯誤 UdpServer: 數據接收模塊關心Adduser 和Deleuser 兩個模塊 線程池關心Route模塊 將這三個方法注冊進服務器 ,但是有臨界區問題(線程池與數據接受模塊可能同時訪問用戶管理模塊,所…

R語言緩釋制劑QBD解決方案之二

藥物層優化研究 在藥物層工藝中水溶劑蒸發起到重要的作用。濕的環境會使丸子聚集&#xff0c;而干的環境影響藥物與MCC的粘合。輸入變量如氣流量&#xff0c;噴霧速率&#xff0c;霧化壓力&#xff0c;和產品溫度對MCC沉著和包衣溶劑蒸發的平衡有影響。進行了帶3個中心點的24-…

Html實現圖片上傳/裁剪/馬賽克/壓縮/旋轉/縮放

cropper下載 https://download.csdn.net/download/dongyan3595/90970115 前端代碼 <!doctype html> <html lang"en"> <head><base href"/aishop/"><meta name"viewport" content"widthdevice-width, initial…

springboot項目中整合高德地圖

一&#xff1a;高德開放平臺的使用 高德開放平臺 | 高德地圖API 注冊高德地圖賬號 認證填寫個人信息&#xff1a; 認證方式選擇“個人認證開發者”即可&#xff0c;然后完善信息 認證成功之后&#xff0c;再次進入控制臺&#xff0c;創建關于地圖的應用 創建Key&#xff08;y…