日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AT89C2051+ds18b20的溫度計(jì)程序設(shè)計(jì)

          基于AT89C2051+ds18b20的溫度計(jì)程序設(shè)計(jì)

          作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
          //本程序我己經(jīng)通過(guò)使用,大家可以放心參考,不過(guò)這個(gè)程序只能顯示二位,后兩位是顯示一個(gè)溫度的符號(hào)!
          #include
          #include
          #define uchar unsigned char
          #define uint unsigned int

          uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
          uint tempe;

          sbit DQ=P3^5;
          sbit p=P3^1;
          sbit q=P3^2;
          sbit r=P3^3;
          sbit s=P3^4;

          void delay1(uint z) //延時(shí)函數(shù)
          {
          uint x,y;
          for(x=z;x>0;x--)
          for(y=110;y>0;y--) ;
          }

          void delay(uint t)
          {
          while(t--);
          }

          void display(void)
          {
          p=0;
          P1=table[tempe/10];
          delay1(1);
          P1=0xff;
          p=1;

          q=0;
          P1=table[tempe];
          delay1(1);
          P1=0xff;
          q=1;

          r=0;
          P1=0x9c;
          delay1(1);
          P1=0xff;
          r=1;

          s=0;
          P1=0xc6;
          delay1(1);
          P1=0xff;
          s=1;
          }

          void init_ds18b20(void)
          {
          uchar sample;
          DQ=1;
          delay(8);
          DQ=0;
          delay(80);
          DQ=1;
          delay(8);
          sample=DQ; //return(sample)帶返回檢測(cè)器件響應(yīng)
          delay(4);
          }

          void wr_ds18b20(uchar dat)
          {
          uchar i;
          for(i=0;i<8;i++)
          {
          DQ=0;
          DQ=dat&0x01;
          delay(4);
          DQ=1;
          dat>>=1;
          }
          delay(4);
          }

          uchar re_ds18b20(void)
          {
          uchar i;
          uchar result;
          for(i=0;i<8;i++)
          {
          DQ=0;
          result>>=1;
          _nop_();
          DQ=1;
          if(DQ)
          result|=0x80;
          delay(4);
          }
          return(result);
          }

          uchar rd_temperature(void)
          {
          uchar a,b;
          init_ds18b20();
          wr_ds18b20(0xcc); //跳過(guò)ROM
          wr_ds18b20(0x44); //啟動(dòng)溫度測(cè)量
          delay(300);

          init_ds18b20();
          wr_ds18b20(0xcc);
          wr_ds18b20(0xbe);
          a=re_ds18b20();
          b=re_ds18b20();
          b<<=4;
          b+=(a&0xf0)>>4;
          return(b);
          }

          void main()
          {
          while(1)
          {
          tempe=rd_temperature();
          display();
          delay(1);
          display();
          delay(1);
          }
          }


          關(guān)鍵詞: AT89C2051ds18b20溫度

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