找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16794|回复: 19
收起左侧

4驱51循迹智能小车程序!已调试

  [复制链接]
ID:79470 发表于 2015-5-9 20:53 | 显示全部楼层 |阅读模式
                                  自己写的程序!欢迎大家提出意见

完美循迹111.rar

33.17 KB, 下载次数: 285, 下载积分: 黑币 -5

可以自己稍微修改

评分

参与人数 2黑币 +56 收起 理由
liuqin + 6 赞一个!
admin + 50 共享资料的积分奖励!

查看全部评分

回复

使用道具 举报

ID:507431 发表于 2019-6-11 21:36 | 显示全部楼层
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS     SEGMENT: ?PR?TURN_BACK?XUNJIJIJI
一直不明白这个警告什么意思
回复

使用道具 举报

ID:507431 发表于 2019-6-11 21:38 | 显示全部楼层
我定义了四个使能端口,为什么车不走了
就是在en1=1后加上自己的en3=1
回复

使用道具 举报

ID:1 发表于 2015-5-9 23:15 | 显示全部楼层
楼主的程贴出来一下方便没有黑币的朋友下载

  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar pro_left,pro_right,i,j,w,t,z,y,a,c; //左右占空比标志


  5. sbit BI1=P1^6;           //         避障
  6. //sbit BI2=P1^7;


  7. sbit P04=P0^4;           //电机1               
  8. sbit P05=P0^5;
  9. sbit P06=P0^6;          
  10. sbit P07=P0^7;
  11.                                         //电机2
  12. sbit P08=P0^0;
  13. sbit P09=P0^1;
  14. sbit P10=P0^2;
  15. sbit P11=P0^3;

  16. sbit LED1=P1^3;
  17. sbit LED2=P1^4;
  18. sbit LED3=P1^5;
  19. sbit LED4=P1^6;

  20. sbit en1=P2^4;                  //使能端
  21. sbit en2=P2^5;

  22. //循迹口 三个红外传感器
  23. sbit left_red=P1^0; //白线位置
  24. sbit mid_red=P1^1; //黑线位置
  25. sbit right_red=P1^2; //白线位置
  26. void delay(uint z)
  27. {
  28. uchar i;
  29. while(z--)
  30. {for(i=0;i<121;i++);}
  31. }
  32. void init()
  33. {
  34.         P04=1;                                //电机1        左轮
  35.         P05=1;
  36.         P06=1;                           //电机2         右转
  37.         P07=1;

  38.         P08=1;
  39.         P09=1;
  40.     P10=1;
  41.     P11=1;
  42. TMOD=0X01;//定时器0选用方式1
  43. TH0=(65536-100)/256;
  44. TL0=(65536-100)%256;
  45. EA=1;
  46. ET0=1;
  47. TR0=1;
  48. en1=1;
  49. en2=1;
  50. }
  51. void time0(void)interrupt 1
  52. {
  53. i++;
  54. j++;
  55. if(i<=pro_right) {en1=1;}
  56. else en1=0;
  57. if(i==40) {en1=~en1;i=0;}
  58. if(j<=pro_left) {en2=1;}
  59. else en2=0;
  60. if(j==40) {en2=~en2;j=0;}
  61. TH0=(65536-100)/256;
  62. TL0=(65536-100)%256;
  63. }
  64. void straight() //走直线函数
  65. {
  66. pro_right=22;
  67. pro_left=22;
  68.         P04=1;                                //电机1        左轮
  69.         P05=0;
  70.         P06=1;                           //电机2         右转
  71.         P07=0;

  72.         P08=1;
  73.         P09=0;
  74.     P10=1;
  75.     P11=0;
  76. }
  77. void turn_left() //左转弯函数
  78. {
  79. pro_right=15;
  80. pro_left=22;
  81.         P04=0;                                //电机1
  82.             P05=1;                                       
  83.             P06=0;                           //电机2
  84.             P07=1;

  85.                 P08=1;
  86.             P09=0;
  87.         P10=1;
  88.         P11=0;
  89. }
  90. void turn_right() //右转弯函数
  91. {
  92. pro_right=22;
  93. pro_left=15;
  94.     P04=1;                                //电机1                         左轮
  95.         P05=0;                        
  96.         P06=1;                       //电机2
  97.         P07=0;

  98.     P08=0;
  99.         P09=1;
  100.     P10=0;
  101.     P11=1 ;
  102. }
  103. void turn_back() //后退(反转)函数
  104. {         pro_right=18;
  105. pro_left=7;
  106.     P04=0;                                //电机1                         左轮
  107.         P05=1;                        
  108.         P06=0;                       //电机2
  109.         P07=1;

  110.     P08=0;
  111.         P09=1;
  112.     P10=0;
  113.     P11=1 ;

  114. }
  115. void ting_back() //后退(反转)函数
  116. {
  117.     P04=0;                                //电机1                         左轮
  118.         P05=0;                        
  119.         P06=0;                       //电机2
  120.         P07=0;

  121.     P08=0;
  122.         P09=0;
  123.     P10=0;
  124.     P11=0 ;

  125. }



  126. void infrared() //循迹
  127. {

  128. if(mid_red==1) //直
  129. {        straight();

  130. //        if((left_red==0)&&(mid_red==0)&&(right_red==0))
  131. //                  {
  132. //                          t=1;
  133. //                                                    while(t)
  134. //                                                 {
  135. //                                                   turn_back();
  136. //                                                  
  137. //                                                   if(mid_red==1)
  138. //                                                   {
  139. //                                                             t=0;
  140. //                                                   }
  141. //                                                 }
  142. //                                                 }

  143. }

  144. if(left_red==1)//左
  145. {  
  146. //        turn_left();

  147. //        if((left_red==0)&(mid_red==0)&(right_red==0))
  148.                   
  149.                           w=1;
  150.                                                     while(w)
  151.                                                  {
  152.                                                    turn_left();
  153.                                                
  154.                                                    if(mid_red==1)
  155.                                                    {
  156.                                                              w=0;
  157.                                                    }
  158.                                                  }
  159.                                                  
  160. }
  161. if(right_red==1) //右
  162. {       
  163. //   turn_right();

  164. //        if((left_red==0)&(mid_red==0)&(right_red==0))
  165.                   
  166.                           z=1;
  167.                                                     while(z)
  168.                                                  {
  169.                                                    turn_right();
  170.                                        
  171.                                                    if(mid_red==1)
  172.                                                    {
  173.                                                              z=0;
  174.                                                    }
  175.                                                  }
  176.                                                  
  177. }

  178. //if((left_red==0)&(mid_red==0)&(right_red==0))
  179. //{        turn_back();       
  180. //       
  181. //                          y=1;
  182. //                                                    while(y)
  183. //                                                 {
  184. //                                                   straight();
  185. //                       
  186. //                                                   if(mid_red==1)
  187. //                                                   {
  188. //                                                             y=0;
  189. //                                                   }
  190. //                                                 }
  191. //                                                 }

  192. if((left_red==1)&(mid_red==1)&(right_red==1))
  193. {

  194.    ting_back();
  195. }
  196. if(BI1==0)
  197. {
  198.        c=1;
  199.                                                     while(c)
  200.                                                  {
  201.                                                    turn_right();
  202.                                        
  203.                                                    if(mid_red==1)
  204.                                                    {
  205.                                                              c=0;
  206.                                                    }
  207.                                                  }


  208. }                                  



  209. }
  210. void main(void)
  211. {
  212. init();
  213. delay(1);
  214. while(1)
  215. {
  216. infrared();
  217. // straight();
  218. }

  219. }
  220. void int0(void)interrupt 0
  221. {

  222. }


