⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 200931513572716815.txt

📁 常用经典小车程序常用经典小车程序常用经典小车程序
💻 TXT
字号:
/********************************************************************************
寻迹小车

**********************************************************************************/

//#include<reg51.h>
#include"pin.h"
//#include"delaynms.h"

int T10=0x00,T11=0x00;
xunji()
{
void DC(int zfzhuan,int RoundSpeed);
void buj(int zfzhuan,int T10,int T11);
uchar  sensor=0xff,save=0xff;
    EA=1;
    ET0=1;
    TMOD=0x01;

/***************(检测传感器状态)*********************************/
while(1)
{

  jianru=key();
  if(jianru!=0xff)
    {
       shuru[i]=tab(jianru);                                  //将键盘输入存入shuru[]中
       i++;
       if(shuru[i-1]==10)                                    //判断输入是不是清零        
          {
             clear_led(4); 
             for(k=0;k<5;k++) 
               shuru[k]=16;
             i=0; 
          }
	   if(shuru[i-1]==7)                                    //回退模式        
          {
             clear_led(4); 
             for(k=0;k<5;k++) 
               shuru[k]=16;
             i=0;
 			 break;
          }
   }



uchar sensor1=p16;
uchar sensor2=p17;
sensor=sensor1*10+sensor2;
if(sensor!=0x0B)   save=sensor; //判断是否等于11,不等保存                                                           //if(状态!=11)  存储

/*  switch(检测传感器状态)                                       
     {
        case 00:  DC前进;buj不动; break;
        case 01:  DC前进;buj左转; break;
        case 10:  DC前进;buj右转; break;
        case 11:  DC停止;switch(save)
                         {
                              case  00:buj停止;   break;
                              case  01:buj大左转; break;
                              case  10:buj大右转; break;
                          }
     }
*/
  switch(sensor)
  {
     case 00:  DC(1,8);break;
     case 01:  DC(1,8);buj(1,0xFC,0x18);  break;
     case 10:  DC(1,8);buj(0,0xFC,0x18);  break;
	 case 0x0B:  {
                    switch(save)
                      {
                       // case 00:  buj停止
                          case 01:  DC(1,8);buj(1,0xEC,0x78); break; 
                          case 10:  DC(1,8);buj(0,0xEC,0x78); break;
						  default: break;
				      }
				}
      default: break;
          
  }
 }
}

void DC(int zfzhuan,int RoundSpeed)                  //zfzhuan 为1前进,否则后退 RoundSpeed是占空比
{
  void DCzz(int RoundSpeed);
  void DCfz(int RoundSpeed);

  if(zfzhuan==1)  DCzz(RoundSpeed);
  else DCfz(RoundSpeed);
}

  void DCzz(int RoundSpeed)                   //电机正转
 { 
  int m;
  m=10-RoundSpeed;
  p25=0;
  p26=1;                                     //脉冲产生
  delaynms(RoundSpeed);                      //毫秒延时子程序 
  p26=0;
  delaynms(m);                        
 }

  void DCfz(int RoundSpeed)                   //电机反转
 {
  int m;
  m=10-RoundSpeed;
  p26=0;
  p25=1;                                      //脉冲产生
  delaynms(RoundSpeed);
  p25=0;
  delaynms(m);                           
 }

void buj(int zfzhuan,int T10,int T11)             //zfzhuan 为1左转,否则右转
{
  void bujzz(int T10,int T11);                    //函数声明
  void bujfz(int T10,int T11);
    switch(zfzhuan)
     {
       case 1  :  bujzz(T10,T11); break;             //凋用正转子程序
       case 0  :  bujfz(T10,T11); break;             //凋用反转子程序
       default :  break;                                //停止
     }
 }

 void bujzz(int T10,int T11)                            //电机正转
 { 
  p10=1;                                               //复位控制
  p11=1;                                               //HALF/FULL控制
  p13=1;                                               //CW/CCW控制(正反转)
  p14=1;                                               //使能端控制
  TH0=T10;
  TL0=T11;
  TR0=1;
 }

  void bujfz(int T10,int T11)                            //电机反转
 {
  p10=1;                                               //复位控制
  p11=1;                                               //HALF/FULL控制
  p13=0;                                               //CW/CCW控制(正反转)   
  p14=1;                                               //脉冲产生
  TH0=T10;
  TL0=T11;
  TR0=1;
 }



inter()   interrupt 1   
{                                                                             
  TR0=0;
  p12=!p12;
} 



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -