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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 自己寫的AT89C2051電子溫度計(jì)

          自己寫的AT89C2051電子溫度計(jì)

          作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò) 收藏
          筆者用AT89C2051單片機(jī)和DS18B20寫了一個(gè)3位的電子溫度計(jì),顯示范圍0-125度,不容易啊,學(xué)習(xí)了近一個(gè)月終于會(huì)自己寫點(diǎn)程序了!現(xiàn)在寫寫時(shí)鐘、流水燈什么的基本上我是沒(méi)什么問(wèn)題了,都能在單片機(jī)上正常運(yùn)行!不羅嗦,下面是C程序,附上電路圖:
          #include
          #include
          #define uchar unsigned char
          #define uint unsigned int
          sbit GW=P3^0;
          sbit SW=P3^1;
          sbit BW=P3^2;
          sbit DQ=P3^3;
          code uchar NUM[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
          uint temp_value;
          void delay(uchar a)
          {
          while(a--);
          }
          void init_DS18B20()
          {
          uchar b=0;
          DQ=1;
          delay(8);
          DQ=0;
          delay(100);
          DQ=1;
          delay(14);
          b=DQ;
          delay(20);
          }
          uchar read(void)
          {
          uint i, dat=0;
          for(i=8;i>0;i--)
          {
          DQ=1;
          _nop_();_nop_();
          dat>>=1;
          DQ=0;
          _nop_();_nop_();_nop_();_nop_();
          DQ=1;
          _nop_();_nop_();_nop_();_nop_();
          if(DQ)
          dat|=0x80;
          delay(12);
          }
          DQ=1;
          return(dat);
          }
          void write(uchar dat)
          {
          uchar d=0;
          for(d=8;d>0;d--)
          {
          DQ=1;
          _nop_();_nop_();
          DQ=0;
          delay(1);
          DQ=dat&0x01;
          delay(12);
          dat=dat/2;
          }
          DQ=1;
          delay(2);
          }
          void ReadTemp()
          {
          uint a=0;
          uint b=0;
          init_DS18B20();
          write(0xCC);
          write(0x44);
          delay(100);

          init_DS18B20();
          write(0xCC);
          write(0xBE);
          delay(100);
          a=read();
          b=read();

          temp_value=((b<<8)|a)*0.0625;
          }
          void display (uchar num0,uchar num1,uchar num2)
          {
          P1=NUM[num0];
          GW=0;
          delay(200);
          GW=1;
          P1=NUM[num1];
          SW=0;
          delay(200);
          SW=1;

          P1=NUM[num2];
          BW=0;
          delay(200);
          BW=1;
          }
          main()
          {
          uint a ,b,c;
          while(1)
          {
          ReadTemp();
          a=temp_value%10;
          b=temp_value/10%10;
          c=temp_value/100%10;
          display(a,b,c);
          }
          }
          完整版本的源代碼下載:http://www.51hei.com/f/ds7865k.rar
          下面是硬件原理圖:


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


          關(guān)鍵詞: AT89C2051電子溫度

          評(píng)論


          技術(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); })();