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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 超聲波HM55B測距(STC10F08單片機C程序)

          超聲波HM55B測距(STC10F08單片機C程序)

          作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
          名稱:超聲波測距

          作者:Acebit

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

          信息:STC10F08單片機,晶振11.0592MHZ;超聲波模塊HM55B,測距范圍1米;

          LCD1602,串行發(fā)送數(shù)據(jù),顯示單位mm;

          #include "def.h" //定義管腳
          #include "reg51.h"
          #include
          #ifndef OSC110592
          #define OSC110592
          #endif
          unsigned int qian,bai,shi,ge;
          unsigned int k;
          long result;

          void init();
          void PULSOUTus(unsigned int port);
          bit Read_Port(unsigned int port);
          void Write_Port(unsigned int port,bit state);

          bdata unsigned char SBUF1;
          sbit SBUF1_bit0 = SBUF1^0;
          sbit SBUF1_bit1 = SBUF1^1;
          sbit SBUF1_bit2 = SBUF1^2;
          sbit SBUF1_bit3 = SBUF1^3;
          sbit SBUF1_bit4 = SBUF1^4;
          sbit SBUF1_bit5 = SBUF1^5;
          sbit SBUF1_bit6 = SBUF1^6;
          sbit SBUF1_bit7 = SBUF1^7;


          void init() //initialization
          {
          TMOD=0x12;
          PCON=00;
          TR1=0;
          TF1=0;
          TR0=0;
          TF0=0;
          ET1=0;
          ET0=0;
          EA=0;
          }


          void delay_ms(unsigned int i)//延時子程序
          {
          unsigned int j;
          for(;i>0;i--)
          for(j=0;j<125;j++);
          }

          void putchar(char input) //模擬串口9600波特率,向LCD發(fā)送數(shù)據(jù)
          {
          SBUF1=input;
          TL0=160;
          TH0=160;
          TF0=0;
          TR0=1;

          P26 = 0; //strat
          while(!TF0);
          TF0=0;
          P26 = SBUF1_bit0; //0
          while(!TF0);
          TF0=0;
          P26 = SBUF1_bit1; //1
          while(!TF0);
          TF0=0;
          P26 = SBUF1_bit2; //2
          while(!TF0);
          TF0=0;
          P26 = SBUF1_bit3; //3
          while(!TF0);
          TF0=0;
          P26 = SBUF1_bit4; //4
          while(!TF0);
          TF0=0;
          P26 = SBUF1_bit5; //5
          while(!TF0);
          TF0=0;
          P26 = SBUF1_bit6; //6
          while(!TF0);
          TF0=0;
          P26 = SBUF1_bit7; //7
          while(!TF0);
          TF0=0;
          P26 = 1; //end
          while(!TF0);
          TF0=0;
          TR0=0;
          }

          void PULSOUTus(unsigned int port)//HM55B啟動脈沖
          {

          Write_Port(port,1);
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          Write_Port(port,0);
          }

          void Write_Port(unsigned int port,bit state)
          {
          switch (port)
          {
          case 0: P00=state;break;
          case 1: P01=state;break;
          case 2: P02=state;break;
          case 3: P03=state;break;
          case 4: P04=state;break;
          case 5: P05=state;break;
          case 6: P06=state;break;
          case 7: P07=state;break;
          case 8: P20=state;break;
          case 9: P21=state;break;
          case 10:P22=state;break;
          case 11:P23=state;break;
          case 12:P24=state;break;
          case 13:P25=state;break;
          case 14:P26=state;break;
          case 15:P27=state;break;
          }
          }


          //main program
          void main()
          {
          init();
          while(1)
          {
          TL1=0;
          TH1=0;

          Write_Port(15,0);
          PULSOUTus(15);
          Write_Port(15,1);
          while(P27==0); //測回波時間
          TR1=1;
          while(P27==1);
          TR1=0;

          result=TH1*256+TL1;
          result=result*0.187-150; //距離計算
          k=(int)result;
          putchar(22);//顯示
          putchar(12);
          delay_ms(100);
          qian=k/1000+48;
          bai=(k00)/100+48;
          shi=(k00)0/10+48;
          ge=(k00)0+48;

          putchar(qian);
          putchar(bai);
          putchar(shi);
          putchar(ge);
          putchar(m);
          putchar(m);
          delay_ms(500);
          }
          }



          評論


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