基于STM32的溫濕度光照強度仿真設計(Proteus仿真+程序設計+設計報告+講解視頻)

這里寫目錄標題

  • **1.****主要功能**
  • **2.仿真設計**
  • **3.程序設計**
  • **4.設計報告**
  • **5.下載鏈接**

基于STM32的溫濕度光照強度仿真設計(Proteus仿真+程序設計+設計報告+講解視頻)

仿真圖Proteus 8.9

程序編譯器:keil 5

編程語言:C語言

設計編號:C0109

**1.**主要功能

本次嵌入式課程設計綜合實驗的內容為基于STM32單片機的溫濕度光照強度采集報警系統。完成LCD1602液晶顯示、DHT11溫濕度測量、光敏電阻、指示燈、蜂鳴器控制等多項任務。

1、以STM32為最小系統電路進行連接,用LCD1602液晶顯示屏顯示溫度、濕度、溫度閾值,濕度閾值和光照閾值。

2、用DHT11溫濕度傳感器進行溫濕度的測量,光敏電阻進行光照強度測量。

3、可以通過按鍵可以設置溫濕度閾值和光照閾值。設置按鍵進入設置模式/退出設置模式,按鍵加減調整閾值。

4、當溫濕度或者光強超過設置的閾值時有聲光報警,對應報警指示燈點亮,蜂鳴器報警。

5、默認溫度低閾值20℃,高閾值30℃,濕度低閾值50%,濕度高閾值80%,光照強度300Lux。

STM32單片機 DHT11 LCD1602 按鍵 光敏電阻

資料下載鏈接:

通過網盤分享的文件:KEY_C0109

鏈接: https://pan.baidu.com/s/19UJFDgOolfIqJ0lfRLZH1A

提取碼: qe8n

2.仿真設計

打開仿真工程,雙擊proteus中的單片機,選擇hex文件路徑,然后開始仿真。

img

開始仿真后LCD1602液晶第一行顯示溫度T,濕度H和光照強度L,第二行顯示溫度正常范圍,濕度正常范圍和光照強度閾值。

img

調整DHT11溫濕度模塊濕度為81%,高于閾值,蜂鳴器報警,濕度過高指示燈點亮。

img

3.程序設計

程序是用keil5 mdk版本打開的,如果打開有問題,核實下keil的版本。程序是HAL版本編寫的,有stm32cubemx配置文件。有注釋可以結合講解視頻理解。

img

img

