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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5923|回復(fù): 4
收起左側(cè)

動手制作超聲波測距板,為避障小車作準(zhǔn)備

[復(fù)制鏈接]
ID:76686 發(fā)表于 2015-4-11 19:08 | 顯示全部樓層 |閱讀模式
本帖最后由 dzdiy 于 2015-4-11 20:33 編輯

    就是這個(gè)超聲波測距,我有元件,只是不齊全,所以就買了一個(gè)測距模塊,制作了一個(gè)超聲波測距板。一切都用洞洞板焊,自己搭建電路,那樣學(xué)得到更多東西,用套件的話,學(xué)到的只是編程,硬件原理就會有空缺。自己自學(xué)單片機(jī)也有一段時(shí)間了,看來還是要檢測一下自己的能力才行,想來想去,覺得小車很不錯(cuò),如果我可以一獨(dú)立制作出自己的小車,哪是一件不錯(cuò)的事,所以從今天起,我開始制作和編寫自己的小車,還是一步一步來哈。超聲波測距只是第一步。下載超聲波測距程序包



超聲波測距源程序: 超聲波測距模塊程序包.zip (28.17 KB, 下載次數(shù): 31)
  1. #include<reg52.h>

  2. #include <intrins.h>

  3. #define uint unsigned int

  4. #define uchar unsigned char


  5. sbit trig=P1^5;//超聲波測距模塊//

  6. sbit echo=P3^2;

  7. bit flag1;//觸發(fā)信號標(biāo)志位//


  8. sbit EN=P2^5;  //1602相關(guān)端口定義//

  9. sbit RS=P1^0;

  10. sbit RW=P1^1;

  11. sbit STA7=P0^7;


  12. uchar count;

  13. long int distance;//距離變量//


  14. //………………………………延時(shí)函數(shù)…………………………//

  15. void delayt(uint x)

  16. {

  17.     uchar j;

  18.     while(x-- > 0)

  19.     {

  20.      for(j = 0;j < 125;j++)

  21.         {

  22.             ;

  23.         }

  24.     }

  25. }


  26. //……………………LCD1602相關(guān)函數(shù)…………………………//

  27. void panmang()//1602判忙//

  28. {

  29. P0=0xff;

  30. do

  31. {

  32. RS=0;

  33. RW=1;

  34. EN=0;

  35. EN=1;

  36. }

  37. while(STA7==1);

  38. EN=0;

  39. }

  40. void w_data(uchar dat)//1602寫數(shù)據(jù)//

  41. {

  42. panmang();

  43. EN=0;

  44. P0=dat;

  45. RS=1;

  46. RW=0;

  47. EN=1;

  48. EN=0;

  49. }

  50. void w_cmd(uchar cmd)//1602寫指令//

  51. {

  52. panmang();

  53. EN=0;

  54. P0=cmd;

  55. RS=0;

  56. RW=0;

  57. EN=1;

  58. EN=0;

  59. }

  60. void init_1602()//1602初始化//

  61. {

  62. w_cmd(0x38);//設(shè)置16x2顯示,5x7點(diǎn)陣,8位數(shù)據(jù)接口//

  63. w_cmd(0x0c);//設(shè)置開顯示,光標(biāo)不顯示,光標(biāo)不閃爍//

  64. w_cmd(0x06);//設(shè)置當(dāng)讀或?qū)懸粋(gè)字符后地址指針加1,且光標(biāo)加1,整屏不移動//

  65. w_cmd(0x01);//清屏//

  66. w_cmd(0x80+0x40);

  67. w_data('D');

  68. w_data('i');

  69. w_data('s');

  70. w_data('t');

  71. w_data('a');

  72. w_data('n');

  73. w_data('c');

  74. w_data('e');

  75. w_data(':');

  76. w_cmd(0x80+0x4c);

  77. w_data('.');

  78. w_cmd(0x80+0x4e);//單位是厘米//

  79. w_data('c');

  80. w_data('m');

  81. }

  82. //……………………………………………定時(shí)器1初始化,用于計(jì)算響應(yīng)信號時(shí)間……………………………………………//

  83. void init_t0()

  84. {

  85. TMOD = 0x01;  

  86.   TL0 = 0x66;

  87. TH0 = 0xfc;      //1ms

  88.     ET0 = 1;     

  89. EA = 1;      

  90. }

  91. //………………………………………觸發(fā)信號………………………………………//

  92. void trigger()

  93. {

  94. trig=1;

  95. delayt(1);

  96. trig=0;

  97. }

  98. //……………………………………………………初始化相應(yīng)端口及變量…………………………………………………………//

  99. void init_measuring()

  100. {

  101. trig=0;

  102. echo=0;

  103. count=0;

  104. }

  105. //…………………………………………………………測距相關(guān)函數(shù)……………………………………………………………………//

  106. void measuring()

  107. {

  108. uchar l;

  109. uint h,y;

  110. TR0 = 1;

  111. while(echo)

  112.     {

  113.         ;

  114.     }

  115. TR0 = 0;

  116. l = TL0;

  117. h = TH0;

  118. y = (h << 8) + l;

  119. y = y - 0xfc66;//us部分

  120. distance = y + 1000 * count;//計(jì)算總時(shí)間,單位是微秒

  121. TL0 = 0x66;

  122. TH0 = 0xfc;

  123. delayt(30);

  124. distance = 3453* distance / 20000;//原始為:(0.34毫米/us)*時(shí)間/2//

  125. }

  126. //……………………………………………顯示函數(shù)………………………………………………………//

  127. void display(uint x)

  128. {

  129. uchar qian,bai,shi,ge;

  130. qian=x/1000;

  131. bai=(x/100)%10;

  132. shi=(x/10)%10;

  133. ge=x%10;

  134. w_cmd(0x80+0x49);//單位是厘米//

  135. w_data(qian+0x30);

  136. w_data(bai+0x30);

  137. w_data(shi+0x30);

  138. w_cmd(0x80+0x4d);

  139. w_data(ge+0x30);

  140. }

  141. //……………………………………………………主函數(shù)……………………………………………………//

  142. void main()

  143. {

  144. init_1602();

  145. init_t0();

  146. init_measuring();

  147. while(1)

  148. {

  149. trigger();

  150. while(echo==0)          //等待回聲

  151.          {

  152.              ;

  153.          }

  154. measuring();

  155. display(distance);

  156. init_measuring();

  157. delayt(600);//每次測量間隔60ms//

  158. }

  159. }

  160. //……………………………………………中斷服務(wù)函數(shù)…………………………………………………//

  161. void T_0()interrupt 1

  162. {

  163. TF0 = 0;

  164. TL0 = 0x66;

  165. TH0 = 0xfc;

  166. count++;

  167. if(count==18)

  168. {

  169. TR0 =0;

  170. TL0 = 0x66;

  171. TH0 = 0xfc;

  172. count = 0;

  173. }

  174. }
