【51單片機】【protues仿真】基于51單片機PM2.5空氣質量檢測系統

目錄

一、主要功能

二、使用步驟

三、硬件資源

四、軟件設計

五、實驗現象

一、主要功能

1、LCD1602液晶顯示
2、按鍵?設置閾值
3、PM2.5大于閾值時啟動聲光警報

二、使用步驟

基于51單片機的PM2.5空氣質量檢測系統通常采用STC89C51/52作為核心控制器,結合GP2Y1010AU0F粉塵傳感器實現顆粒物濃度檢測,并通過LCD1602顯示實時數據及報警閾值。

三、硬件資源

1、51單片機核心模塊
2、按鍵模塊
3、PM2.5傳感器模塊
4、蜂鳴器模塊
5、數模轉換模塊
6、LCD1602顯示模塊

四、軟件設計

#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char //宏定義
sbit RS=P2^2;//液晶接口
sbit EN=P2^3;

sbit LED = P2^0;//led接口

sbit ADCS = P3^7;//AD0832接口
sbit ADCLK =P3^5;
sbit ADDI = P3^6;
sbit ADDO = P3^6;?? ??? ? ?

sbit SET= P1^1;//按鍵接口
sbit ADD= P1^2;
sbit DEC= P1^3;

sbit BEEP=P2^1;//蜂鳴器接口

uchar set_st;
uchar tab[5];
uint DUST_SET=150; //固體顆粒的閾值

//bit shanshuo_st; //閃爍間隔標志
bit beep_st; //蜂鳴器間隔標志
uchar x=4; //計數器
//定義標識
uchar FlagStart = 0;
float DUST_Value;
uint DUST;
uchar num=0;
uchar mm;
uchar abc;
uchar ADC_Get[10]={0}; //定義AD采樣數組
uchar str[5]={0};

/*****初始化定時器0*****/
void InitTimer(void)
{
?? ?TMOD = 0x01;
?? ?TL0 = (65536-10000)/256; //定時10ms
?? ?TH0 = (65536-10000)%256;
?? ?TR0 = 1;
?? ?ET0 = 1;
?? ?EA = 1;
}
/*************************lcd1602程序**************************/
void delay1ms(uint ms)//延時1毫秒
{?
? ? uint i,j;
?? ?for(i=0;i<ms;i++)
?? ?for(j=0;j<100;j++);
}

void wr_com(uchar com)//寫指令//
{?
? ? delay1ms(1);
?? ?RS=0;
//?? ?RW=0;
?? ?EN=0;
?? ?P0=com;
?? ?delay1ms(1);
?? ?EN=1;
?? ?delay1ms(1);
?? ?EN=0;
}
void wr_dat(uchar dat)//寫數據//
{?
? ? delay1ms(1);;
?? ?RS=1;
//?? ?RW=0;
?? ?EN=0;
?? ?P0=dat;
?? ?delay1ms(1);
?? ?EN=1;
?? ?delay1ms(1);
?? ?EN=0;
}
/************************報警值顯示************************************/?
void baojing()
{
?? ?wr_com(0xc6);
?? ?wr_dat(tab[0]+0x30);
?? ?wr_com(0xc7);
?? ?wr_dat(tab[1]);
?? ?wr_com(0xc8);
?? ?wr_dat(tab[2]+0x30);
?? ?wr_com(0xc9);
?? ?wr_dat(tab[3]+0x30);
?? ?wr_com(0xca);
?? ?wr_dat(tab[4]+0x30);
}
/*****延時子程序*****/
void Delay(uint num)
{
while( --num );
}

/*****主函數*****/
void main(void)
{
?? ?InitTimer(); //初始化定時器
?? ?BEEP=1;
?? ?lcd_init();//初始化顯示
?? ?delay1ms(500);
?? ?while(1)
?? ?{

?? ? checkkey();//按鍵檢測
?? ?if(set_st==0)
?? ?{
?? ??? ?//wr_com(0x0c);
?? ??? ?if(FlagStart==1) //1次數據采集完成
?? ??? ?{
?? ??? ?num++;
?? ??? ?ADC_Get[num]=abc;
?? ??? ?if(num>9)
?? ??? ?{
?? ??? ?num=0;
//?? ??? ?DUST=Error_Correct(ADC_Get,10); //求取10次AD采樣的值?
//?? ??? ?DUST_Value=(DUST/256.0)*5000; //轉化成電壓值MV
//?? ??? ?DUST_Value=DUST_Value*0.17-100; //固體懸浮顆粒濃度計算 Y=0.17*X-0.1 X--采樣電壓V
?? ?
?? ??? ?DUST=Error_Correct(ADC_Get,10);
?? ? ? ?DUST_Value=(DUST/256.0)*5;//轉化成電壓值
?? ? ? ?DUST_Value=(DUST_Value*0.17-0.1)*1000;//固體懸浮顆粒濃度計
?? ?
?? ??? ?if(DUST_Value<0) DUST_Value=0;
?? ??? ?if(DUST_Value>760) DUST_Value=760; //限位
?? ??? ?DUST=(uint)DUST_Value;
?? ??? ?}
?? ??? ?TL0 = (65536-10000)/256;
?? ??? ?TH0 = (65536-10000)%256;
?? ??? ?TR0 = 1; //開啟定時器0
?? ??? ?EA = 1;
?? ??? ?FlagStart=0;
?? ??? ?}
?? ??? ?Alarm(); //報警檢測
?? ?}
?? ?disp(DUST);//顯示粉塵濃度值
?? ?baojing();//顯示報警值


?? ?}
}

