標(biāo)題: 51單片機超聲波模塊HC_SR04代碼 [打印本頁]

作者: 無常    時間: 2019-7-7 16:31
標(biāo)題: 51單片機超聲波模塊HC_SR04代碼
非常簡潔!可直接調(diào)用。!


單片機源程序如下:
  1. #include "STC15Fxxxx.H"
  2. #include "hc_sr04.h"

  3. u16  time=0;
  4. u16  timer=0;
  5. bit  flag =0;

  6. void Delay45us()                //@11.0592MHz
  7. {
  8.         unsigned char i;

  9.         i = 122;
  10.         while (--i);
  11. }



  12. //========================================================================
  13. // 函數(shù): HC_SR04_Init()
  14. // 描述: 初始化HC_SR04所需硬件。
  15. // 參數(shù):
  16. // 返回: none.
  17. //========================================================================
  18. void HC_SR04_Init()
  19. {
  20.         TMOD |= 0x01;                //定時器0 16位不可重裝模式
  21.         TH0 = 0x00;                    // 設(shè)置定時初值
  22.         TL0 = 0x00;                    //設(shè)置定時初值
  23.         TR0=1;  
  24.         ET0=1;
  25.         EA=1;
  26. }


  27. //========================================================================
  28. // 函數(shù): HC_SR04_Start()
  29. // 描述: 開始發(fā)送聲波。
  30. // 參數(shù):
  31. // 返回: none.
  32. //========================================================================
  33. void HC_SR04_Start()
  34. {
  35.         Trig_Pin = 0;
  36.         Delay45us();
  37.         Trig_Pin = 1;
  38. }


  39. //========================================================================
  40. // 函數(shù): int HC_SR04_Loop()
  41. // 描述: 返回距離。
  42. // 參數(shù):  
  43. // 返回: distance:距離(單位:厘米).
  44. //========================================================================
  45. int HC_SR04_Loop()
  46. {
  47.         int distance;//distance|距離
  48.         HC_SR04_Start();
  49.          while(!Echo_Pin);                //Wait when RX is zero|當(dāng)RX為零時等待
  50.          TR0=1;                            //Opening count|開啟計數(shù)
  51.          while(Echo_Pin);                        //When RX counts to 1 and waits|當(dāng)RX為1計數(shù)并等待
  52.          TR0=0;                                //Closing count|關(guān)閉計數(shù)
  53.          time=TH0*256+TL0;
  54.          TH0=0;
  55.          TL0=0;
  56.          distance=(time*1.87)/100;     //算出來是CM
  57.         if(flag==1)                    //超出測量
  58.         {
  59.                 flag=0;
  60.                 distance=0;
  61.         }
  62.         return distance;
  63. }


  64. void zd0() interrupt 1                  //T0中斷用來計數(shù)器溢出,超過測距范圍
  65. {
  66.         flag=1;                                                         //中斷溢出標(biāo)志
  67. }
復(fù)制代碼

所有資料51hei提供下載:
HC_SR04.zip (60.9 KB, 下載次數(shù): 75)




作者: kakami    時間: 2019-8-3 09:33
有用謝謝




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1