基于labview的煙霧報(bào)警系統(tǒng)
實(shí)現(xiàn)功能:通過(guò)上位機(jī)實(shí)時(shí)監(jiān)測(cè)氣體濃度,并與上位機(jī)設(shè)定的報(bào)警閥值比較,若超過(guò)氣體濃度報(bào)警值,則上下位機(jī)同時(shí)報(bào)警。 實(shí)時(shí)改變氣體報(bào)警值,通過(guò)上位機(jī)傳給下位機(jī)判斷。
本文引用地址:http://www.ex-cimer.com/article/201701/337084.htm電路原理圖:參見ADC0809datasheet和MQ-2氣體傳感器模塊參數(shù)。傳感器根據(jù)氣體濃度輸出0~5V模擬電壓輸入到0809的模擬輸入端。
調(diào)式:通過(guò)串口調(diào)試助手檢測(cè)數(shù)據(jù)傳送的正確性。
程序:
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit CLK=P3^3 ;
sbit ST=P2^0; //啟動(dòng)轉(zhuǎn)換輸入信號(hào)
sbit OE=P2^1;
sbit EOC=P3^2;
uchar DATA; //存放A/D轉(zhuǎn)換數(shù)據(jù)
sbit Beep=P2^7;
uchar aa;
void delayxms(uint x) //延時(shí)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void delayxus(uint x) //延時(shí)xus
{
uint i;
for(i=x;i>0;i--)
_nop_();
}
void init(void)
{
TMOD=0x22; //定時(shí)器0自動(dòng)重裝8位,用于產(chǎn)生CLK,定時(shí)器1設(shè)置串口參數(shù)
TH0=237; //50kHZ
TL0=237;
TL1=0xf3;
TH1=0xf3;//2400bps
TR1=1;
TR0=1;
SM0=0;
SM1=1;
EA=1;
ET0=1;
ES=1;
REN=1;
ST=0;
OE=0;
}
void ADC0809()
{
ST=0;
OE=0;
//LE=1;P0=0x00;LE=0;
delayxus(2);
ST=1;
delayxus(10);
ST=0;
delayxus(200);
while(EOC==0);
OE=1;
DATA=P1;//DATA為AD轉(zhuǎn)換后的數(shù)據(jù)
delayxus(20);
OE=0;
}
評(píng)論