【TB作品】溫濕度監控系統設計,ATMEGA16單片機,Proteus仿真

題2:溫濕度監控系統設計

功能要求:
1)開機顯示時間(小時、分)、時分可修改;
2)用兩個滑動變阻器分別模擬溫度傳感器(測量范
圍0-100度)與濕度傳感器(0-100%),通過按鍵
可以在數碼管切換顯示當前溫度值、濕度值;
3)當溫度低于20度時,紅燈長亮;
4)當濕度高于70%時,黃燈長亮;
5)當濕度正常時,綠燈亮;溫度正常時藍燈亮。
硬件調試:實現以上功能

在這里插入圖片描述

溫濕度監控系統設計實驗報告


一、實驗背景及目的

本實驗旨在設計一個溫濕度監控系統,通過模擬溫度和濕度傳感器來測量環境參數,并根據設定的閾值控制不同顏色的指示燈。同時,系統還具備時間顯示與修改功能,以滿足基本的時鐘需求。


二、系統功能需求
  1. 時間顯示與修改:系統開機后顯示當前時間(小時、分鐘),并允許用戶通過按鍵修改時間。
  2. 溫濕度顯示:通過兩個滑動變阻器分別模擬溫度傳感器(0-100度)和濕度傳感器(0-100%),用戶可通過按鍵在數碼管上切換顯示當前溫度值和濕度值。
  3. 指示燈控制
    • 溫度低于20度時,紅燈長亮。
    • 濕度高于70%時,黃燈長亮。
    • 濕度在正常范圍(≤70%)時,綠燈亮。
    • 溫度在正常范圍(≥20度)時,藍燈亮。

三、系統設計原理
1. 硬件設計

系統硬件主要由微控制器、數碼管顯示模塊、滑動變阻器、按鍵矩陣和指示燈組成。

  • 微控制器:負責讀取傳感器數據、處理邏輯并控制顯示和指示燈。
  • 數碼管顯示模塊:用于顯示時間、溫度和濕度值。
  • 滑動變阻器:模擬溫度和濕度傳感器,通過AD轉換獲取模擬量值。
  • 按鍵矩陣:用于用戶輸入,修改時間和切換顯示內容。
  • 指示燈:根據溫濕度值進行指示。
2. 軟件設計

軟件設計主要分為以下幾個模塊:

  1. 初始化模塊:初始化各個端口、設置定時器、初始化顯示內容。
  2. 按鍵檢測模塊:檢測用戶按鍵輸入,并對時間進行修改或切換顯示模式。
  3. AD轉換模塊:獲取滑動變阻器的模擬量值,轉換為溫度和濕度值。
  4. 顯示模塊:根據當前模式,顯示時間、溫度或濕度值。
  5. 指示燈控制模塊:根據溫濕度值,控制對應的指示燈狀態。

四、電路原理
  • 數碼管連接到微控制器的輸出端口,用于顯示數值。
  • 滑動變阻器連接到AD轉換器通道,用于模擬傳感器輸入。
  • 按鍵矩陣連接到微控制器的輸入端口,用于用戶交互。
  • 指示燈通過微控制器的輸出端口控制,顯示當前環境狀態。

五、程序原理

程序采用C語言編寫,主要功能模塊說明如下:

1. 初始化模塊

初始化各個端口、設置定時器并初始化顯示內容:

