找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求红外循迹小车C程序

[复制链接]
跳转到指定楼层
楼主
ID:99049 发表于 2016-1-14 12:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求红外循迹小车C程序
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:954170 发表于 2021-7-18 16:05 | 只看该作者
大三做单片机设计留下的程序,较为简单,可供参考
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char zkb1=0;       //**左边电机的占空比**//
unsigned char zkb2=0;       //**右边电机的占空比**//
unsigned char t=0;         //**定时器中断计数器**//
sbit LSEN2=P2^0;
sbit LSEN1=P2^1;
sbit RSEN1=P2^2;
sbit RSEN2=P2^3;//**传感器***//
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
sbit ENA=P1^4;
sbit ENB=P1^5;
sbit stby=P1^6;
//**********初始化定时器 中断***********//
void init()
{   
  TMOD=0x01;   
  TH0=(65536-100)/256;  
  TL0=(65536-100)%256;  
  EA=1;  
  ET0=1;  
  TR0=1;
}
//***********中断函数+脉宽调制***********//
void timer0() interrupt 1  
{  
  if(t<zkb1)      
    ENA=1;   
  else        
    ENA=0;   
  if(t<zkb2)      
    ENB=1;   
  else      
    ENB=0;      
   t++;   
  if(t>=50)   
   {t=0;}  
}
//******************直行******************//
void qianjin()  
{   
  zkb1=50;   
  zkb2=50;
}
//***************左转函数1***************//
void turn_left1()  
{   
  zkb1=0;  
  zkb2=50;  
}
//***************左转函数2***************//
void turn_left2()  
{   
zkb1=0;  
zkb2=50;  
}
//***************右转函数1***************//  
void turn_right1()  
{   
zkb1=50;   
zkb2=0;  
}  
//***************右转函数2***************//  
void turn_right2()  
{   
zkb1=50;   
zkb2=0;
}  
//***************停止函数***************//  
void stop()  
{   
zkb1=0;   
zkb2=0;
}  
//***************循迹函数*****************//  
void xunji()   
{  
  uchar flag;   
  if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==0)&&(LSEN2==1))
       { flag=0;}
//*******直行*******//
  else if((RSEN2==1)&&(RSEN1==1)&&(LSEN1==0)&&(LSEN2==1))
       { flag=1;}  
//***左偏1,右转***//        
       else if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==1)&&(LSEN2==1))
       { flag=2; }
   //***右偏1,左转***//
      else if((RSEN2==0)&&(RSEN1==0)&&(LSEN1==0)&&(LSEN2==1))
      { flag=3; }      
   //***右偏2,左转***//
    else if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==0)&&(LSEN2==0))
       { flag=4;}
   //***左偏2,右转***//
    else if((RSEN2==1)&&(RSEN1==1)&&(LSEN1==1)&&(LSEN2==1))
       { flag=5;}
   //***左偏2,右转***//
switch (flag)
       {
  case 0:qianjin();
            break;
  case 1:turn_right1();
            break;
case 2:turn_left1();
            break;
case 3:turn_left2();
            break;  
case 4:turn_right2();
            break;
case 5:stop();
            break;
default: break;

        
              }
  }
//****************主程序****************//
void main()
{   init();  
    zkb1=50;
    zkb2=50;
    while(1)  
    {   
//******给电机加电启动******//
       IN1=1;
       IN2=0;
           stby=1;
       IN3=1;
       IN4=0;
       ENA=1;
       ENB=1;
    while(1)      
   {
      xunji();
//*********寻迹**********//
         }
       }
  }
回复

使用道具 举报

板凳
ID:933150 发表于 2021-7-21 00:08 | 只看该作者
我的帖子有的,智能红外循迹避障小车,蓝牙控制的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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