找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10499|回复: 32
收起左侧

单片机红外对管寻迹小车设计

  [复制链接]
ID:402350 发表于 2019-1-6 11:30 | 显示全部楼层 |阅读模式
IMG20190106112257.jpg IMG20190106112405.jpg

IMG20190106112346.jpg
#include <red52.h>
sbit hongwai1=P1^0;   //定义红外对管引脚  4个                  
sbit hongwai2=P1^1;
sbit hongwai3=P1^2;
sbit hongwai4=P1^3;                       
sbit ENA=P0^0;//电机驱动
sbit M1A=P0^1;                        
sbit M1B=P0^2;                           
sbit M2A=P0^3;                           
sbit M2B=P0^4;                          
sbit ENB=P0^5;
void tingzhi()         //停止
{
   M1A=0;                                 
   M1B=0;                                 
   M2A=0;                                   
   M2B=0;

}

void qianjin()         //前进  
{
   M1A=1;                                   
   M1B=0;                                   
   M2A=1;                                   
   M2B=0;
}

void houtui()    //后退
{
   M1A=0;                                   
   M1B=1;                                   
   M2A=0;                                   
   M2B=1;
}

void zuozhuan()          //左转
{
   M1A=1;                                   
   M1B=0;                                   
   M2A=0;                                   
   M2B=1;
}
void weizuozhuan() //左微转
{
   M1A=1;                                   
   M1B=0;                                   
   M2A=0;                                   
   M2B=0;
}


void youzhuan()           //右转
{  
   M1A=0;                                   
   M1B=1;                                   
   M2A=1;                                   
   M2B=0;

}
void weiyouzhuan()        //右微转                                
{
   M1A=0;                                   
   M1B=0;                                   
   M2A=1;                                   
   M2B=0;
}


void delay_nus(unsigned int i)  //延时函数
{
  i=i/10;
  while(--i);
}   
void delay_nms(unsigned int n) //延时函数
{
  n=n+1;
  while(--n)  
  delay_nus(900);         

}  
void ControlCar(unsigned char xunji)   
{

  tingzhi();       //首先是停止
switch(xunji)     //根据swith里面的值来驱动车                     
{
  case 1:                     
  {
    qianjin();
    break;
  }
  case 2:                       
  {
    houtui();                                
    break;
  }
  case 3:                     
  {
    zuozhuan();                              
        break;
  }
  case 4:                        
  {
    youzhuan();                              
        break;
  }
  case 5:                        
  {
    weiyouzhuan();                              
        break;
  }
   case 6:                     
  {
    weizuozhuan();                              
        break;
  }

  case 7:                    
  {
    tingzhi();
        break;                              
  }
}
}
void main()          //主函数                     
{
   delay_nms (30);//延时

  ControlCar(7);//停止
  ControlCar(1);//前进
   delay_nms (10);

  while(1)                                
  {  
          Start:          //行号
    ENA=1;//电机使能
        ENB=1;

   if(hongwai1==0&&hongwai2 == 0 && hongwai3 == 0&&hongwai4==0)   //寻迹模块的情况判定,4个寻迹模块,可以组合为16种情况
   {                                                            //根据需要选择
      ControlCar(7);                     
      delay_nms (3);
          goto NextRun;
   }

    if(hongwai1==0&&hongwai2 == 0 && hongwai3 == 0&&hongwai4==1)   
   {   
      ControlCar(6);                     
      delay_nms (3);
          goto NextRun;
   }
    if(hongwai1==0&&hongwai2 == 0 && hongwai3 == 1&&hongwai4==1)   
   {  
      ControlCar(6);                     
      delay_nms (3);
          goto NextRun;
   }
    if(hongwai1==0&&hongwai2 == 0 && hongwai3 == 1&&hongwai4==0)   
   {
     ControlCar(6);                     
      delay_nms (3);
          goto NextRun;
   }
   if(hongwai1==1&&hongwai2 == 0 && hongwai3 == 0&&hongwai4==0)   
   {
      ControlCar(5);                     
      delay_nms (3);
          goto NextRun;
   }
    if(hongwai1==1&&hongwai2 == 1 && hongwai3 == 0&&hongwai4==0)   
   {
      ControlCar(5);                     
      delay_nms (3);
          goto NextRun;
   }
    if(hongwai1==0&&hongwai2 == 1 && hongwai3 == 0&&hongwai4==0)   
   {  
      ControlCar(5);                     
      delay_nms (3);
          goto NextRun;
   }
         if(hongwai1==1&&hongwai2 == 1 && hongwai3 == 1&&hongwai4==1)   
   {
      ControlCar(7);                     
      delay_nms (3);
          goto NextRun;
   }
            if(hongwai1==0&&hongwai2 == 0 && hongwai3 == 0&&hongwai4==0)   
   {
      ControlCar(7);                     
      delay_nms (3);
          goto NextRun;
   }
   if(hongwai1==0&&hongwai2 == 1 && hongwai3 == 1&&hongwai4==1)   
   {
      ControlCar(3);                     
      delay_nms (3);
          goto NextRun;
   }
   if(hongwai1==1&&hongwai2 == 1 && hongwai3 == 1&&hongwai4==0)   
   {
      ControlCar(4);                     
      delay_nms (3);
          break;
          goto NextRun;
   }

   goto Start;          //相当于返回  start行
   NextRun:
   ControlCar(1);

}
}



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:487204 发表于 2019-3-13 19:43 来自手机 | 显示全部楼层
四轮的用一个驱动模块行吗
回复

