找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 35416|回复: 55
收起左侧

四个红外传感器四轮循迹小车源程序

  [复制链接]
ID:200346 发表于 2017-5-20 11:50 | 显示全部楼层 |阅读模式
四个红外传感器的小车循迹源码修改版,更稳定,感兴趣的同学可以拿去参考一下,每辆车都不一样,速度可能要调一下。

四轮四个传感器循迹小车

四轮四个传感器循迹小车


单片机源程序如下:
  1. /*从小车后面观察,从左向右的红外检测分别为DD1,DD2,DD3,DD4
  2.   DD1---P0^3
  3.   DD2---P0^2
  4.   DD3---P0^1
  5.   DD4---P0^0
  6. */

  7. #include<reg51.h>
  8. #define uchar unsigned char
  9. #define uint unsigned int

  10. extern void Motor_Left(bit ReverOrCoro, uchar DutyCycle); //左边电机控制函数
  11. extern void Motor_Right(bit ReverOrCoro, uchar DutyCycle); //右边电机控制函数
  12. void Timer0Config(); //        配置定时器0

  13. void zhizou();
  14. void dazhuan1();
  15. void dazhuan2();
  16. void weitiao1();
  17. void weitiao2();

  18. sbit ENA = P1^5; //定义电机使能端                                   
  19. sbit ENB = P1^0;
  20. uchar a;
  21. uchar Infrared; //检测P0低四位的值

  22. void main()
  23. {
  24.         Timer0Config();
  25.         ENA = 1; ENB = 1;
  26.         Infrared = P0 & 0x0F; //取出P0口低四位
  27.         while(1)
  28.         {               
  29.                 switch(Infrared)
  30.                 {
  31.                         case 0x00:                                                   
  32.                                               zhizou(); break; //未检测到黑线,直行
  33.                         case 0x08:
  34.                                        dazhuan1(); break; //左边第一个检测到黑线,左大转
  35.                         case 0x04:
  36.                                        weitiao1(); break; //左边第二个检测到黑线,左微调
  37.                         case 0x02:
  38.                                        weitiao2(); break; //右边第一个检测到黑线,右微调
  39.                         case 0x01:
  40.                                        dazhuan2(); break; //右边第二个检测到黑线,右大转
  41.                         case 0x0C:
  42.                                                          zhizou(); break; //左边两个同时检测到黑线,直行
  43.                         case 0x0E:
  44.                                                          zhizou(); break; //左边三个同时检测到黑线,直行
  45.                         case 0x03:
  46.                                                          zhizou(); break; //右边两个同时检测到黑线,直行
  47.                         case 0x07:
  48.                                                          zhizou(); break; //右边三个同时检测到黑线,直行
  49.                         case 0x0f:
  50.                                                          zhizou(); break; //全部检测到,直行
  51.                         case 0x06:
  52.                                                          zhizou(); break; //中间两个检测到,直行
  53.                         case 0x09:
  54.                                                          zhizou(); break; //旁边两个检测到,直行
  55.                         case 0x0A:
  56.                                                          weitiao1(); break; //左一右一检测到,左微调
  57.                         case 0x05:
  58.                                                          weitiao2(); break; //左二右二检测到,右微调
  59.                         case 0x0b:
  60.                                                          zhizou(); break; //左二未检测到,直行
  61.                         case 0x0d:
  62.                                                          zhizou(); break; //右一未检测到,直行
  63.                         default:   break;
  64.                 }
  65.         }
  66. }

  67. void Timer0Config()
  68. {
  69.         TMOD &= 0xF0;
  70.         TMOD |= 0x01;
  71.         TH0 = 0xFF;
  72.         TL0 = 0x7E;
  73.         EA = 1;
  74.         ET0 = 1;
  75.         TR0 = 1;
  76. }

  77. void zhizou()
  78. {
  79.          Motor_Left(1, 100), Motor_Right(1, 100);
  80.          Infrared = P0 & 0x0F;
  81. }

  82. void dazhuan1()
  83. {
  84.         a=1;
  85.         
  86.         while(a)
  87.         {
  88.                 Motor_Left(0, 80); Motor_Right(1, 80);
  89.                 Infrared = P0 & 0x0F;
  90.                 if(Infrared==0x04)
  91.                 {
  92.                                 Motor_Left(1, 100); Motor_Right(0, 100); break;
  93.                 }
  94.                 else if(Infrared==0x02)
  95.                 {
  96.                                 Motor_Left(1, 100); Motor_Right(0, 100); break;
  97.                 }
  98.         }
  99.         Infrared = P0 & 0x0F;
  100. }

  101. void dazhuan2()
  102. {
  103.         a=1;
  104.         
  105.         while(a)
  106.         {
  107.                 Motor_Left(1, 80); Motor_Right(0, 80);
  108.                 Infrared = P0 & 0x0F;
  109.                 if(Infrared==0x02)
  110.                 {
  111.                                 Motor_Left(0, 100); Motor_Right(1, 100); break;

  112.                 }
  113.                 else if(Infrared==0x04)
  114.                 {
  115.                                 Motor_Left(0, 100); Motor_Right(1, 100); break;

  116.                 }
  117.         }
  118.         Infrared = P0 & 0x0F;
  119. }

  120. void weitiao1()
  121. {
  122.         a=1;
  123.         while(a)
  124.         {
  125.                 Motor_Left(0, 60); Motor_Right(1, 100);
  126.                 Infrared = P0 & 0x0F;
  127.                 switch(Infrared)
  128.                 {
  129.                         case 0x04:
  130.                                 a=1; break;
  131.                         default:
  132.                                 a=0; break;
  133.                 }
  134.         }
  135. ……………………

  136. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
0.png

所有资料51hei提供下载:
循迹决赛程序1.zip (45.32 KB, 下载次数: 683)

评分

参与人数 7黑币 +129 收起 理由
zzbbcc + 5 赞一个!
萨杜斯 + 5 赞一个!
hello小c + 5 赞一个!
@小黑屋 + 4
qjzyx + 5 赞一个!
zz89c51 + 5
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:193705 发表于 2017-6-11 17:24 | 显示全部楼层
很好,谢谢!
回复

使用道具 举报

ID:239987 发表于 2017-11-8 17:32 | 显示全部楼层
兄弟你l298n的ena,enb怎么和单片机接的,需要拔跳线帽么
回复

使用道具 举报

ID:237942 发表于 2017-11-27 15:22 | 显示全部楼层
用的什么红外传感器啊,避障效果好么,避障距离是多远啊
回复

使用道具 举报

ID:257459 发表于 2017-12-5 14:30 | 显示全部楼层
那个是跟传感器的类别和数目,还有安装的高度位置有关系吧,具体有什么进一步的要求呢?
回复

使用道具 举报

ID:243501 发表于 2017-12-12 19:54 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:278233 发表于 2018-1-21 10:54 | 显示全部楼层
楼主,我现在只有两个传感器来制作,直接复制黏贴你的代码OK吗?
回复

使用道具 举报

ID:266116 发表于 2018-2-21 17:51 | 显示全部楼层
该天做个玩,谢谢分享
回复

使用道具 举报

ID:296817 发表于 2018-3-25 17:00 | 显示全部楼层
感谢感谢
回复

使用道具 举报

ID:186926 发表于 2018-4-16 23:06 | 显示全部楼层
如果有原理图就更好了
回复

使用道具 举报

ID:328853 发表于 2018-5-13 14:36 | 显示全部楼层
不错不错
回复

使用道具 举报

ID:321920 发表于 2018-5-14 06:21 来自手机 | 显示全部楼层
如果硬件连接有特殊要求,最好能发图说明下,非常感谢
回复

使用道具 举报

ID:321920 发表于 2018-5-15 05:37 来自手机 | 显示全部楼层
很感谢你的分享
回复

使用道具 举报

ID:340236 发表于 2018-6-1 09:39 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

ID:359065 发表于 2018-6-26 10:06 | 显示全部楼层
很棒,谢谢楼主分享
回复

使用道具 举报

ID:366221 发表于 2018-7-6 12:30 | 显示全部楼层
谢谢
回复

使用道具 举报

ID:308772 发表于 2018-7-13 17:24 | 显示全部楼层

请问能给我的邮箱发一份吗191969536@qq.com,万分感谢!!急用
回复

使用道具 举报

ID:384418 发表于 2018-8-9 01:04 | 显示全部楼层
非常感谢
回复

使用道具 举报

ID:419383 发表于 2018-11-4 16:50 | 显示全部楼层
谢谢你了
回复

使用道具 举报

ID:355753 发表于 2018-11-26 15:02 | 显示全部楼层
很好的程序
回复

使用道具 举报

ID:355753 发表于 2018-11-26 15:02 | 显示全部楼层
谢谢大佬
回复

使用道具 举报

ID:401857 发表于 2018-11-27 18:22 | 显示全部楼层
谢谢,很好用
回复

使用道具 举报

ID:420589 发表于 2018-11-27 21:31 | 显示全部楼层
没有主函数

回复

使用道具 举报

ID:442159 发表于 2018-12-8 15:02 | 显示全部楼层
赞一个
回复

使用道具 举报

ID:450030 发表于 2018-12-23 15:07 | 显示全部楼层

有啊


回复

使用道具 举报

ID:450030 发表于 2018-12-26 10:58 | 显示全部楼层
左大转和右大转里的判断程序是不是重了
回复

使用道具 举报

ID:469002 发表于 2019-1-16 10:44 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

ID:81496 发表于 2019-2-12 22:14 | 显示全部楼层
学习一下
回复

使用道具 举报

ID:436177 发表于 2019-3-22 16:16 | 显示全部楼层
赞一个
回复

使用道具 举报

ID:436177 发表于 2019-3-27 20:32 | 显示全部楼层
楼主,有没有原理图啊啊?
回复

使用道具 举报

ID:505599 发表于 2019-4-11 10:28 | 显示全部楼层
证号啊,4路循迹4路电机,我正需要,感谢
回复

使用道具 举报

ID:506264 发表于 2019-4-11 18:08 | 显示全部楼层
为什么我的文件打不开
回复

使用道具 举报

ID:512252 发表于 2019-4-14 23:01 | 显示全部楼层
很有用,感谢
回复

使用道具 举报

ID:294319 发表于 2019-4-15 19:29 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:286449 发表于 2019-4-26 23:29 | 显示全部楼层
学习一下  
回复

使用道具 举报

ID:349520 发表于 2019-4-29 22:40 | 显示全部楼层
好难啊
回复

使用道具 举报

ID:349520 发表于 2019-4-30 18:54 | 显示全部楼层
有没有仿真啊
回复

使用道具 举报

ID:431514 发表于 2019-5-1 13:32 | 显示全部楼层
请问能给我的邮箱发一份吗1543739381@qq.com,万分感谢!!
回复

使用道具 举报

ID:587600 发表于 2019-7-21 10:34 | 显示全部楼层

请问能给我的邮箱发一份吗2298217400@qq.com,万分感谢!
回复

使用道具 举报

ID:247307 发表于 2019-8-6 14:39 | 显示全部楼层
谢谢,学习了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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