<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于51單片機的天氣溫度報警系統(tǒng)

          基于51單片機的天氣溫度報警系統(tǒng)

          作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏

          基于AT89C51的天氣溫度報警系統(tǒng),采用Protues仿真。

          本文引用地址:http://www.ex-cimer.com/article/201611/323835.htm

          元件:

          DS1302時鐘芯片

          DS18B20溫度傳感器

          LM016L(1602)液晶

          AT89C51單片機

          LED燈若干

          蜂鳴器一只 用于報警本人不寫這個報警程序了 其實挺簡單的

          我只貼出部分主要的代碼

          完整源代碼請到:http://blog.sina.com.cn/u/2311964960(內(nèi)附圖片)

          或直接下載: LSD.c (7.4 KB, 下載次數(shù): 72)

          /*初始化DS18B20*/

          void Init_DS18B20()
          { //初始化DS18B20必須先給DS18B20一個復位脈沖,接收到復位脈沖后DS18B20會返回一個存在脈沖
          DQ=1; //DQ先置高電平
          _nop_(); //延時
          _nop_();
          DQ=0; //DQ置低電平(拉低總線),開始初始化
          delayus(60); //DQ置低電平后必須延時至少480us,此處延時600us
          DQ=1; //然后DQ置高電平(釋放總線)
          delayus(3); //釋放總線后要求延時15-60us,此處延時30us
          flag=DQ; //讀取DQ并付值flag,如果flag為0,表示返回了一個存在脈沖,初始化完成。相反失敗
          delayus(20);
          }

          /*讀取DS18B20中的scrathpad一個字節(jié)*/
          uchar read_scratchpad()
          {
          uchar i=0;
          for (i=8;i>0;i--)
          {
          DQ=1; //DQ位拉高
          _nop_(); //延時1us秒
          DQ = 0; // DQ置0拉低總線
          dat>>=1; //左移一位
          delayus(1); //延時1us-15us,此處延時10us
          DQ = 1; // DQ置1釋放總線
          delayus(1); //延時10us
          if(DQ==1){dat|=0x80;} //采樣
          else{dat|=0x00;}
          delayus(5); //延時50us
          }
          return dat;
          }

          /*向DS18B20中寫入一個字節(jié),寫ROM指令用*/
          void write_command(uchar com)
          {
          uchar i=0;
          uchar num;
          for (i=8; i>0; i--)
          {
          DQ=1; //先將DQ置1;
          _nop_(); //延時
          DQ = 0; //DQ置0,拉低總線
          num = com&0x01; //讀取指令最低位
          if(num==1) //如果為1
          {
          delayus(1); //要求先延時1-15us,此處延時10us
          DQ=1; //然后釋放總線
          delayus(4); //延時大概45us,此處延時40us
          }else //如果為0
          {
          delayus(6); //要求延時60-120us,此處延時60us
          DQ=1; //然后DQ置1釋放總線
          delayus(1); //延時10us
          }
          com>>=1;
          }
          delayus(1);
          }

          /*溫度轉(zhuǎn)換*/
          void Temperature_conversion()
          {
          Init_DS18B20(); //初始化DS18B20
          write_command(0xCC); // 讀取ROM中64-bit code
          write_command(0x4E); // 寫暫存器,向暫存器中的TH、TL和configuration Register中寫數(shù)據(jù)
          write_command(0x50);// 向TH Register位寫入數(shù)據(jù)
          write_command(0x00);//向TL Register位寫入數(shù)據(jù)
          write_command(0x7F);//向configuration Register寫入數(shù)據(jù)
          delay(10);
          Init_DS18B20();
          write_command(0xCC); // 跳過讀序號列號的操作
          write_command(0x44); // 啟動溫度轉(zhuǎn)換
          delay(10);
          Init_DS18B20();//
          write_command(0xCC); //跳過讀序號列號的操作
          write_command(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
          }


          上一頁 1 2 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();