int main(void)
{/* USER CODE BEGIN 1 */char data_str1[20]; 
//	char data_str2[20]; char data_str2[]="L:000C   H:000C ";char str[20];  //溫度值轉換為字符串的存放數組	ADC_ChannelConfTypeDef sConfig = {0};  //建立sConfig結構體char adc_str[20];  //AD值轉換為字符串的存放數組uint32_t adcv;  //存放ADC轉換結果/* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();MX_TIM2_Init();MX_ADC1_Init();/* USER CODE BEGIN 2 */
//  printf("DS18B20測溫實驗\n\r");HAL_UART_Transmit(&huart1, (uint8_t *)&"DHT11\r\n", 7, 10);						//串口1發送字符串,數組長度為10,LCD_Init();																																//LCD1602初始化temp_L=20;temp_H=40;																											//默認溫度閾值20-40
//	DS18B20_Get_Temp();HAL_TIM_Base_Start_IT(&htim2);  //初始化定時器LED1=LED2=LED3=LED4=LED_ON;HAL_Delay(100);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_Delay(20);sConfig.Channel = ADC_CHANNEL_1;  //選擇通道1HAL_ADCEx_Calibration_Start(&hadc1);   //開啟adc前校準一下ADCHAL_ADC_ConfigChannel(&hadc1, &sConfig);  //選擇ADC1的通道1HAL_ADC_Start(&hadc1);										//啟動ADC1HAL_ADC_PollForConversion(&hadc1, 30);		//等待ADC1轉換結束,超時設定為10msadcv = HAL_ADC_GetValue(&hadc1);					//讀取ADC1的轉換結果
//		sprintf(adc_str,"adc_value=%d\r\n",adcv);
//		HAL_UART_Transmit(&huart1, (uint8_t *)adc_str, strlen(adc_str), 20);//串口1發送字符串,數組長度為strlen(str),超時20ms
//		memset(adc_str,0,strlen(adc_str));light_temp=light_intensity(adcv);	
//		sprintf(adc_str,"lvalue=%d\r\n",temp);sprintf(adc_str,"%4.0fLx\r\n",light_temp);HAL_UART_Transmit(&huart1, (uint8_t *)adc_str, strlen(adc_str), 20);//串口1發送字符串,數組長度為strlen(str),超時20msmemset(adc_str,0,strlen(adc_str));
//		temp=(float)adcv*(3.3/4095);if(DHT11_Get_TempHumi(&hum_dat, &temp_dat)){//讀取失敗HAL_UART_Transmit(&huart1, (uint8_t *)&"DHT11 read failed\r\n", 20, 10);						//串口1發送字符串,數組長度為3,超時10ms	} else{//讀取正常sprintf(str,"TUM=%dC\r\n",temp_dat);HAL_UART_Transmit(&huart1, (uint8_t *)str, 20, 10);//串口1發送字符串,數組長度為6,超時10ms	sprintf(str,"HUM=%d%%\r\n",hum_dat);HAL_UART_Transmit(&huart1, (uint8_t *)str, 20, 10);//串口1發送字符串,數組長度為6,超時10ms }	//液晶顯示:T溫度  H濕度,sprintf(data_str1,"T:%d H:%d L:%4.0f  ",temp_dat,hum_dat,light_temp);//轉換溫度,濕度LCD_ShowString(0,0,data_str1);	//LCD1602顯示第一行if(setnum==0){sprintf(data_str2,"%d-%d %d-%d %d ",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h,set_light_dat);///轉換設置溫度,設置濕度LCD_ShowString(1,0,data_str2);	//LCD1602顯示第二行}if(setnum	== 1){sprintf(data_str2,"%d^%d %d-%d %d ",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h,set_light_dat);///轉換設置溫度,設置濕度LCD_ShowString(1,0,data_str2);	//LCD1602顯示第二行}if(setnum	== 2){sprintf(data_str2,"%d-%d^ %d-%d %d ",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h,set_light_dat);///轉換設置溫度,設置濕度LCD_ShowString(1,0,data_str2);	//LCD1602顯示第二行}if(setnum	== 3){sprintf(data_str2,"%d-%d %d^%d %d ",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h,set_light_dat);///轉換設置溫度,設置濕度LCD_ShowString(1,0,data_str2);	//LCD1602顯示第二行}if(setnum	== 4){sprintf(data_str2,"%d-%d %d-%d^ %d",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h,set_light_dat);///轉換設置溫度,設置濕度LCD_ShowString(1,0,data_str2);	//LCD1602顯示第二行}if(setnum	== 5){sprintf(data_str2,"%d-%d %d-%d %d^",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h,set_light_dat);///轉換設置溫度,設置濕度LCD_ShowString(1,0,data_str2);	//LCD1602顯示第二行}
//		LCD_ShowString(0,0,data_str1);	//LCD1602顯示第一行
//		LCD_ShowString(1,0,data_str2);	//LCD1602顯示第二行
//		memset(str,0,strlen(data_str1)); }/* USER CODE END 3 */
}

程序流程圖

img

4.設計報告

12111字設計報告,內容包括設計目標、硬件設計、軟件設計、結論等。

img

在當今這個信息技術日新月異的時代,物聯網(IoT)技術以前所未有的速度重塑著我們的生活和工作方式,其影響力滲透到了社會經濟的各個角落。其中,溫濕度光照監控系統作為物聯網技術應用的重要組成部分,在現代農業管理中起到了關鍵作用,它能幫助農民精準調控作物生長環境,提高農作物的產量和質量;在智能家居領域,通過智能調控室內溫濕度,為居民創造更加舒適健康的生活空間;而在倉儲物流行業,準確的溫濕度監控則是保證貨物品質、減少損耗的重要手段,尤其對于食品、藥品等對環境條件敏感的商品來說至關重要。

鑒于此,本項目致力于開發一套高效、可靠的溫濕度光照采集報警系統,以STM32系列單片機為核心控制器,不僅因為其高性能、低功耗的特性,還因其豐富的外設資源和廣泛的社區支持,非常適合于構建復雜的嵌入式系統。我們選擇采用Proteus仿真平臺進行設計驗證,該平臺以其高度逼真的系統模擬能力著稱,能夠在開發初期有效規避硬件搭建中的潛在問題,極大提升開發效率和設計的準確性。

5.下載鏈接

img

0、常見使用問題及解決方法–必讀!!!!

1、程序代碼

