久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2505|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

關(guān)于煤氣報(bào)警系統(tǒng)的一些問(wèn)題請(qǐng)教

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:225387 發(fā)表于 2017-8-7 10:14 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我還是新手,不會(huì)寫程序,只能找網(wǎng)上已有的資料。
最近要做煤氣報(bào)警系統(tǒng),所以找了一份資料。我要用到的是MQ-2氣敏傳感器、stc89c52單片機(jī)開(kāi)發(fā)板(包含了蜂鳴器和LED等)、DS18B20溫度傳感器。
下面是程序,我的問(wèn)題是這個(gè)程序好像沒(méi)有體現(xiàn)出氣敏傳感器的模數(shù)轉(zhuǎn)換、以及蜂鳴器報(bào)警,是這樣嗎?我需要再把這個(gè)程序完善一下嗎?特別是最后的主函數(shù)部分我看不大懂,有沒(méi)有好心人能給我解讀一下
程序:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P1^0;//定義18B20數(shù)據(jù)線引腳
sbit LED=P1^3;
sbit input=P1^1;
unsigned char flag;//負(fù)數(shù)標(biāo)志
//行掃描數(shù)組
uchar code scan[4]={0xef,0xf7,0xfb,0xfd};
//數(shù)碼管顯示的段碼表
uchar code table[13]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x39,0x00};//,-,C,kong
//小數(shù)部分顯示查詢表
uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
uchar dispbuf[8];//顯示緩沖區(qū)
uchar temper[2];//存放溫度數(shù)組
uchar TCNT;
//******************************
//延時(shí)函數(shù)
//******************************
void delay (unsigned int us)
{
  while(us--);
}
//******************************
//DS18B20復(fù)位函數(shù)
//******************************
void reset(void)
{
  uchar x=0;
  DQ=1;
  delay(80);
  DQ=0;
  delay(80);
  DQ=1;
  delay(14);
  x=DQ;
  delay(20);
}
//******************************
//DS18B20中讀一個(gè)字節(jié)
//******************************
uchar readbyte(void)
{
uchar i=0;
uchar dat=0;
for(i=8;i>0;i--)
  {
     DQ=0;                 //拉低總線,啟動(dòng)輸入
     dat>>=1;         //要返回的數(shù)據(jù)右移一位,先讀出來(lái)的是低位
     DQ=1;
     if(DQ==1)         //當(dāng)數(shù)據(jù)線為高時(shí),證明該位數(shù)據(jù)為 1
     dat|=0x80;         //要傳輸數(shù)據(jù)的當(dāng)前值置為 1,若不是,則為 0
     delay(4);
  }
    return (dat);
}
//******************************
//向DS18B20中寫1個(gè)字節(jié)
//******************************
void writebyte(unsigned char dat)
{
  uchar i=0;
  for(i=8;i>0;i--)
{
   DQ=0;
   DQ=dat&0x01;          //把dat第0位的狀態(tài)賦給DQ,其余位清零
   delay(5);
   DQ=1;
   dat>>=1;
}
  delay(4);
}
//******************************
//向DS18B20中讀取實(shí)時(shí)溫度值
//******************************
  void readtemp(void)
  {
    uchar a=0,b=0;
    reset();
    writebyte(0xCC);//跳過(guò)序列號(hào)、寫指令:跳過(guò)rom檢測(cè)
    writebyte(0x44);//啟動(dòng)溫度轉(zhuǎn)換         
    reset();
    writebyte(0xCC);//跳過(guò)序列號(hào)
    writebyte(0xBE);//讀9個(gè)寄存器,前2個(gè)為溫度
    a=readbyte();//低位
    b=readbyte();//高位
    if(b>0x0f)   //判斷是否為負(fù)值  ;15
    {
     a=~a+1;
     if(a==0)
     b=~b+1;
     else b=~b;
     flag=10;         //標(biāo)志某種狀態(tài)
    }
     else flag=12;
     temper[0]=a&0x0f;
     a=a>>4;
     temper[1]=b<<4;
     temper[1]=temper[1]|a;
}
//******************************
//動(dòng)態(tài)掃描顯示函數(shù)
//******************************
void scandisp()
{
  unsigned char i,value;          //value指濃度值?
  for(i=0;i<4;i++)
  {
    P3=0xff;                // 255
    value=table[dispbuf[i]];
    if(i==2)
    value|=0x80;        //-128;10000000b;把變量value的值的最高位寫成“1”,而不改變其它位的值
    P2=value;
    P3=scan[i];
    delay(90);
  }
}
//******************************
//定時(shí)中斷函數(shù)
//******************************
void Timer0(void)interrupt 1 using 1
{
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  TCNT++;
  if(TCNT==6)
{
   TCNT =0;
   LED=~LED;   //若 LED = 0;低電平亮, ~取反 LED = 1;高電平LED滅
}
}
//******************************
//主函數(shù)
//******************************
void main()
{
  uchar temp,temp1;
  TCNT=0;
  TMOD=0x01;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  IE=0x82;
  while(1)
   {
    if(input==0)
    TR0=1;
    else
     {
      TR0=0;
      LED=1;
     }
     readtemp();
     temp1=temper[0];
     temp=temper[1];
     dispbuf[3]=ditab[temp1];
     dispbuf[2]=temp%10;
     temp=temp/10;
     dispbuf[1]=temp%10;
     dispbuf[0]=flag;
     scandisp();
   }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:82765 發(fā)表于 2017-8-7 17:38 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
回復(fù)

使用道具 舉報(bào)

板凳
ID:225591 發(fā)表于 2017-8-7 20:30 | 只看該作者
delay 是延時(shí)函數(shù)
回復(fù)

使用道具 舉報(bào)

地板
ID:225387 發(fā)表于 2017-8-8 09:13 | 只看該作者
cjjcjj1 發(fā)表于 2017-8-7 17:38
你好!你要把你的具體要求發(fā)出來(lái)。
然后根據(jù)你的要求去完善程序和原理圖;
還有,你這個(gè)是要做出實(shí)物的吧

對(duì)的,要做實(shí)物。
我的要求是要讓MQ-2傳感器檢測(cè)到設(shè)定的氣體濃度后進(jìn)行模數(shù)轉(zhuǎn)換,然后通過(guò)單片機(jī)讓蜂鳴器響和LED燈亮,即報(bào)警。但我找的這個(gè)程序主要是DS18B20溫度傳感器的程序,因?yàn)槭切率郑圆磺宄趺葱薷摹?/td>
回復(fù)