復(fù)制代碼




回復(fù)

使用道具 舉報(bào)

ID:68477 發(fā)表于 2015-4-12 14:33 | 顯示全部樓層
不錯(cuò)。
回復(fù)

使用道具 舉報(bào)

ID:180024 發(fā)表于 2017-3-22 21:38 | 顯示全部樓層
電路和焊接能發(fā)下嗎,小白傷不起
回復(fù)

使用道具 舉報(bào)

ID:197204 發(fā)表于 2017-7-28 20:08 | 顯示全部樓層
Orz123 發(fā)表于 2017-3-22 21:38
電路和焊接能發(fā)下嗎,小白傷不起

同上
回復(fù)

使用道具 舉報(bào)

ID:329997 發(fā)表于 2018-5-16 22:27 | 顯示全部樓層
可以發(fā)張接線的圖片么?新手不是很懂
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人福利在线观看 | 欧美日韩a | 视频精品一区二区三区 | 久久日本| 成人在线精品视频 | 男人的天堂在线视频 | 一区二区免费高清视频 | 亚洲精品视频在线观看视频 | 日韩一区二区三区精品 | 天天干天天干 | 蜜臀av日日欢夜夜爽一区 | 欧美性生活网 | 亚洲精品免费看 | 日韩欧美在线观看一区 | 国产精品久久久久久久久 | 久久黄视频 | 99精品欧美一区二区三区综合在线 | 欧美精品一二三区 | 日韩视频在线免费观看 | 精品久久久久久久人人人人传媒 | 久久久久免费精品国产 | 天天躁人人躁人人躁狂躁 | 在线观看亚洲专区 | 国产精品国产三级国产aⅴ中文 | 亚洲精品无 | 久久精品国产精品青草 | 国产wwwcom| 久久久久9999| 欧美中文字幕一区二区三区亚洲 | 午夜爽爽爽男女免费观看 | 日日噜噜噜夜夜爽爽狠狠视频97 | 国产在线播 | 一级看片免费视频囗交动图 | 国产欧美一区二区三区久久手机版 | 91免费电影| 国产精品久久久久久久久久久久午夜片 | 久久久综合精品 | 妖精视频一区二区三区 | 色就干 | 精品久久成人 | 罗宾被扒开腿做同人网站 |