void main( void ) {DDRA = 0XFF - 0X03;DDRC |= 0X03;DDRD = 0XFF;DDRB = 0X00;disp[0] = LED_Disbuf[rtc_hour % 100 / 10];disp[1] = LED_Disbuf[rtc_hour % 10];disp[2] = LED_Disbuf[rtc_min % 100 / 10];disp[3] = LED_Disbuf[rtc_min % 10];SREG = 0x80;TIMSK |= (1 << TOIE0);TCCR0 = 0x03;TCNT0 = 0;while (1) {// 主循環}
}
2. 按鍵檢測模塊

檢測用戶按鍵輸入,用于修改時間和切換顯示模式:

int get_key( void ) {if (PINB != 0XFF) {if (PINB == 0xff - 0x01) return(1);if (PINB == 0xff - 0x02) return(2);// 檢測其他按鍵}return(0);
}
3. AD轉換模塊

獲取滑動變阻器的模擬量值,并轉換為溫度和濕度值:

void AD_GetData( void ) {ADMUX = (1 << REFS0);ADCSRA |= (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1);ADCSRA |= (1 << ADSC);while (!(ADCSRA & (1 << ADIF)));ADCSRA |= (1 << ADIF);ADData0 = ADC;ADData0 = ((long) ADData0 * 5010 / 1024) / 50;// 處理濕度傳感器數據
}
4. 顯示模塊

根據當前模式,顯示時間、溫度或濕度值:

if (mode == 0) {disp[0] = LED_Disbuf[rtc_hour % 100 / 10];disp[1] = LED_Disbuf[rtc_hour % 10];disp[2] = LED_Disbuf[rtc_min % 100 / 10];disp[3] = LED_Disbuf[rtc_min % 10];
} else if (mode == 1) {disp[1] = LED_Disbuf[ADData0 / 100];disp[2] = LED_Disbuf[ADData0 % 100 / 10];disp[3] = LED_Disbuf[ADData0 % 10];
} else if (mode == 2) {disp[1] = LED_Disbuf[ADData1 / 100];disp[2] = LED_Disbuf[ADData1 % 100 / 10];disp[3] = LED_Disbuf[ADData1 % 10];
}
5. 指示燈控制模塊

根據溫濕度值,控制指示燈的狀態:

if (ADData0 < 20) {PORTA &= ~0x10;  // 紅燈亮PORTA |= 0x20;   // 藍燈滅
} else {PORTA &= ~0x20;  // 紅燈滅PORTA |= 0x10;   // 藍燈亮
}if (ADData1 > 70) {PORTA &= ~0x40;  // 黃燈亮PORTA |= 0x80;   // 綠燈滅
} else {PORTA &= ~0x80;  // 黃燈滅PORTA |= 0x40;   // 綠燈亮
}

六、實驗結果

通過調試和運行,系統實現了預期的功能。開機后顯示當前時間,并能通過按鍵修改時間;模擬溫度和濕度傳感器的數據,并能在數碼管上切換顯示當前溫度和濕度值;根據溫濕度值控制指示燈的狀態,溫度低于20度紅燈長亮,濕度高于70%黃燈長亮,濕度正常綠燈亮,溫度正常藍燈亮。


七、總結

本實驗通過設計一個溫濕度監控系統,結合了AD轉換、按鍵檢測、數碼管顯示和指示燈控制等多項技術,全面鍛煉了硬件和軟件設計能力。系統在實際運行中表現穩定,達到了預期效果。

資源
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?u=bdf8eeb84961492ba2b62f7bfee641ea&tab=BB08J2

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

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

相關文章

安卓實現微信聊天氣泡

一搜沒一個能用的&#xff0c;我來&#xff1a; 布局文件&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xml…

Tech Talk:智能電視eMMC存儲的五問五答

智能電視作為搭載操作系統的綜合影音載體&#xff0c;以穩步擴大的市場規模走入越來越多的家庭&#xff0c;成為人們生活娛樂的重要組成部分。存儲部件是智能電視不可或缺的組成部分&#xff0c;用于保存操作系統、應用程序、多媒體文件和用戶數據等信息。智能電視使用eMMC作為…

vue3中使用Antv G6渲染樹形結構并支持節點增刪改

寫在前面 在一些管理系統中&#xff0c;會對組織架構、級聯數據等做一些管理&#xff0c;你會怎么實現呢&#xff1f;在經過調研很多插件之后決定使用 Antv G6 實現&#xff0c;文檔也比較清晰&#xff0c;看看怎么實現吧&#xff0c;先來看看效果圖。點擊在線體驗 實現的功能…

服務端開發過程中常見的安全性問題

身份驗證與授權 密碼加密 加密傳輸 Https DDoS SQL注入 SQL注入的本質:數據和代碼未分離&#xff0c;即數據當做了代碼來執行。 解決辦法 檢查輸入的數據是否符合預期&#xff0c;不能直接放入數據庫中進行查詢字符串長度驗證mybatis具有防sql注入的方式 使用#{}代替${…

深入探討光刻技術:半導體制造的關鍵工藝

前言 光刻&#xff08;Photolithography&#xff09;是現代半導體制造過程中不可或缺的一環&#xff0c;它的精度和能力直接決定了芯片的性能和密度。本文將詳細介紹光刻技術的基本原理、過程、關鍵技術及其在半導體制造中的重要性。 光刻技術的基本原理 光刻是一種利用光化…

受限玻爾茲曼機淺析

受限玻爾茲曼機&#xff08;Restricted Boltzmann Machine&#xff0c;簡稱RBM&#xff09;是一種特殊的隨機生成神經網絡&#xff0c;能夠學習并發現數據的復雜規則分布。以下是關于受限玻爾茲曼機算法的詳細介紹&#xff1a; ?? 定義與起源 定義&#xff1a; 受限玻爾茲…

深入剖析Tomcat(十四) Server、Service 組件:如何啟停Tomcat服務?

通過前面文章的學習&#xff0c;我們已經了解了連接器&#xff0c;四大容器是如何配合工作的&#xff0c;在源碼中提供的示例也都是“一個連接器”“一個頂層容器”的結構。并且啟動方式是分別啟動連接器和容器&#xff0c;類似下面代碼 connector.setContainer(engine); try …

主流分布式消息中間件RabbitMQ、RocketMQ

分布式消息中間件在現代分布式系統中起著至關重要的作用。以下是一些主流的分布式消息中間件&#xff1a; 1. Apache Kafka - 特點&#xff1a;高吞吐量、低延遲、持久化、水平可擴展、分布式日志系統。 - 使用場景&#xff1a;日志收集與處理、實時流處理、事件驅動架構、大數…

NC204871 求和

鏈接 思路&#xff1a; 對于一個子樹來說&#xff0c;子樹的節點就包括在整顆樹的dfs序中子樹根節點出現的前后之間&#xff0c;所以我們先進行一次dfs&#xff0c;用b數組的0表示區間左端點&#xff0c;1表示區間右端點&#xff0c;同時用a數組來標記dfs序中的值。處理完dfs序…

小程序的運行機制、更新機制、生命周期介紹保姆級教程全解

一、小程序運行機制 1. 小程序冷啟動 小程序啟動可以分為兩種情況&#xff0c;一種是冷啟動&#xff0c;一種是熱啟動- 冷啟動&#xff1a;如果用戶首次打開&#xff0c;或小程序銷毀后被用戶再次打開&#xff0c;此時小程序需要重新加載啟動- 熱啟動&#xff1a;如果用戶已經打…

HSP_12章 Python面向對象編程oop_多態

文章目錄 P128 多態問題的引出P129 多態細節和使用1. 多態介紹&特別說明2. 多態的好處3. 特別說明: Python多態的特點4. 使用多態的機制來解決主人喂食物的問題 P128 多態問題的引出 先看一個問題 # 說明: 先試用傳統的方式完成 class Food:name Nonedef __init__(self,…

4.Android逆向協議-詳解二次打包失敗解決方案

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a;微塵網校 上一個內容&#xff1a;3.Android逆向協議-APP反反編譯及回編譯 工具下載&#xff1a; 鏈接&#xff1a;https://pan.baidu.…

【MyBatis】 - 自定義TypeHandler-數組

在Java中&#xff0c;如果你使用的是MyBatis并需要為String數組自定義TypeHandler&#xff0c;可以按照以下步驟進行操作。TypeHandler用于自定義對象與數據庫字段之間的轉換。 步驟一&#xff1a;創建自定義的TypeHandler 首先&#xff0c;你需要創建一個自定義的TypeHandle…

#筆記# 寫給自己用的小爬蟲

最近完成了一個文旅行業信息聚合的小應用&#xff0c;實現僅從一個入口了解全行業的信息動態&#xff0c;不用一個一個翻看各網站&#xff0c;節省了不少檢索時間。 一、基本思路 明確數據來源。基于前述目標&#xff0c;確定數據源為文化和旅游部管理部門官網&#xff0c;比…

STM32中斷

目錄 stm32中斷原理標準庫高低電平使LED亮滅燈采用串口中斷方式做串口通信 stm32中斷原理 在STM32微控制器中&#xff0c;中斷是一種重要的事件驅動機制&#xff0c;用于處理實時事件而無需持續輪詢。中斷在處理外部事件&#xff08;如按鍵輸入、定時器溢出等&#xff09;時非…

【辦公類-21-18】20240701 養老護理員初級選擇題488,制作PyQt5圖形界面GUI

背景需求&#xff1a; 6月16日育嬰師高級考完了。運氣好&#xff0c;抽到的是”護理患腹瀉的幼兒”&#xff0c;“晨檢與家長溝通”&#xff0c;“4個月嬰兒喂蛋黃”&#xff0c;“21個月食譜”&#xff0c;都是我背過的題目&#xff08;沒有抽到感統&#xff09; 于是一放假&…

【C語言】解決C語言報錯:Invalid Pointer

文章目錄 簡介什么是Invalid PointerInvalid Pointer的常見原因如何檢測和調試Invalid Pointer解決Invalid Pointer的最佳實踐詳細實例解析示例1&#xff1a;未初始化的指針示例2&#xff1a;已釋放的指針示例3&#xff1a;返回局部變量的指針示例4&#xff1a;野指針 進一步閱…

three.js獲取深度圖

在Three.js中&#xff0c;獲取深度圖&#xff08;Depth Map&#xff09;通常涉及幾個步驟。深度圖是一個圖像&#xff0c;其中每個像素的值表示從攝像機到場景中相應點的距離。以下是如何在Three.js中獲取深度圖的基本步驟&#xff1a; 設置WebGLRenderer&#xff1a;確保你的T…

Android裁剪內核后編譯報錯compatibility matrix

【問題描述】&#xff1a; 優化開機速度&#xff0c;裁剪kernel&#xff0c;注釋掉模型模塊后如&#xff1a;# CONFIG_HID_SONY is not set&#xff0c;出現編譯報錯。 checkvintf E 07-01 16:32:02 160 160 check_vintf.cpp:620] files are incompatible: Runtime info a…

《化學工程與裝備》是什么級別的期刊?是正規期刊嗎?能評職稱嗎?

?問題解答 問&#xff1a;《化學工程與裝備》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知網收錄的第一批認定學術期刊。 問&#xff1a;《化學工程與裝備》級別&#xff1f; 答&#xff1a;省級。主管單位&#xff1a;福建石油化工集團有限責任公司 …