基于AT89C51单片机烟雾传感器

发布时间: 2024-08-14
来源: 电子工程世界

 

#include

#include

#define uchar unsigned char           //宏定义无符号字符型

#define uint  unsigned  int           //宏定义无符号整型


sbit ST=P3^0;   //A/D启动转换信号

sbit OE=P3^1;   //数据输出允许信号

sbit EOC=P3^2;  //A/D转换结束信号

sbit CLK=P3^3;  //时钟脉冲 

uint i,j,AD0809;        //定义数据类型


//延时子函数

void delay()

{

   i = 1000;

   while(i--);

}

/*************************************************************************

                                CLK振荡信号        

**************************************************************************/

void timer0( ) interrupt 1 //定时器0工作方式1

{


TH0=(65536-2)/256;          //重装计数初值

TL0=(65536-2)%256;          //重装计数初值

CLK=!CLK;                          //取反

}


 /*************************************************************************

                                主函数        

**************************************************************************/

 void main()

TMOD=0X01;                          //定时器中断0


CLK=0;                                  //脉冲信号初始值为0

TH0=(65536-2)/256;          //定时时间高八位初值

TL0=(65536-2)%256;          //定时时间低八位初值

EA=1;                                  //开CPU中断

ET0=1;                                  //开T/C0中断

TR0=1;

 while(1)                           //无限循环

       {

        ST=0;                                //使采集信号为低

        ST=1;                                //开始数据转换

        ST=0;                                //停止数据转换

        while(!EOC);                //等待数据转换完毕

        OE=1;                                //允许数据输出信号

        AD0809=P1;                    //读取数据

        OE=0;                                //关闭数据输出允许信号

        if(AD0809>=251)                //电压显示不能超过5V

    {

        AD0809=250;

       P2 = 0xE0;//报警闪烁LED灯

      delay();

      P2 =~0xE0;

      delay();

      P0 = ~0x06;//数码管报警显示1

      delay();

      P0 = ~0x00;

      delay();

    }    

  }

   

}     


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。