使用道具 举报

ID:402350 发表于 2019-4-5 17:04 | 显示全部楼层
123qs 发表于 2019-3-13 19:43
四轮的用一个驱动模块行吗

可以的
回复

使用道具 举报

ID:506440 发表于 2019-4-7 19:30 | 显示全部楼层
请问是stc12c5a60s2的吗
回复

使用道具 举报

ID:502460 发表于 2019-4-10 09:53 来自手机 | 显示全部楼层
123qs 发表于 2019-3-13 19:43
四轮的用一个驱动模块行吗

可以,左侧两个轮子接一个输出口,右侧轮子接一个输出口。
回复

使用道具 举报

ID:369974 发表于 2019-4-10 16:28 | 显示全部楼层
请问这个速度怎么控制
回复

使用道具 举报

ID:402350 发表于 2019-4-10 19:57 | 显示全部楼层

stc51
回复

使用道具 举报

ID:402350 发表于 2019-4-10 19:58 | 显示全部楼层
zpj159 发表于 2019-4-10 16:28
请问这个速度怎么控制

pwm调速,定时器调脉冲宽度
回复

使用道具 举报

ID:517628 发表于 2019-4-21 10:54 | 显示全部楼层
请问能把您做的c51循迹小车的电路图发给我吗??还有配件清单
回复

使用道具 举报

ID:402350 发表于 2019-4-25 08:42 | 显示全部楼层
dats333 发表于 2019-4-21 10:54
请问能把您做的c51循迹小车的电路图发给我吗??还有配件清单

L298N电机驱动模块,红外对管,最小系统,电源,
回复

使用道具 举报

ID:514746 发表于 2019-5-8 13:06 来自手机 | 显示全部楼层
请问楼主可以发工程吗?
回复

使用道具 举报

ID:514746 发表于 2019-5-14 10:26 来自手机 | 显示全部楼层
请问这是用一个l298nma
回复

使用道具 举报

ID:402350 发表于 2019-5-14 12:40 | 显示全部楼层
Rainson 发表于 2019-5-14 10:26
请问这是用一个l298nma

嗯,我使用了一个,两个也可以
回复

使用道具 举报

ID:498152 发表于 2019-5-14 20:24 来自手机 | 显示全部楼层
这个可以用吗?
回复

使用道具 举报

ID:402350 发表于 2019-5-16 20:58 | 显示全部楼层

