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

標(biāo)題: 超聲波測(cè)距資料(HC-SR04)Arduino UNO與單片機(jī)例程 [打印本頁(yè)]

作者: 932012779    時(shí)間: 2017-12-13 14:36
標(biāo)題: 超聲波測(cè)距資料(HC-SR04)Arduino UNO與單片機(jī)例程
1、庫(kù)文件使用:請(qǐng)將庫(kù)文件解壓后以文件夾格式拖至Arduino文件夾下的Libraries文件夾里。
    例:C:\Program Files (x86)\Arduino\libraries
注:無庫(kù)文件的,為Arduino IDE自帶庫(kù),無需添加。
2、原理圖與技術(shù)手冊(cè)為廠家提供,僅供參考使用,不提供技術(shù)支持。


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


單片機(jī)源程序如下:
  1. /**********************HL-1實(shí)驗(yàn)開發(fā)板例程************************
  2. *                文件名稱:led.c
  3. *                功能描述:本例程為超聲波測(cè)距的學(xué)習(xí)。使用前先根據(jù)超聲波模塊的IO修改本程序的端口定義。
  4. *                                        本例程為網(wǎng)絡(luò)資料搜集整理 。
  5. *                使用環(huán)境:TS-51A開發(fā)板 + 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攝氏度時(shí)的聲速,聲速V= 331.5 + 0.6*溫度;
  14. #define VELOCITY_23C        3453       //23攝氏度時(shí)的聲速,聲速V= 331.5 + 0.6*溫度;
  15. /************************************位定義************************************/
  16. sbit INPUT  = P3^2;                //回聲接收端口
  17. sbit OUTPUT = P1^4;                //超聲觸發(fā)端口
  18. sbit Beep   = P2^2;                           // 蜂鳴器 
  19. /********************************定義變量和數(shù)組********************************/
  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. /***********************************函數(shù)聲明***********************************/
  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. /* 函數(shù)名稱  : Delay_xMs                                                      */
  34. /* 函數(shù)描述  : 延時(shí)函數(shù)                                                       */
  35. /* 輸入?yún)?shù)  : x                                                              */
  36. /* 參數(shù)描述  : 延時(shí)時(shí)間                                                       */
  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. /* 函數(shù)名稱  : Alarm                                                          */
  52. /* 函數(shù)描述  : 蜂鳴器發(fā)聲函數(shù)                                                 */
  53. /* 輸入?yún)?shù)  : t                                                              */
  54. /* 參數(shù)描述  : 發(fā)聲的次數(shù)                                                     */
  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. /* 函數(shù)名稱  : delayt                                                         */
  70. /* 函數(shù)描述  : 延時(shí)函數(shù)                                                       */
  71. /* 輸入?yún)?shù)  : x                                                              */
  72. /* 參數(shù)描述  : 延時(shí)時(shí)間數(shù)據(jù)                                                   */
  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. /* 函數(shù)名稱  : Init_MCU                                                       */
  88. /* 函數(shù)描述  : 初始化單片機(jī)函數(shù)                                               */
  89. /* 輸入?yún)?shù)  : 無                                                             */
  90. /* 參數(shù)描述  : 無                                                             */
  91. /* 返回值    : 無                                                             */
  92. /******************************************************************************/
  93. void Init_MCU(void)
  94. {
  95.         TMOD = 0x01;          //定時(shí)器2初始化,設(shè)置為16位自動(dòng)重裝模式
  96.          TL0 = 0x66;
  97.         TH0 = 0xfc;              //1ms
  98.     ET0 = 1;              //開定時(shí)器2
  99.         EA = 1;                      //總中斷使能
  100. }
  101. /******************************************************************************/
  102. /* 函數(shù)名稱  : Init_Parameter                                                 */
  103. /* 函數(shù)描述  : 初始化參數(shù)和IO口函數(shù)                                           */
  104. /* 輸入?yún)?shù)  : 無                                                             */
  105. /* 參數(shù)描述  : 無                                                             */
  106. /* 返回值    : 無                                                             */
  107. /******************************************************************************/
  108. void Init_Parameter(void)
  109. {
  110.          OUTPUT =1;
  111.          INPUT = 1;
  112.          count = 0;
  113.          distance = 0;
  114. }
  115. /******************************************************************************/
  116. /* 函數(shù)名稱  : display_char                                                   */
  117. /* 函數(shù)描述  : 顯示字符串函數(shù)                                                 */
  118. /* 輸入?yún)?shù)  : point,address                                                  */
  119. /* 參數(shù)描述  : 寫入的字符串的地址指針 1602顯示對(duì)應(yīng)的地址                      */
  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. /* 函數(shù)名稱  : display                                                        */
  134. /* 函數(shù)描述  : 顯示數(shù)字                                                       */
  135. /* 輸入?yún)?shù)  : number,address                                                */
  136. /* 參數(shù)描述  : number寫入的數(shù)據(jù),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);           //小數(shù)點(diǎn)的ASCII
  151.         write_date(e + 48);
  152.     write_date(99);           //"c"的ASCII
  153.         write_date(109);          //"m"的ASCII
  154. }
  155. /******************************************************************************/
  156. /* 函數(shù)名稱  : Trig_SuperSonic                                                */
  157. /* 函數(shù)描述  : 發(fā)出聲波函數(shù)                                                   */
  158. /* 輸入?yún)?shù)  : 無                                                             */
  159. /* 參數(shù)描述  : 無                                                             */
  160. /* 返回值    : 無                                                             */
  161. /******************************************************************************/
  162. void Trig_SuperSonic(void)//出發(fā)聲波
  163. {
  164.          OUTPUT = 1;
  165.          delayt(1);
  166.          OUTPUT = 0;
  167. }
  168. /******************************************************************************/
  169. /* 函數(shù)名稱  : Measure_Distance                                               */
  170. /* 函數(shù)描述  : 計(jì)算距離函數(shù)                                                   */
  171. /* 輸入?yún)?shù)  : 無                                                             */
  172. /* 參數(shù)描述  : 無                                                             */
  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;//計(jì)算總時(shí)間
  190.         TL0 = 0x66;
  191.         TH0 = 0xfc;
  192.         delayt(30);
  193.         distance = VELOCITY_30C * distance / 20000;
  194. }
  195. /******************************************************************************/
  196. /* 函數(shù)名稱  : main                                                           */
  197. /* 函數(shù)描述  : 主函數(shù)                                                         */
  198. /* 輸入?yún)?shù)  : 無                                                             */
  199. /* 參數(shù)描述  : 無                                                             */
  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();         //觸發(fā)超聲波發(fā)射
  217.                  while(INPUT == 0)          //等待回聲
  218.          {
  219.              ;
  220.          }
  221.                  Measure_Distance();        //計(jì)算脈寬并轉(zhuǎn)換為距離
  222. ……………………

  223. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼







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