基于labview的煙霧報警系統(tǒng)
實現(xiàn)功能:通過上位機實時監(jiān)測氣體濃度,并與上位機設定的報警閥值比較,若超過氣體濃度報警值,則上下位機同時報警。 實時改變氣體報警值,通過上位機傳給下位機判斷。
本文引用地址:http://m.butianyuan.cn/article/201701/337084.htm電路原理圖:參見ADC0809datasheet和MQ-2氣體傳感器模塊參數(shù)。傳感器根據(jù)氣體濃度輸出0~5V模擬電壓輸入到0809的模擬輸入端。
調式:通過串口調試助手檢測數(shù)據(jù)傳送的正確性。
程序:
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit CLK=P3^3 ;
sbit ST=P2^0; //啟動轉換輸入信號
sbit OE=P2^1;
sbit EOC=P3^2;
uchar DATA; //存放A/D轉換數(shù)據(jù)
sbit Beep=P2^7;
uchar aa;
void delayxms(uint x) //延時
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void delayxus(uint x) //延時xus
{
uint i;
for(i=x;i>0;i--)
_nop_();
}
void init(void)
{
TMOD=0x22; //定時器0自動重裝8位,用于產生CLK,定時器1設置串口參數(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轉換后的數(shù)據(jù)
delayxus(20);
OE=0;
}
評論