注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小明砸乱弹琴

一个工程师的日常

 
 
 

日志

 
 
关于我

喜欢哲学、几何学、心理学、物理学、音乐、简单的文字及一切有趣的事物。热爱幻想,追求思想和学术自由,热衷简单平凡的生活和发现美好的事物。

网易考拉推荐
 
 

智能循迹排雷小车C语言程序  

2010-11-02 23:00:53|  分类: 单片微机 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

   设计思想概述:

     本循迹排雷车在硬件上达不到一定的要求,所以在软件上就要多下点功夫。

本设计的小车较其他小车的一大特点就是“智能化”,主要是提供了大量的服务子程序,确保“有路可走”。

1、转弯方式的智能化

          本设计的思想是检测到转弯信号的时候就进入转弯子程序,并一直到检测到直线才跳出转弯子程序。转弯的电压通过调信号的占空比用70%的电压,已达到减低速度的目的。

2、停车的智能化

          本设计是采用多次信号确认以防止信号误读,缺失检测到停车信号后才停车,继而进入扫描排雷部分。

3、排雷的智能化

         本设计在停车扫雷的过程中,有两个自转一个是扫雷的循环体,另外一个则是检测黑线返回的循环体(其中经历第一个扫雷的判断才可能进入扫黑线的循环)

4、漫反射传感器的信号引发中断程序,确保了程序的简洁性和实用性。

     #include<reg52.h>
     #include<intrins.h>
  sbit P14=P1^4;     //传感器信号口1
  sbit P15=P1^5;     //传感器信号口2
  sbit P16=P1^6;     //传感器信号口3
  sbit P10=P1^0;     //电机控制信号1—1
  sbit P11=P1^1;     //电机控制信号1—2
  sbit P12=P1^2;     //电机控制信号2—1
  sbit P13=P1^3;     //电机控制信号2—2
  sbit Beep=P2^4;        //警报信号
  unsigned char Bumpflag=0;
 
  /***********延时0.5ms函数*************/ 
  void delay(unsigned int t)  
  { unsigned char i;
      while(t--)
  {for(i=0;i<125;i++)
  ;
   }
  }
  /***********延时0.5ms函数*************/
 

  /******************转圈函数*********************/
  void Round()
  {  Beep=0;                             //警报音响
        P10=0;
     P11=1;
     P12=1;
     P13=0;      //75%电压
     delay(3);
     P10=P11=P12=P13=0;
     delay(1);
     Beep=1;
  
  }

 /******************转圈函数*********************/
 
  /***********直线走*************/
      void Run() 
  {
    P10=P11=P12=P13=0;
    delay(10);
   while((P14==0&&P15==1&&P16==0)||(P14==1&&P15==1&&P16==1))
   { P10=P12=1;
    P11=P13=0;
    }
  }
  /***********直线走*************/
  /***********左转弯************/
          void Turnleft()
  {   P10=P11=P12=P13=0;
   delay(10);
     while(P14!=0||P15!=1||P16!=0)
      {
   if(P14==1&&P16==1)
   break;
   P10=P11=P12=P13=0;
   delay(5);
   P12=1;
   P13=0;
      P10=1;
      P11=0;
   delay(1);
      P12=P13=0;
   P10=1;
      P11=0;
   delay(9);
     
  
      }
  }
    
    /***********左转弯************/
     /**********右转子函数*************/
  void Turnright() 
  { P10=P11=P12=P13=0;
   delay(10);
    while(P14!=0||P15!=1||P16!=0)
     { if(P14==1&&P16==1)
          break;
   P10=P11=P12=P13=0;
   delay(4);
         P10=1;
      P11=0;     //70%的电压
         P12=1;
         P13=0;
      delay(2);
      P10=P11=0;
      P12=1;
      P13=0;
      delay(9);
    }
  }
  /**********右转子函数*************/


  void Stop()  //停止子函数
  { P10=P11=P12=P13=0; }

 

  /********************Bump***************/
  void Bump() interrupt 0
  {  P10=P11=P12=P13=0;
   delay(500);
      P10=P12=1;
      P11=P13=0;     //撞了
   delay(600);
   P10=P11=P12=P13=0;
   delay(500);
      P10=P12=0;
      P11=P13=1;    //回来
      delay(600);
   Bumpflag++;    //扫雷个数
  
  
  }


 

   /***********主程序*******************/
  void main()
  {  P10=P11=P12=P13=0;
  EA=1;     //开全部中断
  EX0=1;     //开外部中断
  IT0=0;     //负跳变触发
  while(1)
  {  
       if(P14==0&&P15==1&&P16==0)   //Run
   { delay(10);
   if(P14==0&&P15==1&&P16==0)
    Run();
    }
    if(P14==1&&P16==0)  //Turn right
   {delay(10);
   if(P14==1&&P16==0) 
     Turnright();
    }
    
      if(P14==0&&P16==1) //Turn left
  
    {delay(10);
    if(P14==0&&P16==1)
    Turnleft();
    }
  
     if(P14==1&&P15==1&&P16==1)   //穿越十字路口
   { delay(10);
   if(P14==1&&P15==1&&P16==1)
   Run();
   }
  
                       

   if(P14==0&&P15==0&&P16==0)
       {delay(100);
    if(P14==0&&P15==0&&P16==0) 
   {  Stop();
      delay(500);
    while(Bumpflag<2)    //扫雷循环
           Round();
    while(P14==0&&P15==0&&P16==0)
          Round();     //找返回路线


    }
    }
  
  
         }
 
  }

 

下载程序点击这里:http://u.115.com/file/f751fcd25c智能小车循迹排雷程序打包下载.rar

  评论这张
 
阅读(1743)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018