资源简介
采用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
- 上一篇:数据结构课程设计内部排序算法比较
- 下一篇:Hertz接触理论
评论
共有 条评论