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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5533|回復: 3
打印 上一主題 下一主題
收起左側

超聲波避障小車程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:72519 發表于 2015-1-21 22:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define  uint unsigned int
  4. sbit motor0=P1^0;//電機定義P1^0到P1^3正轉,P1^4到P1^5反轉;
  5. sbit motor1=P1^1;
  6. sbit motor2=P1^2;
  7. sbit motor3=P1^3;
  8. sbit motor4=P1^4;
  9. sbit motor5=P1^5;
  10. sbit motor6=P1^6;
  11. sbit motor7=P1^7;
  12. sbit pwm=P2^7; //舵機PWM信號輸出
  13. sbit trig=P3^1;//超聲波輸入口
  14. sbit echo=P3^2;//超聲波輸出口
  15. uchar flag,i,count,jd;
  16. uchar b,low,k,high,d,e,f,h;//PWM調速高低電平定義
  17. uint time,s;
  18. /////////
  19. void delay(uint z)
  20. {
  21. uint x,y;
  22. for(x=z;x>0;x--)
  23. for(y=100;y>0;y--);
  24. }
  25. ///////
  26. void delay1(uchar k)//延時
  27. {
  28. uchar i,j;
  29. for(i=k;i>0;i--)
  30. for(j=110;j>0;j--);
  31. }
  32. ////////
  33. void delay20us()
  34. {
  35. uint a;
  36. for(a=0;a<100;a++);
  37. }
  38. /////////////
  39. void init()
  40. {
  41. TMOD=0x11;
  42. TH0=0;
  43. TL0=0;
  44. TH1=(65536-100)/256;//11.0592MHZ晶振,0.5ms
  45. TL1=(65536-100)%256;
  46. TR1=1; //定時起開始
  47. EA=1;
  48. //ET0=1;
  49. //ET1=1;
  50. }
  51. void estern() interrupt 0
  52. {
  53. flag=1;
  54. }
  55. void calculate()//超聲波轉換
  56. {
  57. time=TH0*256+TL0;
  58. TH0=0;
  59. TL0=0;
  60. s=time/58;
  61. //display();
  62. }
  63. ////////
  64. void qudong()//前后電機PWM調速處理
  65. {
  66. uchar i;
  67. if(low!=0)
  68. {
  69.   for(i=0;i<low;i++)
  70.   {
  71.   if(b==0)
  72.   {
  73.   motor0=0;
  74.   motor1=0;
  75.   motor2=0;
  76.   motor3=0;
  77.   delay1(5);
  78.   }
  79.   }
  80. }
  81. for(i=0;i<high;i++)
  82.   {
  83.   if(b==0)
  84.   {
  85.   motor0=1;
  86.   motor1=1;
  87.   motor2=1;
  88.   motor3=1;
  89.   delay1(5);
  90.   }
  91.   }
  92. }
  93. void  ultrasonic()//超聲波處理
  94. {
  95. trig=1;
  96. delay20us();
  97. trig=0;
  98. while(!echo);
  99. TR0=1;
  100. while(echo);
  101. TR0=0;
  102. calculate();
  103. delay(20);
  104. //display();
  105. }
  106. void bb()//距離判斷
  107. {
  108. uchar x=5;
  109. if((s<10)&&(jd==12))
  110. {  motor0=0;
  111.   motor1=0;
  112.   motor2=0;
  113.   motor3=0;
  114.   motor4=0;
  115. motor5=0;
  116. motor6=0;
  117. motor7=0;

  118.   ET1=0;
  119.      ultrasonic();
  120. while(x--)
  121. {
  122.   d=s;
  123. delay(2);
  124. }

  125. ET1=1;
  126. jd=5;
  127.   delay(500);
  128. ET0=0;
  129. }
  130.   else
  131.   {
  132. ET0=1;
  133. }
  134. if(jd==5)
  135. {   ET1=0;
  136.    ultrasonic();
  137.     while(x--)
  138. {
  139.    e=s;
  140. delay(2);
  141. }
  142.   ET1=1;
  143.   jd=19;
  144. delay(500);
  145. ET0=0;
  146. }
  147.   else
  148. ET0=1;

  149. if(jd==19)
  150. {   ET1=0;
  151.     ultrasonic();
  152.     while(x--)
  153. {

  154.    f=s;
  155. delay(2);
  156. }

  157.    ET1=1;
  158. jd=12;

  159. delay(500);
  160. ET0=0;
  161. }
  162.   else
  163. ET0=1;

  164. }
  165. void main()
  166. {
  167. uchar m=4;
  168. s=20;
  169. init();
  170. echo=0;
  171. jd=12;
  172. count=0;
  173. low=20;high=5;//設置速度
  174. while(1)
  175. {
  176.   if(e<f)
  177.   {
  178.   while(m--)
  179.   {
  180.    b=1;
  181. motor6=0;
  182. motor7=0;
  183. motor0=0;
  184. motor1=0;
  185. motor4=1;
  186. motor5=1;
  187. motor2=1;
  188. motor3=1;
  189.   delay(1);
  190.   }
  191.   e=0;
  192.   f=0;
  193.   }
  194. else
  195. {
  196. b=0;
  197. motor4=0;
  198. motor5=0;
  199. motor6=0;
  200. motor7=0;
  201. }
  202.   if(e>f)
  203.   {
  204.   while(m--)
  205.   {
  206.     b=1;
  207. motor0=1;
  208. motor1=1;
  209. motor6=1;
  210. motor7=1;
  211. motor2=0;
  212. motor3=0;
  213. motor4=0;
  214. motor5=0;
  215.   delay(1);
  216.   }
  217.   e=0;
  218.   f=0;
  219.   }
  220. else
  221. {
  222.   b=0;
  223. motor4=0;
  224. motor5=0;
  225. motor6=0;
  226. motor7=0;
  227. }
  228. bb();
  229. //turn();
  230. //kk();
  231. qudong();
  232. ultrasonic();
  233. h=s;
  234. }
  235. }
  236. //////////
  237. void Time1_Int() interrupt 3 //舵機中斷程序
  238. {
  239. TH1=(65536-100)/256;//11.0592MHZ晶振,0.5ms
  240. TL1=(65536-100)%256;
  241. if(count<jd)//判斷0.5ms次數是否小于角度標識
  242. pwm=1;//確實小于PWM輸出高電平
  243. else
  244. pwm=0; //大于則輸出低電平
  245. count=(count+1);//0.5ms次數加1
  246. count=count%40;// 次數使終保持40周期為20ms
  247. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:208396 發表于 2017-6-6 16:10 | 只看該作者
這是什么鬼
回復

使用道具 舉報

板凳
ID:276445 發表于 2018-1-16 11:16 | 只看該作者
看下能用否
回復

使用道具 舉報

地板
ID:315036 發表于 2018-8-25 21:02 | 只看該作者
為什么控制電機正轉要用四個,反轉只要兩個,還有6,7是干嘛用的呀,是使能端嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av一区二区三区 | 日韩一区二区福利 | 国产精品揄拍一区二区 | 久久激情视频 | 欧美在线视频网 | 一本一道久久a久久精品蜜桃 | 久久三区| 午夜精品一区二区三区在线观看 | 中文字幕国产精品 | 国内精品久久久久久久 | 国产精品欧美一区二区 | 欧美黄色一级毛片 | 中文字幕在线免费视频 | 午夜激情小视频 | 精品一区二区三区四区 | 久久噜噜噜精品国产亚洲综合 | 在线 丝袜 欧美 日韩 制服 | 欧美亚洲视频在线观看 | 涩在线| 99精品电影 | 亚洲一区二区视频 | 99久久免费观看 | 亚洲 欧美 日韩在线 | h视频在线观看免费 | 欧美久久一区二区三区 | 黄a在线播放 | 成人国产在线视频 | 日本啊v在线 | 久久久久国产 | 亚洲成人一区二区 | 伊人久久综合影院 | 欧美大片久久久 | 欧美一级免费 | 一本色道精品久久一区二区三区 | 国产精品99久久久久久人 | 青青草av| 91av精品 | 亚洲一区二区三区在线视频 | 国产传媒在线观看 | 亚洲第一av| 91观看 |