五、實驗現象

演示視頻:

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

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

相關文章

【目錄-單選】鴻蒙HarmonyOS開發者基礎

用哪一種裝飾器修飾的組件可作為頁面入口組件&#xff1f;Look at the answer下面是ArkTS中類名、枚舉名推薦的代碼風格是 Look at the answer向服務器提交表單數據&#xff0c;以下哪種請求方式比較合適 Look at the answer使用http發起網絡請求&#xff0c;需要以下哪種權限&…

maven【maven】技術詳解

MavenMaven的本質是項目管理工具&#xff0c;將項目開發和管理過程抽象成一個項目對象模型&#xff08;POM&#xff09;Project Object Model&#xff1a;項目對象管理模型作用&#xff1a; 項目構建&#xff1a;提供標準的、跨平臺的自動化項目構建方式依賴管理&#xff1a;方…

【操作系統-Day 25】死鎖 (Deadlock):揭秘多線程編程的“終極殺手”

Langchain系列文章目錄 01-玩轉LangChain&#xff1a;從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊&#xff1a;四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain&#xff1a;從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

【嵌入式C語言】七

8.4函數的聲明和定義聲明一個函數意味著向編譯器描述函數名、返回值、參數個數和類型&#xff0c;但并不會為函數分配存儲空間定義一個函數意味著在聲明變量的同時還要有具體的實現&#xff0c;并且會為函數分配存儲空間8.5多源文件的函數聲明和定義8.6預處理指令#Include#incl…

hardhat3 源神 -- 啟動!

Hardhat 項目開發環境搭建完整指南 1. 從 GitHub 下載項目 # 使用 SSH 方式克隆&#xff08;需要配置 SSH key&#xff09; git clone gitgithub.com:NomicFoundation/hardhat.git# 或使用 HTTPS 方式 git clone https://github.com/NomicFoundation/hardhat.git# 進入項目目錄…

遇到 Git 提示大文件無法上傳確實讓人頭疼

遇到 Git 提示大文件無法上傳確實讓人頭疼&#xff0c;但別擔心&#xff0c;我們可以一步步來解決。為了讓你更清晰地了解整個流程&#xff0c;我先用一個表格來概括主要步驟&#xff1a;步驟核心操作關鍵命令/工具示例 (用于刪除歷史中的大文件)1. 定位大文件使用 Git 命令或工…

機器人控制器開發(傳感器層——奧比大白相機適配)

編譯OrbbecSDK_ROS2的代碼 執行命令 colcon buildros2 launch orbbec_camera dabai.launch.py問題1&#xff1a; 運行時報錯&#xff1a; [component_container-1] [ERROR] [1757153916.450795107] [camera.camera_container]: Failed to load library: Could not load library…

C語言(長期更新)第15講 指針詳解(五):習題實戰

C語言&#xff08;長期更新&#xff09;第15講 指針詳解&#xff08;五&#xff09;&#xff1a;習題實戰 跟著潼心走&#xff0c;輕松拿捏C語言&#xff0c;困惑通通走&#xff0c;一去不回頭~歡迎開始今天的學習內容&#xff0c;你的支持就是博主最大的動力。博主主頁&#…

數據倉庫概要

什么是數據倉庫&#xff1f; 數據倉庫是一個面向主題的、集成的、相對穩定的、反映歷史變化的數據集合&#xff0c;用于支持管理決策。 核心特征 1. 面向主題 數據倉庫圍繞核心業務主題&#xff08;如客戶、產品、銷售、財務&#xff09;來組織數據&#xff0c;而不是圍繞具體的…

python庫 Py2exe 的詳細使用(將 Python 腳本變為Windows獨立軟件包)

