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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2539|回復: 1
收起左側

51單片機超聲波模塊HC_SR04代碼

[復制鏈接]
ID:283906 發表于 2019-7-7 16:31 | 顯示全部樓層 |閱讀模式
非常簡潔!可直接調用!!!
QX]]2A~KZX8S[}TNR1YG{JP.png 3`RY9SXS8CUO4`L5`V38}XR.png

單片機源程序如下:
  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. // 函數: HC_SR04_Init()
  14. // 描述: 初始化HC_SR04所需硬件。
  15. // 參數:
  16. // 返回: none.
  17. //========================================================================
  18. void HC_SR04_Init()
  19. {
  20.         TMOD |= 0x01;                //定時器0 16位不可重裝模式
  21.         TH0 = 0x00;                    // 設置定時初值
  22.         TL0 = 0x00;                    //設置定時初值
  23.         TR0=1;  
  24.         ET0=1;
  25.         EA=1;
  26. }


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


  39. //========================================================================
  40. // 函數: int HC_SR04_Loop()
  41. // 描述: 返回距離。
  42. // 參數:  
  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|當RX為零時等待
  50.          TR0=1;                            //Opening count|開啟計數
  51.          while(Echo_Pin);                        //When RX counts to 1 and waits|當RX為1計數并等待
  52.          TR0=0;                                //Closing count|關閉計數
  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中斷用來計數器溢出,超過測距范圍
  65. {
  66.         flag=1;                                                         //中斷溢出標志
  67. }
復制代碼

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



回復

使用道具 舉報

ID:589945 發表于 2019-8-3 09:33 | 顯示全部樓層
有用謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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