2、Proteus仿真

3、功能要求

4、開題報告

5、設計報告

6、框圖

7、講解視頻

Altium Designer 安裝破解

KEIL+proteus 單片機仿真設計教程

KEIL安裝破解

Proteus元器件查找

Proteus安裝

Proteus簡易使用教程

單片機學習資料

相關數據手冊

答辯技巧

設計報告常用描述

鼠標雙擊打開查找嘉盛單片機51 STM32單片機課程畢業設計.url

資料下載鏈接:

通過網盤分享的文件:KEY_C0109

鏈接: https://pan.baidu.com/s/19UJFDgOolfIqJ0lfRLZH1A

提取碼: qe8n

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

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

相關文章

SSH 服務部署指南

本指南涵蓋 OpenSSH 服務端的安裝、配置密碼/公鑰/多因素認證,以及連接測試方法。 適用系統:Ubuntu/Debian、CentOS/RHEL 等主流 Linux 發行版。 1. 安裝 SSH 服務端 Ubuntu/Debian # 更新軟件包索引 sudo apt update# 安裝 OpenSSH 服務端 sudo apt i…

《Python星球日記》 第46天:決策樹與隨機森林

名人說:路漫漫其修遠兮,吾將上下而求索。—— 屈原《離騷》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder??) 專欄:《Python星球日記》,限時特價訂閱中ing 目錄 一、前言二、決策樹算法原理1. 決策樹簡介2. 決策樹的分裂準則(1) 信息熵與信息增益(2) 基尼不純…

Vue2:引入公共JS,通過this調用

tools.js // 圖片加上前綴 baseurl 是請求域名 img 是圖片路徑export function getimgurl(img) {return ${this.$baseurl}${img}}main.js import baseUrl from "/api/baseUrl.js" Vue.prototype.$baseurl baseUrlimport {getimgurl} from /api/tool.js; Vue.protot…

【Hot 100】 146. LRU 緩存

目錄 引言LRU 緩存官方解題LRU實現📌 實現步驟分解步驟 1:定義雙向鏈表節點步驟 2:創建偽頭尾節點(關鍵設計)步驟 3:實現鏈表基礎操作操作 1:添加節點到頭部操作 2:移除任意節點 步驟…

【Linux】swap交換分區管理

目錄 一、Swap 交換分區的功能 二、swap 交換分區的典型大小的設置 2.1 查看交換分區的大小 2.1.1 free 2.1.2 cat /proc/swaps 或 swapon -s 2.1.3 top 三、使用交換分區的整體流程 3.1 案例一 3.2 案例二 一、Swap 交換分區的功能 計算機運行一個程序首先會將外存&am…

【計算機網絡】用戶從輸入網址到網頁顯示,期間發生了什么?

1.URL解析 瀏覽器分解URL:https://www.example.com/page 協議:https域名:www.example.com路徑:/page 2.DNS查詢: 瀏覽器向DNS服務器發送查詢請求,將域名解析為對應的IP地址。 3.CDN檢查(如果有)&#…

架空輸電線巡檢機器人軌跡優化設計

架空輸電線巡檢機器人軌跡優化 摘要 本論文針對架空輸電線巡檢機器人的軌跡優化問題展開研究,綜合考慮輸電線復雜環境、機器人運動特性及巡檢任務需求,結合路徑規劃算法、智能優化算法與機器人動力學約束,構建了多目標軌跡優化模型。通過改進遺傳算法與模擬退火算法,有效…

根據窗口大小自動調整頁面縮放比例,并保持居中顯示

vue 項目 直接上代碼 圖片u1.png 是個背景圖片 圖片u2.png 是個遮罩 <template><div id"app"><div class"viewBox"><divclass"screen":style"{ transform: translate(-50%,-50%…

初學Python爬蟲

文章目錄 前言一、 爬蟲的初識1.1 什么是爬蟲1.2 爬蟲的核心1.3 爬蟲的用途1.4 爬蟲分類1.5 爬蟲帶來的風險1.6. 反爬手段1.7 爬蟲網絡請求1.8 爬蟲基本流程 二、urllib庫初識2.1 http和https協議2.2 編碼解碼的使用2.3 urllib的基本使用2.4 一個類型六個方法2.5 下載網頁數據2…

oracle 數據庫sql 語句處理過程

