标题: 煤气浓度传感器 [打印本页]
作者: 950912 时间: 2016-1-14 12:59
标题: 煤气浓度传感器
#include <reg52.h>
#include <stdio.h>
//**************定义管脚***************//
//sbit P0_7=P0^7; //小数点
sbit P1_0_A=P1^0; //与74LM138的A相连接
sbit P1_1_B=P1^1; //与74LM138的B相连接
sbit P1_2_C=P1^2; //与74LM138的C相连接
sbit SAT=P1^3; //SAT是A/D转换启动信号,输入高电平有效
sbit OE=P1^4; //OE为输出允许信号,高电平有效
sbit EOC=P3^2; //A/D转换结束信号,转换结束时,此端输出一个高电平
sbit LED_RED=P1^5; //低电平点亮
sbit LED_BLUE=P1^6; //低电平点亮
sbit SPEAKER=P1^7; //高电平报警
unsigned int DATA;
//****************七段码*****************//--->高电平点亮七段码
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x80};
void Xint0() interrupt 0 using 1 //中断INT0函数
{
OE=1;
DATA=P2;
OE=0;
}
//****************延时函数******************//
void delay_1ms(unsigned int i)
{
unsigned char x, j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
//************ADC0809转换函数**************//
void ADC0809()
{
SAT=0;
EOC=1;
delay_1ms(1);
SAT=1;
EOC=0;
delay_1ms(1);
SAT=0;
EOC=1;
delay_1ms(5);
}
//*************Display函数*******************//
//--->Display函数的功能:将采集到的电压值转换为实际气体浓度值进行显示
void Display(unsigned int date)
{
unsigned int ge,shi,bai,qian;
qian=date/1000%10;//--->提取千位
bai=date/100%10; //--->提取百位
shi=date/10%10; //--->提取十位
ge=date%10; //--->提取个位
P1_2_C=0; //C
P1_1_B=0; //B
P1_0_A=0; //A --->选择千位数码管
P0=table[qian]; //--->将千位的数据送给千位
delay_1ms(3);
P1_2_C=0;//C
P1_1_B=0;//B
P1_0_A=1;//A --->选择百位数码管
P0=table[bai]; //--->将百位的数据送给百位
delay_1ms(3);
//P0=table[10]; //--->点亮小数点
//delay_1ms(3);
P1_2_C=0;//C
P1_1_B=1;//B
P1_0_A=0;//A --->选择十位数码管
P0=table[shi]; //--->将十位的数据送给十位
delay_1ms(3);
//P0=table[10]; //--->点亮小数点
//delay_1ms(3);
P1_2_C=0;//C
P1_1_B=1;//B
P1_0_A=1;//A --->选择个位数码管
P0=table[ge]; //--->将个位的数据送给个位
delay_1ms(3);
}
//*****************主函数******************//
void main()
{
ET0=0;
IT0=1; //设INT0为边沿触发
EX0=1; //中断INT0允许
EA=1; //开放中断
while(1)
{
ADC0809();
DATA=DATA*4; //数据的处理
Display(DATA);
if(DATA<400) //--->判断是否需要报警
{
SPEAKER=0; //--->不报警
LED_BLUE=0;
}
else if (DATA>=800)
{
SPEAKER=1;//--->严重报警
LED_RED=0;
LED_BLUE=1;
delay_1ms(2);
SPEAKER=0;
LED_RED=1;
delay_1ms(2);
SPEAKER=1;
LED_RED=0;
}
else
{
SPEAKER=1; //--->一般报警
LED_RED=1;
LED_BLUE=1;
delay_1ms(2);
SPEAKER=0;
delay_1ms(2);
SPEAKER=1;
}
}
}
作者: 过客的思念 时间: 2016-1-16 09:58
MQ-4传感器的程序和这个是不是差不多啊
作者: Mr.zhang123 时间: 2018-5-15 09:43
有没有原理图可以看一看呀?
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |