单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2053|回复: 21
打印 上一主题 下一主题
收起左侧

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

  [复制链接]
跳转到指定楼层
楼主



#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 共享资料的黑币奖励!

查看全部评分

沙发
123qs 发表于 2019-3-13 19:43 来自手机 | 只看该作者
四轮的用一个驱动模块行吗
板凳
zqbx123 发表于 2019-3-15 22:24 | 只看该作者
谢谢分享
地板
 楼主| 止于心 发表于 2019-4-5 17:04 | 只看该作者
123qs 发表于 2019-3-13 19:43
四轮的用一个驱动模块行吗

可以的
5#
求大神写编程 发表于 2019-4-7 19:30 | 只看该作者
请问是stc12c5a60s2的吗
6#
niuquanwang 发表于 2019-4-10 09:53 来自手机 | 只看该作者
123qs 发表于 2019-3-13 19:43
四轮的用一个驱动模块行吗

可以,左侧两个轮子接一个输出口,右侧轮子接一个输出口。
7#
zpj159 发表于 2019-4-10 16:28 | 只看该作者
请问这个速度怎么控制
8#
 楼主| 止于心 发表于 2019-4-10 19:57 | 只看该作者

stc51
9#
 楼主| 止于心 发表于 2019-4-10 19:58 | 只看该作者
zpj159 发表于 2019-4-10 16:28
请问这个速度怎么控制

pwm调速,定时器调脉冲宽度
10#
dats333 发表于 2019-4-21 10:54 | 只看该作者
请问能把您做的c51循迹小车的电路图发给我吗??还有配件清单
11#
 楼主| 止于心 发表于 2019-4-25 08:42 | 只看该作者
dats333 发表于 2019-4-21 10:54
请问能把您做的c51循迹小车的电路图发给我吗??还有配件清单

L298N电机驱动模块,红外对管,最小系统,电源,
12#
Rainson 发表于 2019-5-8 13:06 来自手机 | 只看该作者
请问楼主可以发工程吗?
13#
Rainson 发表于 2019-5-14 10:26 来自手机 | 只看该作者
请问这是用一个l298nma
14#
 楼主| 止于心 发表于 2019-5-14 12:40 | 只看该作者
Rainson 发表于 2019-5-14 10:26
请问这是用一个l298nma

嗯,我使用了一个,两个也可以
15#
geng123 发表于 2019-5-14 20:24 来自手机 | 只看该作者
这个可以用吗?
16#
 楼主| 止于心 发表于 2019-5-16 20:58 | 只看该作者

可以
17#
电信172 发表于 2019-6-16 23:36 | 只看该作者
我的电机驱动模块用的是L1109S,但我觉得原理都一样,不过我实现不了循迹,就像一个断了线的风筝一样,走的是唯心派,可以帮我解决一下吗,我可以把代码发给你
18#
 楼主| 止于心 发表于 2019-6-17 10:28 | 只看该作者
电信172 发表于 2019-6-16 23:36
我的电机驱动模块用的是L1109S,但我觉得原理都一样,不过我实现不了循迹,就像一个断了线的风筝一样,走的 ...

嗯呐,可以发过来一起学习。
19#
来日可期1 发表于 2019-6-18 16:16 来自手机 | 只看该作者
能循黑线走不?
20#
 楼主| 止于心 发表于 2019-6-19 09:50 | 只看该作者

可以寻黑线
21#
来日可期1 发表于 2019-6-19 14:12 来自手机 | 只看该作者
止于心 发表于 2019-6-19 09:50
可以寻黑线

为啥我检测到黑线就走不动
22#
 楼主| 止于心 发表于 2019-6-19 16:07 | 只看该作者
来日可期1 发表于 2019-6-19 14:12
为啥我检测到黑线就走不动

你可以调整一下红外对管之间的距离
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 必胜时时彩开户-金盾时时彩-ba娱乐时时彩平台

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