我的想法是 通过51单片机,实现烟雾报警功能。主要器件有:MQ-2烟雾传感器、ADC0832模块、发光二极管等!
目前遇到的问题是:我希望通过一位发光二极管来表示ADC0832转换出来的数据。
我设想的解决办法是:adc转换模块照常工作,照常将烟雾传感器的电压进行转换,在输出的时候,进行一下比较。可以与一个固定值进行比较(这个可以是报警的下限电压!!)通过比较数值的大小,从而输出0或者1。这不就是正好可以外接一个发光二极管和蜂鸣器弄成声光报警器吗?(这是我不成熟的想法 !!)
程序:说干就干,我根据adc模块的工作原理,编写了程序。后面也加入了一段if语句,用于比较。
结果:我在程序里调节固定值,led能亮能灭。但是我调节那个滑动变阻器(代替mq-2)的阻值大小 ,led没有变化。
下面是我的程序,请大家帮帮忙,指点指点。
#include<reg51.h>
sbit CS=P1^0;
sbit CLK=P1^1;
sbit DIO=P1^2;
sbit LED=P1^3;
void ADC0832_Init()
{
CS=1;
CLK=0;
}
unsigned char ADC0832_Read()
{
unsigned char i,dat=0;
CS=0;
CLK=0;
DIO=1;
CLK=1;
CLK=0;
for(i=0;i<8;i++)
{
CLK=1;
dat<<=1;
dat|=DIO;
CLK=0;
}
CS=1;
return dat;
}
void main()
{
unsigned char smokedat;
unsigned int threshold=160;
ADC0832_Init();
while(1)
{
smokedat=ADC0832_Read();
if(smokedat>threshold)
{
LED=1;
}
else
{
LED=0;
}
}
}
