欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3867|回復: 4
收起左側

STC15F2K60S2單片機調試超聲波HC-SR04測距經驗

[復制鏈接]
ID:235200 發表于 2019-8-5 22:27 | 顯示全部樓層 |閱讀模式
   經過一天的調試,終于把STC15F2K60S2單片機測量超聲波HC-SR04的程序搞定,主要存在問題是:
  1、單片機時鐘設置為22.1184MHz,而且采取1T模式運行時,觸發信號維持10us以上時間要采用延時函數 Delay_us(250)并一定達到10us以上。
  2、等待回聲接收的引腳echo要開啟接收,即echo=1;
  3、觸發信號發出后不能馬上開啟計數器計數,一定要等到有回聲信號時(echo被置為高)才開啟,為了防止回聲信號一直不出現,增加超時退出。
  4、測量時間(echo維持高電平時間)也增加超時退出,否則程序出現死機。
  5、禁止定時計數后要軟件清除一次中斷標志,因是檢測到echo回聲停止,此時不一定出現中斷(默認中斷清除)
  6、為保證測量精度,TH1TL1中的計數值要減去初值并除以22,因計數22次為1us。
具體子函數如下:
/*------------------------------------------------
     超聲波模塊觸發信號
------------------------------------------------*/
void trigger()
{
    trig=0;
          NOP(21);                             //延時  
    trig=1;
    Delay_us(250);                       //至少10us高電平
          trig=0;
}


/*------------------------------------------------
      超聲波模塊距離測試函數
------------------------------------------------*/
void measuring()      //晶振22.1184MHz
{  
           uint Return_time;                   //超聲波返回時間
    uint Wait_time;
          TL1 = 0x33;                                      //設置定時初值         2ms定時
          TH1 = 0x53;                                      //設置定時初值
          echo=1;                             //等待回聲(開啟輸入)
          trig=1;                             //初始狀態
          Ping_count=0;                       //時間計數初值
          trigger();                          //觸發
          Wait_time=0;
          while ((!echo)&(Wait_time++<10000)); //觸發后等待echo出現高電平或超時不出現高電平
    TR1 = 1;                            //啟動定時計數器T1
          Wait_time=0;
    while((echo)&(Wait_time++<10000));  //等待echo=0或超時不出現低電平
    TR1 = 0;                             //停止計數
          TF1 = 0;                             //因不是響應中斷停止,故軟件清除
    Return_time = (TH1<< 8) + TL1;
    Return_time = (Return_time - 0x5333)/22;     //多計時us部分    計數22次為1us
    Return_time = 2000*Ping_count + Return_time; //計算總時間,單位是微秒
    distance = 34.0*Return_time/200;             //計算距離為mm:(34毫米*時間/200)
}

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:586048 發表于 2019-8-5 23:16 | 顯示全部樓層
試試看,最近也在調試超聲波,隨便問一下樓主精度怎么樣
回復

使用道具 舉報

ID:235200 發表于 2019-8-6 22:37 | 顯示全部樓層
誤差2mm
回復

使用道具 舉報

ID:438451 發表于 2019-11-8 20:34 | 顯示全部樓層
樓主有沒有具體的例程啊
回復

使用道具 舉報

ID:669104 發表于 2019-12-20 22:14 來自觸屏版 | 顯示全部樓層
能具體講講怎么用keil調試的嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表