使用道具 舉報(bào)

5#
ID:82765 發(fā)表于 2017-8-8 12:17 來(lái)自手機(jī) | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 美女福利视频 | 中文字幕日韩一区二区 | 99国产精品一区二区三区 | 国产精品日韩一区二区 | 亚洲一区二区精品视频 | 午夜天堂精品久久久久 | 日本aaa视频| 日日操夜夜干 | 日本福利一区 | 国产精品久久久久无码av | 精精国产xxxx视频在线播放 | 国产一级成人 | 好姑娘影视在线观看高清 | 韩日一区二区 | 天天操夜夜操免费视频 | 久久国 | 成人福利电影 | a免费视频 | 中文字幕 在线观看 | 日韩视频专区 | 人碰人操 | 在线中文字幕亚洲 | 国产精品免费一区二区三区 | 国产精品毛片无码 | 日韩午夜在线播放 | 欧美手机在线 | 亚洲综合中文字幕在线观看 | 国产91在线播放 | 91.com视频 | 激情婷婷成人 | 久久国产精品无码网站 | 在线观看成人小视频 | 国产91在线播放 | 91av在线免费 | 91精品国产91久久久久久丝袜 | 九色 在线| 欧美成人精品一区二区男人看 | 91在线看网站 | 久热久草| 成人免费看黄网站在线观看 | 日本激情视频在线播放 |