• 方案介紹
    • 1.? 簡介
    • 2.? 主要功能
    • 3.? 源程序(Keil5)
    • 4.? 仿真proteus8.6
    • 5.? 設(shè)計報告
    • 6.? 資料清單
    • 7.? 資料獲取鏈接
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

基于51單片機(jī)的PM2.5空氣質(zhì)量檢測(一)!!!

04/25 08:54
298
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

單片機(jī)仿真設(shè)計合集資料獲取.pdf

共1個文件

資料清單:C程序+仿真+設(shè)計報告+使用說明+元件清單+操作視頻

仿真版本:Proteus8.6及以上版本

程序編譯:Keil5 C51

編程語言:C語言

設(shè)計編號:【U01】

1.? 簡介

? 本文提出了一種基于51單片機(jī)的PM2.5空氣質(zhì)量檢測系統(tǒng)。單片機(jī)實時通過ADC0832轉(zhuǎn)換芯片采集粉塵傳感器的粉塵的濃度,通過單片機(jī)的數(shù)據(jù)轉(zhuǎn)換處理后在液晶屏上顯示空氣中的質(zhì)量,當(dāng)測量空氣中的粉塵濃度大于設(shè)置粉塵濃度時,蜂鳴器發(fā)光二極管發(fā)出聲光報警。粉塵的濃度報警值可以通過按鍵進(jìn)行設(shè)置。

2.? 主要功能

a.通過LCD1602顯示當(dāng)前PM2.5濃度和報警閾值。

b.通過按鍵設(shè)置粉塵濃度報警閾值。

3.? 源程序(Keil5)

本設(shè)計采用keil5 C51軟件(內(nèi)附安裝包)實現(xiàn)程序設(shè)計。如需用keil4打開程序,可自行通過.c和.h文件新建工程即可。

#include"reg51.h"
#include"intrins.h"
#include"absacc.h"
//設(shè)定adc0832的引腳
sbit RS=P1^4;
sbit RW=P1^5;
sbit E=P1^6;
//設(shè)定三個按鈕的引腳
sbit jian=P3^1;
sbit jia=P3^0;
//sbit fuwei=P3^1;
//設(shè)定adc0832的引腳
sbit baojing=P1^3;
sbit cs=P1^2;
sbit di=P1^0;
sbit clk=P1^1;
//定義(方便寫程序)
#define busy 0x80
#define uchar unsigned char
#define uint unsigned int
//把要用的字符串寫出來
uchar code table[]="PM2.5:";
uchar code table1[]="ALARM:";
uchar code table2[]="ug/m3";
uchar code table3[]="0123456789ABCDEF";
uchar num, set, now, a, b;
//延時函數(shù)
void delay(uint i)
{ uint j;
  for(j=0;j<i;j++);
}
//查詢adc0832是否在忙
void test_1602busy()
{ uchar P0DATA;
  RW=1;
  RS=0;
  loop: P0=0xff;
  E=1;
  P0DATA=P0;
  E=0;
  if(P0DATA&busy)
  { goto loop;
  }
}
//寫命令
void writecom(uchar co)
{ test_1602busy();
  RS=0;
  RW=0;
  E=0;
  P0=co;
  E=1;
  E=0;
}
//寫數(shù)據(jù)
void writedata(uchar Data)
{ test_1602busy();
  RS=1;
  RW=0;
  E=0;
  P0=Data;
  E=1;
  E=0;
}
void init()
{ writecom(0x38);   //設(shè)置16X2顯示,5X7點陣,8位數(shù)據(jù)接口
  writecom(0x0c);   //設(shè)置開顯示,不顯示光標(biāo)
  writecom(0x06);   //寫一個字符后地址指針加1
  writecom(0x01);   //顯示清零,數(shù)據(jù)指針清零
}
void sound()
{  uchar z=100;  
   while(z--)
  {  baojing=~baojing;
     delay(500);
  }
}
//從adc0832獲取數(shù)據(jù)
uchar get()
{  uchar Dat1=0,Dat2=0;
   clk=0; di=1; cs=0;
   clk=1; clk=0; di=1; //第一脈沖,開始位
   clk=1; clk=0; di=1; //第二脈沖,模式選擇
   clk=1; clk=0; di=1; //第三脈沖,通道選擇
   for(b=0;b<8;b++)         //從高到低取一次數(shù)
   {clk=1;
    clk=0;
        if(di) Dat1|=0x80>>b;
        }
   for(b=0;b<8;b++)          //從詆到高取一次數(shù)
   {if(di) Dat2|=0x80<<b;
    clk=1;
    clk=0;
        }
        cs=1; di=1; clk=1;
        if(Dat1==Dat2) return Dat1;         //校驗兩次讀數(shù)
}

4.? 仿真proteus8.6

? 本設(shè)計采用proteus8.6軟件(內(nèi)附安裝包)實現(xiàn)仿真設(shè)計,如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導(dǎo)出的,所以請盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。

初始界面:

超限報警:

5.? 設(shè)計報告

設(shè)計報告主要包括硬件電路、軟件設(shè)計、仿真調(diào)試等等,僅供參考

6.? 資料清單

設(shè)計資料主要包括C程序+仿真+設(shè)計報告+使用說明+元件清單+操作視頻等。

7.? 資料獲取鏈接

百度網(wǎng)盤下載鏈接:【U01】百度網(wǎng)盤下載鏈接

更多單片機(jī)仿真設(shè)計合集:單片機(jī)仿真設(shè)計合集

  • 單片機(jī)仿真設(shè)計合集資料獲取.pdf
    下載

相關(guān)推薦