找回密码
 立即注册

QQ登录

只需一步,快速开始

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

红外循迹小车程序

[复制链接]
跳转到指定楼层
楼主
ID:134542 发表于 2016-7-21 20:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#define uint  unsigned int
#define uchar unsigned char

sbit IN1=P1^1;     //电机1               
sbit IN2=P1^2;

sbit IN3=P0^1;           //电机2
sbit IN4=P0^2;

sbit IN5=P1^3;           //电机3
sbit IN6=P1^4;

sbit IN7=P0^3;           //电机4
sbit IN8=P0^4;

sbit found1=P1^6;  //红外对管
sbit found2=P1^7;
sbit found3=P3^4;

/****************电机控制函数****************/

void forward1()      //电机1前进
{
   IN1=1;
   IN2=0;
}
void forward2()                         //电机2前进
{
   IN3=0;
   IN4=1;
}
void forward3()      //电机3前进
{
   IN5=0;
   IN6=1;
}
void forward4()                         //电机4前进
{
   IN7=0;
   IN8=1;
}

void back1()                           //电机1后退
{
   IN1=0;
   IN2=1;
}

void back2()                           //电机2后退
{
   IN3=1;
   IN4=0;
}
void back3()                           //电机3后退
{
   IN5=1;
   IN6=0;
}
void back4()                           //电机4后退
{
   IN7=1;
   IN8=0;
}
/****************电机开关函数****************/

void stop1()         //电机1关闭
{
   IN1=0;
   IN2=0;
}
void stop2()                     //电机2关闭
{
   IN3=0;
   IN4=0;
}
void stop3()         //电机3关闭
{
   IN5=0;
   IN6=0;
}
void stop4()                     //电机4关闭
{
   IN7=0;
   IN8=0;
}
/**********************主函数**********************/
void main()
{
   while(1)
   {  
         if(found1==0&&found2==0&&found3==0)                                         //000 三个LED均未检测到黑线 小车后退
         {back3();back4();stop1();stop2();}
                                                                                            
   if(found1==0&&found2==1&&found3==0)                                         //010 第二个LED检测到黑线 小车前进
         {forward1();forward2();stop3();stop4();}
         
         /******************小车左转******************/
         
         if(found1==1&&found2==1&&found3==0)                                          //110 一、二LED检测到黑线 小车左大转
   {back1();forward2();stop3();stop4();}
         if(found1==1&&found2==0&&found3==0)                                         //100 第一个LED检测到黑线 小车左转
   {back1();forward2();stop3();stop4();}
         
         /******************小车右转******************/
         
         if(found1==0&&found2==1&&found3==1)                                         //011 二、三LED检测到黑线 小车右大转
   {back2();forward1();;stop3();stop4();}
         if(found1==0&&found2==0&&found3==1)                                         //001 第三个LED检测到黑线 小车右转
   {back2();forward1();stop3();stop4();}
         
         /**************LED检测到全黑情况的处理**************/
         
         if(found1==1&&found2==1&&found3==1)                                                                                   //111 三个LED均检测到黑线 小车前进
         {forward1();forward2();stop3();stop4();}                                                                                    
  }  
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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