久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2628|回復: 0
收起左側

超聲波測距資料(HC-SR04)Arduino UNO與單片機例程

[復制鏈接]
ID:261077 發表于 2017-12-13 14:36 | 顯示全部樓層 |閱讀模式
1、庫文件使用:請將庫文件解壓后以文件夾格式拖至Arduino文件夾下的Libraries文件夾里。
    例:C:\Program Files (x86)\Arduino\libraries
注:無庫文件的,為Arduino IDE自帶庫,無需添加。
2、原理圖與技術手冊為廠家提供,僅供參考使用,不提供技術支持。
0.png

所有資料51hei提供下載:
超聲波模塊.rar (5.46 MB, 下載次數: 23)


單片機源程序如下:
  1. /**********************HL-1實驗開發板例程************************
  2. *                文件名稱:led.c
  3. *                功能描述:本例程為超聲波測距的學習。使用前先根據超聲波模塊的IO修改本程序的端口定義。
  4. *                                        本例程為網絡資料搜集整理 。
  5. *                使用環境:TS-51A開發板 + STC89C52 + 11.0592M晶振 + Keil C51 V9.0
  6. *                QQ      : 10903659
  7. *                QQ群    :336397723  336398729   336398900
  8. ******************************************************************/
  9. /**********************************包含頭文件**********************************/
  10. #include <reg52.h>
  11. #include "1602.h"
  12. /************************************宏定義************************************/
  13. #define VELOCITY_30C        3495       //30攝氏度時的聲速,聲速V= 331.5 + 0.6*溫度;
  14. #define VELOCITY_23C        3453       //23攝氏度時的聲速,聲速V= 331.5 + 0.6*溫度;
  15. /************************************位定義************************************/
  16. sbit INPUT  = P3^2;                //回聲接收端口
  17. sbit OUTPUT = P1^4;                //超聲觸發端口
  18. sbit Beep   = P2^2;                           // 蜂鳴器 
  19. /********************************定義變量和數組********************************/
  20. long int distance=0;               //距離變量
  21. uchar table[]  = "                ";
  22. uchar table0[] = "    TS-51A      ";
  23. uchar table1[] = "There's no echo.";
  24. uchar table2[] = "    TS-51A      ";
  25. uchar table3[] = "Distance:";
  26. uchar count;
  27. /***********************************函數聲明***********************************/
  28. extern void initLCD();
  29. extern void write_date(uchar date);
  30. extern void write_com(uchar com);
  31. extern void delay(uint x);
  32. /******************************************************************************/
  33. /* 函數名稱  : Delay_xMs                                                      */
  34. /* 函數描述  : 延時函數                                                       */
  35. /* 輸入參數  : x                                                              */
  36. /* 參數描述  : 延時時間                                                       */
  37. /* 返回值    : 無                                                             */
  38. /******************************************************************************/
  39. void Delay_xMs(unsigned int x)
  40. {
  41.     unsigned int i,j;
  42.     for(i = 0;i < x;i++ )
  43.     {
  44.         for(j = 0;j < 3;j++ )
  45.         {
  46.             ;
  47.         }
  48.     }
  49. }
  50. /******************************************************************************/
  51. /* 函數名稱  : Alarm                                                          */
  52. /* 函數描述  : 蜂鳴器發聲函數                                                 */
  53. /* 輸入參數  : t                                                              */
  54. /* 參數描述  : 發聲的次數                                                     */
  55. /* 返回值    : 無                                                             */
  56. /******************************************************************************/
  57. void Alarm(uchar t)
  58. {
  59.         uchar i;
  60.         for(i = 0;i < t;i++)
  61.         {
  62.                 Beep = 0;
  63.                 Delay_xMs(1000);
  64.                 Beep = 1;
  65.                 Delay_xMs(1000);
  66.         }
  67. }        
  68. /******************************************************************************/
  69. /* 函數名稱  : delayt                                                         */
  70. /* 函數描述  : 延時函數                                                       */
  71. /* 輸入參數  : x                                                              */
  72. /* 參數描述  : 延時時間數據                                                   */
  73. /* 返回值    : 無                                                             */
  74. /******************************************************************************/        
  75. void delayt(uint x)
  76. {
  77.     uchar j;
  78.     while(x-- > 0)
  79.     {
  80.               for(j = 0;j < 125;j++)
  81.         {
  82.             ;
  83.         }
  84.     }
  85. }
  86. /******************************************************************************/
  87. /* 函數名稱  : Init_MCU                                                       */
  88. /* 函數描述  : 初始化單片機函數                                               */
  89. /* 輸入參數  : 無                                                             */
  90. /* 參數描述  : 無                                                             */
  91. /* 返回值    : 無                                                             */
  92. /******************************************************************************/
  93. void Init_MCU(void)
  94. {
  95.         TMOD = 0x01;          //定時器2初始化,設置為16位自動重裝模式
  96.          TL0 = 0x66;
  97.         TH0 = 0xfc;              //1ms
  98.     ET0 = 1;              //開定時器2
  99.         EA = 1;                      //總中斷使能
  100. }
  101. /******************************************************************************/
  102. /* 函數名稱  : Init_Parameter                                                 */
  103. /* 函數描述  : 初始化參數和IO口函數                                           */
  104. /* 輸入參數  : 無                                                             */
  105. /* 參數描述  : 無                                                             */
  106. /* 返回值    : 無                                                             */
  107. /******************************************************************************/
  108. void Init_Parameter(void)
  109. {
  110.          OUTPUT =1;
  111.          INPUT = 1;
  112.          count = 0;
  113.          distance = 0;
  114. }
  115. /******************************************************************************/
  116. /* 函數名稱  : display_char                                                   */
  117. /* 函數描述  : 顯示字符串函數                                                 */
  118. /* 輸入參數  : point,address                                                  */
  119. /* 參數描述  : 寫入的字符串的地址指針 1602顯示對應的地址                      */
  120. /* 返回值    : 無                                                             */
  121. /******************************************************************************/
  122. void display_char(uchar *point,uchar address)
  123. {
  124.         uchar i;
  125.         write_com(0x80 + address);
  126.         for(i = 0;i < 16; i++)
  127.         {
  128.                 write_date(*point);
  129.                 point++;
  130.         }
  131. }
  132. /******************************************************************************/
  133. /* 函數名稱  : display                                                        */
  134. /* 函數描述  : 顯示數字                                                       */
  135. /* 輸入參數  : number,address                                                */
  136. /* 參數描述  : number寫入的數據,address地址                                  */
  137. /* 返回值    : 無                                                             */
  138. /******************************************************************************/        
  139. void display(int number,uchar address)
  140. {
  141.         uchar b,c,d,e;
  142.         b= (number / 1000);
  143.         c= (number / 100) % 10;
  144.         d = (number / 10) % 10;
  145.         e = number % 10;

  146.         write_com(0x80 + address);
  147.     write_date(b + 48);
  148.         write_date(c + 48);
  149.         write_date(d + 48);
  150.         write_date(46);           //小數點的ASCII
  151.         write_date(e + 48);
  152.     write_date(99);           //"c"的ASCII
  153.         write_date(109);          //"m"的ASCII
  154. }
  155. /******************************************************************************/
  156. /* 函數名稱  : Trig_SuperSonic                                                */
  157. /* 函數描述  : 發出聲波函數                                                   */
  158. /* 輸入參數  : 無                                                             */
  159. /* 參數描述  : 無                                                             */
  160. /* 返回值    : 無                                                             */
  161. /******************************************************************************/
  162. void Trig_SuperSonic(void)//出發聲波
  163. {
  164.          OUTPUT = 1;
  165.          delayt(1);
  166.          OUTPUT = 0;
  167. }
  168. /******************************************************************************/
  169. /* 函數名稱  : Measure_Distance                                               */
  170. /* 函數描述  : 計算距離函數                                                   */
  171. /* 輸入參數  : 無                                                             */
  172. /* 參數描述  : 無                                                             */
  173. /* 返回值    : 無                                                             */
  174. /******************************************************************************/
  175. void Measure_Distance(void)
  176. {
  177.         uchar l;
  178.         uint h,y;
  179.         TR0 = 1;
  180.         while(INPUT)
  181.     {
  182.         ;
  183.     }        
  184.         TR0 = 0;
  185.         l = TL0;
  186.         h = TH0;
  187.         y = (h << 8) + l;
  188.         y = y - 0xfc66;//us部分
  189.         distance = y + 1000 * count;//計算總時間
  190.         TL0 = 0x66;
  191.         TH0 = 0xfc;
  192.         delayt(30);
  193.         distance = VELOCITY_30C * distance / 20000;
  194. }
  195. /******************************************************************************/
  196. /* 函數名稱  : main                                                           */
  197. /* 函數描述  : 主函數                                                         */
  198. /* 輸入參數  : 無                                                             */
  199. /* 參數描述  : 無                                                             */
  200. /* 返回值    : 無                                                             */
  201. /******************************************************************************/                                       
  202. void main(void)
  203. {        
  204.     rw = 0;
  205.         initLCD();
  206.         Init_MCU();
  207.         Init_Parameter();
  208.         Alarm(2);
  209.         display_char(table,0x00);
  210.         display_char(table0,0x40);
  211.         Delay_xMs(30000);
  212.         display_char(table2,0x00);
  213.         display_char(table1,0x40);

  214.         while(1)
  215.         {
  216.                  Trig_SuperSonic();         //觸發超聲波發射
  217.                  while(INPUT == 0)          //等待回聲
  218.          {
  219.              ;
  220.          }
  221.                  Measure_Distance();        //計算脈寬并轉換為距離
  222. ……………………

  223. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www日本在线| 精品久草 | www.9191.com| 欧美三级免费观看 | 久草网站 | 午夜看看 | 亚洲国产欧美精品 | 欧美自拍网站 | 婷婷色网| 亚洲成人免费视频在线 | 欧美亚洲一级 | jlzzjlzz国产精品久久 | 色偷偷噜噜噜亚洲男人 | 精品av久久久久电影 | zzzwww在线看片免费 | 成人精品毛片国产亚洲av十九禁 | 欧美aaa级 | 在线观看精品视频网站 | 久久久免费在线观看 | 日韩欧美日韩在线 | 成人福利视频网站 | 久久一区二区三区四区五区 | 一区二区三区四区不卡 | 狠狠插狠狠操 | 精品综合 | 国产在线色 | 亚洲精品中文在线观看 | 少妇久久久 | 亚洲福利一区二区 | 国产精品一码二码三码在线 | 成人欧美一区二区三区色青冈 | 精品视频一区二区 | 国产福利在线视频 | 久草福利| 日韩视频免费看 | 国精日本亚洲欧州国产中文久久 | 91天堂 | 雨宫琴音一区二区在线 | 情侣黄网站免费看 | 亚洲福利一区 | 久久国产精品一区二区 |