复制代码
回复

使用道具 举报

ID:77496 发表于 2015-5-9 23:16 | 显示全部楼层
你好 能共享一下电路图和制作资料吗?
回复

使用道具 举报

ID:79481 发表于 2015-5-10 01:25 | 显示全部楼层
好东西带走!
回复

使用道具 举报

ID:80203 发表于 2015-5-23 23:23 | 显示全部楼层
好东西!
回复

使用道具 举报

ID:79470 发表于 2015-8-10 20:16 | 显示全部楼层
liuqin 发表于 2015-5-9 23:16
你好 能共享一下电路图和制作资料吗?

电路图!看程序接就可以了
回复

使用道具 举报

ID:88341 发表于 2015-8-14 23:17 | 显示全部楼层
来学习~~~~~~~
回复

使用道具 举报

ID:90625 发表于 2015-9-22 09:55 | 显示全部楼层
电路图!看程序接就可以了
回复

使用道具 举报

ID:92134 发表于 2015-10-15 18:01 | 显示全部楼层
感谢楼主
回复

使用道具 举报

ID:92574 发表于 2015-10-15 20:53 | 显示全部楼层
好东西
回复

使用道具 举报

ID:105268 发表于 2016-6-2 17:25 | 显示全部楼层
本帖最后由 Smile_TJQ 于 2016-6-2 17:27 编辑

不知道对不对
回复

使用道具 举报

ID:141579 发表于 2016-10-7 16:53 | 显示全部楼层
想问一下楼主,这个程序中用到了光电红外开关了吗?
回复

使用道具 举报

ID:149612 发表于 2016-11-30 15:42 | 显示全部楼层
四驱的话使能端是不是要用4个
回复

使用道具 举报

ID:188592 发表于 2017-4-11 20:39 | 显示全部楼层
有问题啊
回复

使用道具 举报

ID:185687 发表于 2017-4-11 21:10 | 显示全部楼层
谢谢这么有用的教程
回复

使用道具 举报

ID:489285 发表于 2019-6-12 12:49 | 显示全部楼层
比较简单的控制方法
回复

使用道具 举报

ID:20672 发表于 2019-11-14 13:11 | 显示全部楼层
谢谢分享,谢谢管理员
回复

使用道具 举报

ID:432653 发表于 2021-6-1 13:14 | 显示全部楼层
liuqin 发表于 2015-5-9 23:16
你好 能共享一下电路图和制作资料吗?

某一个宝有成品的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表