器件:计算机(装有labview) SL-1型单片机开发试验箱一个、MQ-2气体模块一个、ADC0809芯片。
完成功用:经过上位机实时监测气体浓度,并与上位机设定的报警阀值比较,若超越气体浓度报警值,则上下位机一起报警。 实时改动气体报警值,经过上位机传给下位机判别。
电路原理图:拜见ADC0809datasheet和MQ-2气体传感器模块参数。传感器依据气体浓度输出0~5V模仿电压输入到0809的模仿输入端。
调式:经过串口调试帮手检测数据传送的正确性。
程序:
#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转化数据
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设置串口参数
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转化后的数据
delayxus(20);
OE=0;
}