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

📄 1.c

📁 以keil为开发平台,开发的用于小车寻线,避障的C语言程序.
💻 C
字号:
#include <reg51.h>
#define uint unsigned int

  sbit P0_0=P0^0;       //左1传感器输入端口初始化
  sbit P0_1=P0^1;       //左2传感器输入端口初始化
  sbit P0_2=P0^2;       //右2传感器输入端口初始化
  sbit P0_3=P0^3;       //右1传感器输入端口初始化
   
  sbit P0_6=P0^6;       //取物传感器输入端口初始化 
  
  sbit P1_0=P1^0;       //取物驱动芯片始能端初始化
  sbit P1_2=P1^2;       //out3端口初始化
  sbit P1_3=P1^3;       //out4端口初始化
  
  sbit P1_6=P1^6;       //避障传感器输入端口初始化
  
  sbit P2_0=P2^0;       //寻线驱动芯片始能端初始化
  sbit P2_1=P2^1;       //寻线驱动芯片始能端初始化
  sbit P2_2=P2^2;       //out1端口初始化
  sbit P2_3=P2^3;       //out2端口初始化
  sbit P2_4=P2^4;       //out3端口初始化
  sbit P2_5=P2^5;       //out4端口初始化

void delay(uint j)       //延时子程序
{ 
  uint k;
  for(k=0;k<j;k++);
}

void turnleft()           //左转子程序
{
 P2_0=0;
 P2_1=1;
 P2_2=0;
 P2_3=0;
 P2_4=1;
 P2_5=0;
}

void turnright()         //右转子程序
{
 P2_0=1;
 P2_1=0;
 P2_2=1;
 P2_3=0;
 P2_4=0;
 P2_5=0;
}

void go()                 //直走程序
{
 P2_0=1;
 P2_1=1;
 P2_2=1;
 P2_3=0;
 P2_4=1;
 P2_5=0;
}

void back()              //后退子程序 
{
 P2_0=1;
 P2_1=1;
 P2_2=0;
 P2_3=1;
 P2_4=0;
 P2_5=1;
 }

void stop()              //停止子程序  
{
 P2_0=0;
 P2_1=0;
 P2_2=0;
 P2_3=0;
 P2_4=0;
 P2_5=0;
}

void in()              //取物杆收回子程序
{
 P1_0=1;       
 P1_2=1;       
 P1_3=0;
}

void out()             //取物杆放开子程序
{
 P1_0=1;       
 P1_2=0;       
 P1_3=1; 
}

void getthing()       //取物子程序
{
  stop();
 
  
  in();
  delay(20000);
  delay(15000);
 
  
   out();
  delay(18000);
  delay(13000);
 
  
  P1_0=0;       
  P1_2=0;       
  P1_3=0; 
}

void alongline()           // 寻线程序
{
   if(P0_0==1||P0_1==1)      //左边传感器检测到白线
   {
    turnleft();
    }
   else if(P0_2==1||P0_3==1)     //右边传感器检测到白线
   {
    turnright();
    }    
        else    
        {
	 go();
        }
	          
 }


 void arounding()            //避障子程序
{
  back();
  delay(500000);
  delay(500000);
  
  in();
  delay(20000);
  delay(15000);
  P1_0=0;       
  P1_2=0;       
  P1_3=0; 

  
  turnright();
  delay(50000);
  delay(20000);
  delay(20000);
  
  
  
  stop();
  delay(50000);
  
  go();
  delay(200000);
  
  delay(245000);
  
  
  
  stop();
  delay(50000);
 
  turnleft();
  delay(50000);
  delay(25000);
  delay(25000);
  
  
  
   stop();
  delay(50000);
  
  go();
  delay(500000);
  delay(500000);
  delay(500000);
  delay(500000);
  delay(500000);
  delay(500000);
  
  
  
  
  while(1)
  {stop();}
}

void main()              //主程序
{ 
  TMOD=0x02;            //用于T0,工作模式2
  TH0=0x1a;             
  TL0=0x1a;
  
  EA=1;                 //开中断
  ET0=1;                //允许TF0中断
  TR0=1;                //启动关闭控制位
  
  while(1)
 {
  if(P0_6==0)
  getthing();        
  else if(P1_6==0)
  arounding();
       else
       alongline();           
 }
}



void Pwm()interrupt 1        //定时中断调速子程序
{
unsigned int i;

P2_0=0;
P2_1=0;

for(i=2;i>0;i--);

P2_0=1;
P2_1=1;
}
 

⌨️ 快捷键说明

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