采用STC89C51為核心控制器,利用氣體傳感器MQ-2、ADC0809模數(shù)轉(zhuǎn)換器、無線收發(fā)模塊等實現(xiàn)基本功能。通過這些傳感器和芯片,當(dāng)環(huán)境中煙霧濃度或可燃?xì)怏w濃度等發(fā)生變化時系統(tǒng)會發(fā)出相應(yīng)的信號,接收機能燈光報警和聲音報警,以此來實現(xiàn)煙霧報警,實現(xiàn)智能報警控制。
煙霧檢測.jpg (1.79 MB, 下載次數(shù): 70)
下載附件
煙霧檢測模塊
2018-3-3 21:30 上傳
報警.jpg (1.77 MB, 下載次數(shù): 66)
下載附件
報警電路
2018-3-3 21:30 上傳
0.jpg (48.6 KB, 下載次數(shù): 63)
下載附件
2018-3-4 02:51 上傳
0.png (20.92 KB, 下載次數(shù): 66)
下載附件
2018-3-4 02:51 上傳
單片機源程序如下:
- //程序頭函數(shù)
- #include <reg52.h>
- //宏定義
- #define uint unsigned int
- #define uchar unsigned char
- #define Data_ADC0809 P1
-
- //管腳聲明
- sbit Feng = P3^0;
- //ADC0809
- sbit ST=P3^3;
- sbit EOC=P3^4;
- sbit OE=P3^2;
- //按鍵
- sbit Key1=P3^5;
- sbit Key2=P3^6;
- sbit Key3=P3^7;
- //顯示數(shù)組 0-9+F
- uchar Data_[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x71,0x3f};
- sbit Wei1 = P2^7;
- sbit Wei2 = P2^6;
- sbit Wei3 = P2^5;
- sbit Wei4 = P2^4;
- //函數(shù)聲明
- extern uchar ADC0809();
- void Display(uchar X,uchar Data);
- void delay(uint t);
- //酒精含量變量
- uchar temp=0;
- //蜂鳴器變量
- uchar FF=10;
- //顯示模式
- uchar Mode=0;
- uchar p;
- void main()
- {
- while(1)
- {
- //正常模式
- if(Mode==0)
- {
- //讀取AD值
- temp=ADC0809();
- for(p=0;p<30;p++)
- Display(0,temp);
- //判斷是否報警
- if(temp>FF)
- {
- Feng=0;
- }
- else
- {
- Feng=1;
- }
- }
- //調(diào)整模式
- else
- {
- Display(1,FF);
- }
- //功能鍵
- if(Key3==0)
- {
- Feng=0;
- delay(100);
- while(Key3==0)
- {
- if(Mode==0)
- Display(0,temp);
- else
- Display(1,FF);
- }
- if(Mode==0)
- Mode=1;
- else
- Mode=0;
- Feng=1;
- }
- //增加
- if(Key2==0&&Mode==1)
- {
- Feng=0;
- delay(100);
- while(Key2==0)
- {
- Display(1,FF);
- }
- FF++;
- if(FF==251)
- FF=250;
- Feng=1;
- }
- //減少
- if(Key1==0&&Mode==1)
- {
- Feng=0;
- delay(100);
- while(Key1==0)
- {
- Display(1,FF);
- }
- FF--;
- if(FF==0xff)
- FF=0;
- Feng=1;
- }
- }
- }
- //ADC0809讀取信息
- uchar ADC0809()
- {
- uchar temp_=0x00;
- //初始化高阻太
- OE=0;
- //轉(zhuǎn)化初始化
- ST=0;
- //開始轉(zhuǎn)換
- ST=1;
- ST=0;
- //外部中斷等待AD轉(zhuǎn)換結(jié)束
- while(EOC==0)
- //讀取轉(zhuǎn)換的AD值
- OE=1;
- temp_=Data_ADC0809;
- OE=0;
- return temp_;
- }
- //延時
- void delay(uint t)
- {
- uint i,j;
- for(i=0;i<t;i++)
- for(j=0;j<10;j++);
- }
- //顯示 X表示狀態(tài) Data表示數(shù)據(jù)
- void Display(uchar X,uchar Data)
- {
- Wei1=1;
- Wei2=1;
- Wei3=1;
- Wei4=1;
- P0=0xff;
- //正常模式
- if(X==0)
- {
- P0=~Data_[11];
- }
- //非正常
- else
- {
- P0=~Data_[10];
- }
- Wei1=0;
- Wei2=1;
- Wei3=1;
- Wei4=1;
- delay(10);
- Wei1=1;
- Wei2=1;
- Wei3=1;
- Wei4=1;
- P0=~Data_[Data/100];
- Wei1=1;
- Wei2=0;
- Wei3=1;
- Wei4=1;
- delay(10);
- Wei1=1;
- Wei2=1;
- Wei3=1;
- Wei4=1;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
無線煙霧報警器.zip
(487.72 KB, 下載次數(shù): 121)
2018-3-3 21:29 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|