微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 基于labview的烟雾报警系统

基于labview的烟雾报警系统

时间:01-06 来源:互联网 点击:
器材:计算机(装有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; //使用中断,则比T0中断优先级低

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; //启动AD转换

delayxus(10);

ST=0;

delayxus(200);

while(EOC==0); //查询EOC=1时,转换完毕

OE=1;

DATA=P1;//DATA为AD转换后的数据

delayxus(20);

OE=0;

}

void main()

{

Beep=1;

init();

while(1)

{

ADC0809();

if(aa==49)Beep=0;

else Beep=1;

delayxms(200);

}

}

void serial() interrupt 4

{ uint r;

RI=0;

r=SBUF;

aa=r;

if(r==48||r==49)

{

SBUF=DATA;//发送到上位机

while(!TI);

TI=0;

}

}

void T0_time() interrupt 1

{

CLK=~CLK;

}



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top