找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2696|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于msp430f149單片機的SR04的超聲波源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:809369 發(fā)表于 2021-7-20 22:30 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
超聲波測距模塊有好多種類型,目前比較常用的有URM37超聲波傳感器默認(rèn)是232接口,可以調(diào)為TTL接口,URM05大功率超聲波傳感器測試距離能到10米,算是目前來說測試距離比較遠(yuǎn)的一款了,另外還有比較常用的國外的幾款SRF系列的超聲波模塊,目前的超聲波模塊精度能到1cm。

1.模塊簡介

HC-SR04超聲波模塊常用于機器人避障、物體測距、液位檢測、公共安防、停車場檢測等場所。HC-SR04超聲波模塊主要是由兩個通用的壓電陶瓷超聲傳感器,并加外圍信號處理電路構(gòu)成的。

2. 模塊參數(shù)


(1)模塊主要電氣參數(shù)

使用電壓:DC---5V   靜態(tài)電流:小于2mA       電平輸出:高5V     電平輸出:低0V         

感應(yīng)角度:不大于15度   

探測距離:2cm-450cm

高精度 可達(dá)0.2cm

  超聲波模塊有4個引腳,分別為Vcc、  Trig(控制端)、  Echo(接收端)、 GND;其中VCC、GND接上5V電源, Trig(控制端)控制發(fā)出的超聲波信號,Echo(接收端)接收反射回來的超聲波信號。

  此次調(diào)試主要是調(diào)試的是基于msp430f149的超聲波測距的,沒有外加顯示,有需要的小伙伴可以持續(xù)關(guān)注,后續(xù)會發(fā)布相應(yīng)的帖子。

  超聲波的使用,使用了定時器A的定時和對上升沿和下降沿的捕獲等;全部代碼在附加件中,歡迎大家下載和交流!

部分代碼如下:

#pragma vector=TIMERA1_VECTOR

__interrupt void Timer_A(void)

{


  switch(TAIV)

  {

    case 2 :if(Edge==RISE)

              {

                RiseCapVal = TACCR1;

                TACCTL1 |= CAP+CM_2+CCIS_0+SCS+CCIE;//改為下降沿捕獲

                Edge = FALL;//下降沿捕獲標(biāo)志

              }

            else

              {


                _DINT();

                Period = TACCR1-RiseCapVal;  //這里要注意是否考慮溢出,跟測試距離有關(guān),希望大家拓展

                S=(Period*17)/100;   // 距離計算 s=340m/s*Period/2*10^(-6)*1000(mm)

                TACCR1 = 0;

                TACCTL1|= CAP+CM_1+CCIS_0+SCS+CCIE;//改為上升沿捕獲

                Edge = RISE;//上升沿捕獲標(biāo)志

                _EINT();

              }

             break;

    case 4 : break;

    case 10: //TA_Overflow_Cnt++;   //溢出標(biāo)志

             break;

  }

}


void init_timerA(void)

{

  TACTL   |= TASSEL_2+MC_2+TAIE+TACLR+ ID_3;//SMCLK,8MHz,8分頻,連續(xù)計數(shù),中斷允許,計數(shù)器清零

  TACCTL1 |= CAP+CM_1+CCIS_0+SCS+CCIE;//捕獲模式,上升沿捕獲(CM_2),CCI1A輸入,同步捕獲,中斷允許

}


void init_IO(void)

{

  P1DIR |= BIT1;   //P1.1輸出,普通I/O

  P1DIR &=~ BIT2;  //P1.2輸入

  P1SEL |=  BIT2; //P1.2第二功能,捕獲輸入


  P1OUT &=~BIT1;  // 開始低電平,控制驅(qū)動波形發(fā)生

}


void init_clk(void)

{

    uchar i;

    BCSCTL1&=~XT2OFF;   //打開XT振蕩器

    BCSCTL2|=SELM_2+SELS;//MCLK 8M and SMCLK 8M

    do

    {

      IFG1 &= ~OFIFG;//清除振蕩錯誤標(biāo)志

      for(i = 0; i < 0xff; i++)  _NOP();//延時等待

    }

    while ((IFG1 & OFIFG) != 0);//如果標(biāo)志為1繼續(xù)循環(huán)等待晶振起振

    IFG1&=~OFIFG;


}



全部代碼51hei下載地址:
單純的超聲波測距.zip (116.21 KB, 下載次數(shù): 16)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表