14.1SQL語句處理過程 在進行SQL語句處理優化前&#xff0c;需要先熟悉和了解SQL語句的處理過程。 每種類型的語句在執行時都需要如下階段&#xff1a; 第1步: 創建游標。 第2步: 分析語句。 第5步: 綁定變量。 第7步: t運行語句。 第9步: 關閉游標。 如果使用了并行功能&#x…

pm2 list查詢服務時如何通過name或者namespace進行區分

在 PM2 中&#xff0c;如果 pm2 list 顯示的所有服務名稱&#xff08;name&#xff09;相同&#xff0c;就無法直觀地區分不同的進程。這時可以通過 --namespace&#xff08;命名空間&#xff09; 或 自定義 name 來區分服務。以下是解決方案&#xff1a; 方法 1&#xff1a;啟…

[python] 函數基礎

二 函數參數 2.1 必備參數(位置參數) 含義: 傳遞和定義參數的順序及個數必須一致 格式: def func(a,b) def func_1(id,passwd):print("id ",id)print("passwd ",passwd) func_1(10086,123456) 2.2 默認參數 函數: 為函數的參數提供一個默認值,如果調…

超大規模SoC后仿真流程與優化

在超大規模SoC設計中,是否需要進行全芯片后仿真(Full-Chip Post-layout Simulation)取決于多個因素,包括設計復雜度、項目風險、資源限制以及驗證目標。以下是針對這一問題的系統性分析: 1. 全芯片后仿真的必要性 需要全芯片后仿真的場景 系統級交互驗證: 跨模塊信號交互…

深入理解 Docker 網絡原理:構建高效、靈活的容器網絡

在現代軟件開發中&#xff0c;Docker 已經成為了容器化技術的代名詞&#xff0c;廣泛應用于開發、測試和生產環境。Docker 使得開發者能夠將應用及其依賴打包成一個輕量級的容器&#xff0c;并通過 Docker 容器化技術來實現高效的部署與管理。 然而&#xff0c;在日常使用 Dock…

leetcode 242. Valid Anagram

題目描述 因為s和t僅僅包含小寫字母&#xff0c;所以可以開一個26個元素的數組用來做哈希表。不過如果是unicode字符&#xff0c;那就用編程語言自帶的哈希表。 class Solution { public:bool isAnagram(string s, string t) {int n s.size();if(s.size() ! t.size())return …

4、反應釜壓力監控系統 - /自動化與控制組件/reaction-vessel-monitor

76個工業組件庫示例匯總 反應釜壓力監控組件 這是一個用于反應釜壓力監控的自定義組件&#xff0c;專為化工廠反應釜壓力監控設計。采用蘋果工業風格界面&#xff0c;簡潔優雅&#xff0c;功能實用&#xff0c;易于使用。 功能特點 實時壓力可視化&#xff1a;直觀展示反應…

系統思考助力富維東陽

剛剛完成了長春一家汽車零配件公司關于系統思考的項目&#xff01; 在開班儀式上&#xff0c;公司總經理深刻闡述了項目的背后意義&#xff0c;強調了系統思考與公司戰略的緊密聯系。這不僅是一次培訓&#xff0c;更是一次關于“如何全方位看待問題”的深度對話。 在這個過程中…

Linux下的c/c++開發之操作Sqlite3數據庫

libsqlite3-dev 介紹&#xff08;Linux 下的 SQLite3 C/C 開發包&#xff09; libsqlite3-dev 是一個開發包&#xff0c;在 Linux 環境下為使用 SQLite3 C API 進行開發的 C/C 程序員提供頭文件&#xff08;如 sqlite3.h&#xff09;和靜態庫/動態庫的鏈接信息&#xff08;如 …

【Prompt工程—文生圖】案例大全

目錄 一、人物繪圖 二、卡通頭像 三、風景圖 四、logo設計圖 五、動物形象圖 六、室內設計圖 七、動漫風格 八、二次元圖 九、日常場景圖 十、古風神化圖 十一、游戲場景圖 十二、電影大片質感 本文主要介紹了12種不同類型的文生圖技巧&#xff0c;通過加入不同的圖像…

GMRES算法處理多個右端項的Block與PseudoBlock變體

GMRES算法處理多個右端項的Block與PseudoBlock變體 Block與PseudoBlock GMRES簡介 在處理多個右端項的線性方程組時&#xff0c;Block GMRES和PseudoBlock GMRES是兩種常用的變體算法&#xff1a; Block GMRES&#xff1a;同時處理所有右端項&#xff0c;構建一個大的Krylov…