可以
回复

使用道具 举报

ID:564037 发表于 2019-6-16 23:36 | 显示全部楼层
我的电机驱动模块用的是L1109S,但我觉得原理都一样,不过我实现不了循迹,就像一个断了线的风筝一样,走的是唯心派,可以帮我解决一下吗,我可以把代码发给你
回复

使用道具 举报

ID:402350 发表于 2019-6-17 10:28 | 显示全部楼层
电信172 发表于 2019-6-16 23:36
我的电机驱动模块用的是L1109S,但我觉得原理都一样,不过我实现不了循迹,就像一个断了线的风筝一样,走的 ...

嗯呐,可以发过来一起学习。
回复

使用道具 举报

ID:539167 发表于 2019-6-18 16:16 来自手机 | 显示全部楼层
能循黑线走不?
回复

使用道具 举报

ID:402350 发表于 2019-6-19 09:50 | 显示全部楼层

可以寻黑线
回复

使用道具 举报

ID:539167 发表于 2019-6-19 14:12 来自手机 | 显示全部楼层
止于心 发表于 2019-6-19 09:50
可以寻黑线

为啥我检测到黑线就走不动
回复

使用道具 举报

ID:402350 发表于 2019-6-19 16:07 | 显示全部楼层
来日可期1 发表于 2019-6-19 14:12
为啥我检测到黑线就走不动

你可以调整一下红外对管之间的距离
回复

使用道具 举报

ID:526830 发表于 2019-8-5 20:20 | 显示全部楼层
你好,这样不需要用到晶振吗
回复

使用道具 举报

ID:611926 发表于 2019-9-19 09:20 来自手机 | 显示全部楼层
请问这个红外模块的电路是怎样的?
回复

使用道具 举报

ID:402350 发表于 2019-9-20 21:03 | 显示全部楼层
厚朴 发表于 2019-8-5 20:20
你好,这样不需要用到晶振吗

需要,最小系统里面有
回复

使用道具 举报

ID:402350 发表于 2019-9-20 21:05 | 显示全部楼层
qq19990601 发表于 2019-9-19 09:20
请问这个红外模块的电路是怎样的?

红外对管一共有三个接口,一个接vcc一个接gnd还有一个接单片机的IO口,具体的可以上网查一下手册。
回复

使用道具 举报

ID:434283 发表于 2020-2-24 11:17 | 显示全部楼层
有没有PCB、原理图
回复

使用道具 举报

ID:808225 发表于 2020-8-7 22:38 | 显示全部楼层
楼主,请问,在转弯处,在检测到黑线后,电机没来得及反应,小车就冲出黑线了,应该怎么调?
回复

使用道具 举报

ID:692524 发表于 2020-8-9 18:20 | 显示全部楼层
楼主,头文件写错了吗?应该是#include<reg51.h>??
回复

使用道具 举报

ID:402350 发表于 2020-11-13 15:37 | 显示全部楼层
漠城 发表于 2020-8-7 22:38
楼主,请问,在转弯处,在检测到黑线后,电机没来得及反应,小车就冲出黑线了,应该怎么调?

可以用pwm调速
回复

使用道具 举报

ID:402350 发表于 2020-11-13 15:38 | 显示全部楼层
三旬 发表于 2020-8-9 18:20
楼主,头文件写错了吗?应该是#include??

我用的是52系列的单片机
回复

使用道具 举报

ID:848452 发表于 2020-11-26 19:55 | 显示全部楼层
123qs 发表于 2019-3-13 19:43
四轮的用一个驱动模块行吗

可以的。。。
回复

使用道具 举报

ID:926637 发表于 2021-5-27 14:32 | 显示全部楼层
红外对管怎么接上去
回复

使用道具 举报

ID:402350 发表于 2021-6-19 21:33 | 显示全部楼层
自传zz 发表于 2021-5-27 14:32
红外对管怎么接上去

看程序定义的端口
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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