找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4992|回复: 3
收起左侧

51hei开发板+数码管 燃气报警

[复制链接]
ID:42637 发表于 2012-7-25 08:56 | 显示全部楼层 |阅读模式

MQ-5有4脚,VCC,GND,AOUT,DOUT

VCC,GND分别接51hei单片机开发板的+5V与……DOUT接外部中断1(P3.3),中断则报警……AOUT接ADC0804的VIN+,也就是hei板J2的3脚,J2的1脚接外部中断0(P3.2),在ADC0804转换中用,转换与显示……注意电源供电,否则工作不正常……


#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
sbit adc_cs=P2^0;
sbit adc_rd=P3^7;
sbit adc_wr=P3^6; 
sbit beep=P2^2;
sbit P26=P2^6;
sbit P27=P2^7;
sbit P24=P2^4;
bit beep_flag;
bit adc_flag;
bit adc_start;
void delay(uint temp)
{
 while(temp--);
}
void init(void)
{
 P24=0;
 P27=1;
 P0=0xff;
 P27=0;
 P26=1;
 P0=0x00;
 P26=0;
 TMOD=0x01;
 TH0=0x3c;
 TL0=0xb0;
 ET0=1;
 TR0=1;
 IT1=0;
 EX1=1;
 IT0=1;
 EX0=1;
 EA=1;
}        
void  int0_srv() interrupt 0
{
 adc_flag=1;
}
void int1_srv() interrupt 2
{  
 beep_flag=1;  
}
void timer0_srv() interrupt 1
{
 uchar temp;
 TH0=0x3c;
 TL0=0xb0;
 temp++;
 if(temp==40)
 {
  temp=0;
  adc_start=1;
 } 
}
uchar adc_change(void)
{
 uchar value;
 adc_cs=1;
 adc_wr=1;
 delay(2);
 adc_cs=0;
 delay(2);
 adc_wr=0;
 delay(10);
 adc_wr=1;
 delay(2);
 adc_cs=1;
 while(!adc_flag);
 adc_flag=0;
 adc_rd=1;
 _nop_();
 adc_cs=0;
 delay(2);
 adc_rd=0;
 _nop_();
 value=P1;
 _nop_();
 adc_rd=1;
 delay(2);
 adc_cs=1;
 return value;
}
void main()
{
 uchar adc_value;
 uchar ge,shi,bei;
 uint i;
 init();
 while(1)
 {
  if(beep_flag)
  {
   beep_flag=0;
   beep=0;
   delay(10000);
   beep=1;
   delay(10000);
  }
  if(adc_start)
  {
   adc_start=0;
   adc_value=adc_change();
   bei=adc_value/100;
   adc_value=adc_value%100;
   shi=adc_value/10;
   ge=adc_value%10;
  }
  for(i=0;i<100;i++)/////////
  {
   P27=1;
   P0=0xfe;      
   P27=0;
   
   P26=1;
   P0=tab[bei];
   delay(50);
   P0=0x00;      
   P26=0;
     
      P27=1;
   P0=0xfd;      
   P27=0;
   
   P26=1;
   P0=tab[shi];
   delay(50);
   P0=0x00;      
   P26=0;
   
   P27=1;
   P0=0xfb;      
   P27=0;
   
   P26=1;
   P0=tab[ge];
   delay(50);
   P0=0x00;      
   P26=0; 
  } 
 } 
}
回复

使用道具 举报

ID:37685 发表于 2012-7-26 00:20 | 显示全部楼层
谢谢楼主 我正为这个发愁了 非常感谢你提供的这个程序
回复

使用道具 举报

ID:42637 发表于 2012-7-26 13:56 | 显示全部楼层

上面的程序还有点小问题,蜂鸣器工作时,数码管要闪,要暗下来,我用二个中断,二个定时器来处理,修正后相当完善。

回复

使用道具 举报

ID:188814 发表于 2017-4-12 14:30 | 显示全部楼层
求修正后的程序。。发QQ邮箱1250271009@qq.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表