• 大小: 40KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-07-16
  • 语言: 其他
  • 标签: MQ-2  

资源简介

采用51单片机写的带有AD转换的MQ-2烟雾传感器源代码

资源截图

代码片段和文件信息

//#include
#include 
//#include  //STC的新头文件
#include 


/*****************************************************************************
*  初始化数据          *
*  *
******************************************************************************/

sbit CS=P0^0;
sbit RDD=P0^1;
sbit WRR=P0^2;
sbit INTR=P0^4;
sbit shi=P0^6;

typedef unsigned char uchar;
typedef unsigned int  uint;

sbit   MildLED=P1^0;
sbit   GeneralLED=P1^1;
sbit   MoreseriousLED=P1^2;
sbit   SeriousLED=P1^3;
sbit   Beep=P3^0;

uchar timer0htimer0ltime;
uint Flag; //判断最高位
#define AD_SPEED 0x40 //01000000   1      0     140 个时钟周期转换一次
uchar get12;


/*****************************************************************************
*  延时子程序      *
*  *
******************************************************************************/
void delay50us(unsigned int us)
{
unsigned char j;
for(;us>0;us--)
for(j=19;j>0;j--);
}

void delay(uchar delay_time)        // 延时函数
{
    uint n;
    while(delay_time--) 
    { 
        n = 6000;
        while(--n);
    }
}
/*****************************************************************************
*  AD转换          *
*  *
******************************************************************************/

/*void ADchange()
{
        WRR=1;
CS=1;
RDD=1;
CS=0;
delay50us(1);
WRR=0;
delay50us(2);
WRR=1;
CS=1;
delay50us(1);
//INTR=0;
delay50us(10);
CS=0;
RDD=0;
//INTR=1;
delay50us(1);
value=P2;
RDD=1;
     CS=1;
delay50us(15000);

}*/

uchar get_AD_result(uchar channel)  //AD转换部分
{
    uint AD_finished=0;            //存储 A/D 转换标志

    ADC_RES = 0;                    //高八位
    ADC_RESL = 0;                   //低二位(本例未使用) 
    channel &= 0x07;                //00000111 清0高5位
    ADC_CONTR = AD_SPEED;
    _nop_();
    ADC_CONTR |= channel;           //选择 A/D 当前通道
    _nop_();
    ADC_CONTR |= 0x80;              //启动 A/D 电源
    delay(1);                       //使输入电压达到稳定
    ADC_CONTR |= 0x08;              //00001000 令 ADCS = 1 启动A/D转换 
    AD_finished = 0;
    while (AD_finished ==0 )        //等待A/D转换结束
    {
        AD_finished = (ADC_CONTR & 0x10); //00010000 测试A/D转换结束否
    }
    ADC_CONTR &= 0xE7;              //11110111 清 ADC_FLAG 位 关闭A/D转换 
    return (ADC_RES);               //返回 A/D 高 8 位转换结果
//Flag=ADC_CONTR&0x7F; //返回最高位。判断电压跳变
}
 
/*****************************************************************************
*  蜂鸣器报警      *
*  *
******************************************************************************/
/*void delay(unsigned char t)
   {
   unsigned char t1;
   unsigned long t2;
   for(t1=0;t1   {
    for(t2=0;t2<8000;t2++)
       {
        ;
        }
   }
   TR0=0;
 }
void t0int() interrupt 1
{
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-03-30 11:20  烟雾调试程序\
     文件        5115  2002-04-16 14:32  烟雾调试程序\STARTUP.A51
     文件       11665  2011-11-07 09:09  烟雾调试程序\STARTUP.LST
     文件         749  2011-11-07 09:09  烟雾调试程序\STARTUP.OBJ
     文件       17733  2009-07-07 10:32  烟雾调试程序\STC_NEW_8051.H
     文件       14101  2012-04-04 15:06  烟雾调试程序\yanwu
     文件        5958  2011-11-13 19:46  烟雾调试程序\yanwu.c
     文件         722  2012-04-04 15:06  烟雾调试程序\yanwu.hex
     文件          42  2012-04-04 15:06  烟雾调试程序\yanwu.lnp
     文件       14904  2012-04-04 15:06  烟雾调试程序\yanwu.LST
     文件        7315  2012-04-04 15:06  烟雾调试程序\yanwu.M51
     文件       14545  2012-04-04 15:06  烟雾调试程序\yanwu.OBJ
     文件        1384  2011-11-07 16:00  烟雾调试程序\yanwu.opt.bak
     文件         336  2012-04-04 15:06  烟雾调试程序\yanwu.plg
     文件        2041  2011-11-07 16:00  烟雾调试程序\yanwu.Uv2.bak
     文件       57170  2012-04-04 15:51  烟雾调试程序\yanwu.uvopt
     文件       13623  2011-11-07 19:40  烟雾调试程序\yanwu.uvproj
     文件        1221  2011-11-07 16:00  烟雾调试程序\yanwu_Opt.Bak
     文件        2171  2011-11-07 16:00  烟雾调试程序\yanwu_Uv2.Bak
     文件       57362  2012-02-01 16:07  烟雾调试程序\yanwu_uvopt.bak

评论

共有 条评论