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

標(biāo)題: 動(dòng)手制作超聲波測(cè)距板,為避障小車作準(zhǔn)備 [打印本頁]

作者: dzdiy    時(shí)間: 2015-4-11 19:08
標(biāo)題: 動(dòng)手制作超聲波測(cè)距板,為避障小車作準(zhǔn)備
本帖最后由 dzdiy 于 2015-4-11 20:33 編輯

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



超聲波測(cè)距源程序: 超聲波測(cè)距模塊程序包.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;//超聲波測(cè)距模塊//

  6. sbit echo=P3^2;

  7. bit flag1;//觸發(fā)信號(hào)標(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,整屏不移動(dòng)//

  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)信號(hào)時(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ā)信號(hào)………………………………………//

  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. //…………………………………………………………測(cè)距相關(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);//每次測(cè)量間隔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ù)制代碼





作者: 6ningning    時(shí)間: 2015-4-12 14:33
不錯(cuò)。
作者: Orz123    時(shí)間: 2017-3-22 21:38
電路和焊接能發(fā)下嗎,小白傷不起
作者: 13756176595    時(shí)間: 2017-7-28 20:08
Orz123 發(fā)表于 2017-3-22 21:38
電路和焊接能發(fā)下嗎,小白傷不起

同上

作者: Kinarmy    時(shí)間: 2018-5-16 22:27
可以發(fā)張接線的圖片么?新手不是很懂




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