【Proteus仿真】【51單片機】智能垃圾桶設計

文章目錄

  • 一、功能簡介
  • 二、軟件設計
  • 三、實驗現象
  • 聯系作者


一、功能簡介

本項目使用Proteus8仿真51單片機控制器,使用報警模塊、LCD1602液晶模塊、按鍵模塊、人體紅外傳感器、HCSR04超聲波、有害氣體傳感器、SG90舵機等。

主要功能:
系統運行后,LCD1602顯示超聲波檢測距離和傳感器采集有害氣體濃度值極其閾值。
當感應到有人時,桶蓋舵機開啟,此時系統檢測垃圾高度是否超限,如果超限,則開啟壓縮機打包,完成后蜂鳴器報警提示。當人離開,桶蓋舵機關閉。如果有害氣體濃度超限,蜂鳴器報警。
可通過按鍵K3進入閾值設置模式,K1和K2調節數據,K4確定。


二、軟件設計

/*
作者:嗨小易(QQ:3443792007)*///系統數據獲取
void sys_data_get(void)
{while(1){//獲取距離sys_ctrl.dis=ultrasonicwave_measure();//獲取有害氣體濃度sys_ctrl.gas=pcf8591_read_adcvalue(0);sys_ctrl.gas=cal_map(sys_ctrl.gas,0,255,0,99);//檢測有無人if(IRED==0)sys_ctrl.man=1;	else sys_ctrl.man=0;			break;}	
}//系統數據顯示
void sys_data_show(void)
{while(1){//距離顯示lcd1602_show_nums(4,0,sys_ctrl.dis,3,0);//氣體濃度顯示lcd1602_show_nums(4,1,sys_ctrl.gas,2,0);//有無人狀態顯示if(sys_ctrl.man==1)lcd1602_show_string(8,1,"Y");else lcd1602_show_string(8,1,"N");//距離閾值顯示lcd1602_show_nums(13,0,sys_ctrl.dish,3,0);//氣體閾值顯示lcd1602_show_nums(13,1,sys_ctrl.gash,2,0);//閾值閃爍指示switch(sys_ctrl.mode){case 1://距離lcd1602_show_string(13,0,"   ");delay_ms(50);lcd1602_show_nums(13,0,sys_ctrl.dish,3,0);break;case 2://氣體lcd1602_show_string(13,1,"  ");delay_ms(50);lcd1602_show_nums(13,1,sys_ctrl.gash,2,0);break;}break;			}
}//系統數據設置
void sys_data_set(void)
{u8 key=0;key=key_scan(0);//設置if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>2)sys_ctrl.mode=1;}//閾值設置模式if(sys_ctrl.mode!=0){//加if(key==KEY1_PRESS){switch(sys_ctrl.mode){case 1://距離sys_ctrl.dish++;if(sys_ctrl.dish>500)sys_ctrl.dish=0;break;case 2://氣體sys_ctrl.gash++;if(sys_ctrl.gash>99)sys_ctrl.gash=0;break;}	}//減else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 1://距離sys_ctrl.dish--;if(sys_ctrl.dish<0)sys_ctrl.dish=500;break;case 2://氣體sys_ctrl.gash--;if(sys_ctrl.gash<0)sys_ctrl.gash=99;break;}	}//確定else if(key==KEY4_PRESS){sys_ctrl.mode=0;	}	}
}//系統功能控制
void sys_fun_ctrl(void)
{static u8 oneflag=0;//如果紅外檢測到有人if(sys_ctrl.man==1){//打開桶蓋舵機steer_control(2);//如果垃圾高度到達閾值,開啟打包if(sys_ctrl.dis>sys_ctrl.dish){if(oneflag==0)//壓縮機啟動一次{oneflag=1;_dc_motor_zturn();delay_ms(1000);_dc_motor_stop();beep_alarm(100,2000);}	}else oneflag=0;}//如果紅外未檢測到有人else{//關閉桶蓋舵機steer_control(0);		}//如果有害氣體濃度高于閾值,報警if(sys_ctrl.gas>sys_ctrl.gash)beep_alarm(10,1000);
}

三、實驗現象

B站演示視頻:https://space.bilibili.com/444388619
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

聯系作者

視頻地址:https://space.bilibili.com/444388619/video
專注于51單片機、STM32、國產32、DSP、Proteus、arduino、ESP32、物聯網軟件開發,PCB設計,視頻分享,技術交流。

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

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

相關文章

基于GPRS的汽車碰撞自動報警系統(論文+源碼)

1. 系統設計 本次基于GPRS的汽車碰撞自動報警系統的設計中&#xff0c;其主要的目標功能如下&#xff1a;1、實時檢測當前的GPS精度和緯度坐標&#xff1b;2.當發生碰撞后系統自動將當前的信息通過GPRS數據發送到遠端數據進行報警&#xff1b;3、系統在碰撞后一方面進行本地報警…

聽GPT 講Rust源代碼--src/tools(2)

題圖來自AI生成 File: rust/src/tools/rust-analyzer/crates/hir-def/src/src.rs rust-analyzer 是一個 Rust 語言的語法分析器和語義分析器&#xff0c;用于提供代碼補全、導航、重構等開發工具。而 rust-analyzer 的代碼實現存儲在 rust/src/tools/rust-analyzer 這個文件夾中…

010 OpenCV中的4種平滑濾波

目錄 一、環境 二、平滑濾波 2.1、均值濾波 2.2、高斯濾波 2.3、中值濾波 2.4、雙邊濾波 三、完整代碼 一、環境 本文使用環境為&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、平滑濾波 2.1、均值濾波 在OpenCV庫中&#xff0c;blur函數是一種簡…

遞歸剪枝題

期中考終于考完了&#xff0c;整道題獎勵下自己 我一北大同學問我的&#xff0c;說他遞歸超時了&#xff0c;叫我想一個辦法 后面他說他加了個剪枝就過了&#xff0c;然后我自己嘗試了一個方法&#xff1a; 就是先把城市按1到n排列&#xff0c;然后考慮互換&#xff0c;如果互…

考過了PMP,面試的時候應該怎么辦?

近期喜番在后臺收到了很多同學們的私信&#xff0c;表示自己已經過了8月份的PMP考試&#xff0c;開始著手往項目管理崗位轉型&#xff0c;但是對于項目管理崗位的面試卻一籌莫展。放輕松&#xff0c;大家的需求喜番都了解了&#xff0c;喜番給大家總結了一些項目經理在面試的時…

SpringCloud 微服務全棧體系(十七)

第十一章 分布式搜索引擎 elasticsearch 七、搜索結果處理 搜索的結果可以按照用戶指定的方式去處理或展示。 1. 排序 elasticsearch 默認是根據相關度算分&#xff08;_score&#xff09;來排序&#xff0c;但是也支持自定義方式對搜索結果排序。可以排序字段類型有&#…

【Python】Fastapi swagger-ui.css 、swagger-ui-bundle.js 無法加載,docs無法加載,redocs無法使用

使用fastapi的時候&#xff0c;swagger-ui.css 、swagger-ui-bundle.js、redoc.standalone.js 有時候無法加載&#xff08;國內環境原因或者是局域網屏蔽&#xff09;&#xff0c;此時就需要自己用魔法下載好對應文件&#xff0c;然后替換到fastapi里面去。 fastapi里面依靠這…

計算機視覺(CV)技術的優勢:

計算機視覺&#xff08;CV&#xff09;技術的優勢&#xff1a; 自動化&#xff1a;計算機視覺技術可以自動化處理大量的視覺數據。 精度和速度&#xff1a;計算機視覺技術可以在很短的時間內對大量的圖像數據進行處理&#xff0c;并且可以達到非常高的精度。 可靠性&#xff…

【微軟技術棧】使用(TAP)基于任務的異步模式

本文內容 使用 Await 掛起執行取消異步操作監視進度使用內置的基于任務的連結符構建基于任務的連結符構建基于任務的數據結構 c#使用基于任務的異步模式 (TAP) 處理異步操作時&#xff0c;可以使用回叫實現等待&#xff0c;而不會阻塞。 對于任務&#xff0c;這可通過 Task.C…

java學習part07數組工具類

1比較內容 2輸出信息 3值填充 4快速排序 5二分查找 負數沒找到&#xff0c;其他表示下標

ES6 — ES14 新特性

一、ES6 新特性&#xff08;2015&#xff09; 1. let和const 在ES6中&#xff0c;新增了let和const關鍵字&#xff0c;其中 let 主要用來聲明變量&#xff0c;而 const 通常用來聲明常量。let、const相對于var關鍵字有以下特點&#xff1a; 特性varletconst變量提升??全局…

【漏洞復現】金蝶云星空管理中心 ScpSupRegHandler接口存在任意文件上傳漏洞 附POC

漏洞描述 金蝶云星空是一款云端企業資源管理(ERP)軟件,為企業提供財務管理、供應鏈管理以及業務流程管理等一體化解決方案。金蝶云星空聚焦多組織,多利潤中心的大中型企業,以 “開放、標準、社交”三大特性為數字經濟時代的企業提供開放的 ERP 云平臺。服務涵蓋:財務、供…

什么是切片

切片&#xff0c;是一個比較生疏的名詞&#xff0c;這是現代計算機編程語言或者說Python里的一個概念&#xff0c;大致意思是從一個集合里切出一塊來&#xff0c;就像切一塊豆腐&#xff0c;一刀下去切出兩塊豆腐 先看一個函數range、返回值是列表&#xff0c;內容和傳入range…

【MySQL】mysql中不推薦使用uuid或者雪花id作為主鍵的原因以及差異化對比

文章目錄 前言什么是UUID?什么是雪花ID?什么是MySql自增ID?優缺點對比UUID:優點1.全球唯一性2.無需數據庫支持 缺點1.存儲空間大2.索引效率低3.查詢效率低 雪花ID&#xff1a;優點1.分布式環境下唯一性 缺點1.依賴于機器時鐘2.存儲空間較大3.查詢效率低 MYSQL自增:優點1.簡單…

qml PathView使用介紹

PathView 是 QML 的一個強大的元素,它能夠在任意路徑上布局和滾動項目。這使得創建復雜的滾動視圖和項目動畫變得相對更簡單。 以下是 PathView 的一些主要特性: 路徑定義: PathView 根據 Path 元素定義的路徑布局項目。路徑可以是簡單的直線,復雜的曲線,或者包含多個不同…

IP 代理的基礎知識有哪些?

本文將介紹流冠IP代理的基礎知識&#xff0c;幫助您了解IP代理的概念、類型、作用、設置方法和注意事項。 一、IP代理的概念 IP代理是一種網絡代理服務&#xff0c;它通過代理服務器幫助用戶訪問互聯網&#xff0c;并將用戶的請求轉發到目標網站&#xff0c;同時將目標網站的響…

手寫工作流設計模式,針對常見的工作流步驟流轉,減少過多的if/else,提升編程思維

需求 這一年下來&#xff0c;寫兩次工作流流轉&#xff0c;總結下經驗。 第一次寫的時候&#xff0c;只找到用模版設計模式包裹一下&#xff0c;每個方法都做隔離&#xff0c;但是在具體分支實現的時候&#xff0c;if/else 滿屏分&#xff0c;而且因為要針對不同情況&#xff…

微信小程序實現類似Vue中的computed、watch功能

微信小程序實現類似Vue中的computed、watch功能 構建npm使用 構建npm 創建包管理器 進入小程序后&#xff0c;打開終端&#xff0c;點擊頂部“視圖” - “終端” 新建終端 使用 npm init -y初始化包管理器&#xff0c;生成一個package.json文件 安裝 npm 包 npm install --…

Java Web 實戰 21 - 用 Servlet 實現一個Hello World

用 Servlet 來寫一個 Hello World~ 一 . 基本部署方式1.1 創建 Servlet 項目1.2 引入依賴1.3 創建目錄1.4 編寫代碼繼承 HttpServlet重寫 doGet 方法刪除 super 方法加上 WebServlet 注解寫業務邏輯 1.5 打包1.6 部署1.7 驗證1.8 小結 二 . 更方便的部署方式2.1 Smart Tomcat 的…

【docker】安裝redis和mysql生產實戰

docker安裝諸如redis,mysql等程序非常方便,但是如果不是為了學習,生產環境的部署還是要注意很多問題的 mysql docker pull mysql:5.7mkdir -p /usr/docker/mysql/{conf,logs,data}docker run -d -p 3306:3306 --privilege