更多內容請見: python3案例和總結-專欄介紹和目錄 文章目錄 一、Py2exe 概述 1.1 Py2exe介紹 1.2 Py2exe安裝 1.3 替代工具推薦 二、基礎使用 2.1 編寫打包腳本 2.2 執行打包命令 2.3 完整案例 2.4 配置選項詳解 2.5 構建和分發 三、高級配置 3.1 包含隱藏導入 3.2 處理特殊包…

CuTe C++ 簡介02,gemm_device cuda kernel 的實現

《CuTe C 簡介01&#xff0c;從示例開始 》 中&#xff0c;最后看到了 計算 gemm 的cuda kernel&#xff0c;使用 NVIDIA CUTLASS 的 CUTe (CUDA Tile) 庫實現的高性能 GEMM (通用矩陣乘法) CUDA kernel。接下來解釋一下這個內核的各個部分。文末再貼一遍代碼&#xff0c;方便查…

萬代《寶可夢》主題新品扭蛋公開!史上最大尺寸

使用jQuery的常用方法與返回值分析 jQuery是一個輕量級的JavaScript庫&#xff0c;旨在簡化HTML文檔遍歷和操作、事件處理以及動畫效果的創建。本文將介紹一些常用的jQuery方法及其返回值&#xff0c;幫助開發者更好地理解和運用這一強大的庫。 1. 選擇器方法 jQuery提供了多種…

【FastDDS】Layer Transport ( 05-Shared Memory Transport)

6.4 共享內存傳輸 共享內存&#xff08;SHM&#xff09;傳輸依靠主機操作系統提供的共享內存機制&#xff0c;實現了在同一處理單元/機器上運行的實體之間的快速通信。注意 Fast DDS 利用域參與者&#xff08;DomainParticipant&#xff09;的 GuidPrefix_t 來識別在同一主機上…

記 2025/9/6

人工智能常見的模型按照處理問題分為6大類&#xff1a;處理權重問題的權重模型、處理狀態問題的狀態模型、處理序列問題的問題模型、處理表示問題的表示模型、處理相似度的相似模型、處理分類問題的分類模型。權重是計算特定狀態下事物的重要性。狀態問題是刻畫權重動態變化的過…

開啟Python之路,第一節學習大綱-從入門到進階

前端開啟Python之路&#xff0c;前端有沒有必要卷后端技術&#xff0c;歡迎各位大神批評指正 第一階段&#xff1a;基礎入門 (打好根基) 目標&#xff1a; 理解編程基本概念&#xff0c;掌握 Python 核心語法&#xff0c;能編寫簡單的腳本程序。 1、環境搭建與開發工具 安裝 Py…

webshell及冰蝎雙擊無法打開?

什么是webshell&#xff1f; web:萬維網 shell&#xff1a;是指一種應用程序&#xff0c;為用戶和系統之間建立連接&#xff0c;通過這個界面訪問操作系統內核的服務 webshell:是以asp、aspx、php、jsp或者cgi等網頁文件形式存在的一種命令執行環境&#xff0c;也可以將其稱做…

【星閃】Hi2821 | PWM脈寬調制模塊 + 呼吸燈例程

1. 簡介PWM&#xff08;Pulse Width Modulation&#xff09;&#xff0c;全稱脈寬調制&#xff0c;通過對一系列脈沖的寬度進行調制&#xff0c;等效出所需波形。即對模擬信號電平進行數字編碼&#xff0c;通過調節頻率、占空比的變化來調節信號的變化。一個 PWM 周期內由一段高…

51單片機---硬件學習(電子琴、主從應答模式、modbus模型、DS18B20傳感器顯示溫度)

一、串行通信與并行通信1、串行通信定義&#xff1a;數據一位一位地按順序通過單條傳輸線進行傳輸的通信方式。優點&#xff1a;傳輸線少&#xff0c;成本低&#xff0c;適合長距離傳輸缺點&#xff1a;傳輸速度相對較慢2、并行通信定義&#xff1a;數據的各位同時通過多條并行…

SpringBoot后端開發常用工具詳細介紹——SpringSecurity認證用戶保證安全

簡單的開始 創建SpringBoot項目 首先創建一個簡單的springboot項目&#xff0c;假設端口為8888&#xff0c;添加controller控制層&#xff0c;并在其中添加TestController控制類&#xff0c;那么啟動springboot項目之后&#xff0c;訪localhost:8888/api/message頁面會顯示my…

別再手工縫合API了!開源LLMOps神器LMForge,讓你像搭積木一樣玩轉AI智能體!

你是否受夠了這些&#xff1f; 剛調通OpenAI的API&#xff0c;老板說“咱們試試國產模型降本增效”&#xff0c;你看著滿屏的if-else只想說“我暈”。想給AI加上“查天氣”、“執行代碼”的能力&#xff0c;卻發現Function Calling的代碼復雜得讓人頭皮發麻。本地的Agentdemo驚…