找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2262|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)循跡避障小車程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:811850 發(fā)表于 2020-8-6 12:54 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include "intrins.h"
#include"reg52.h"
#define uchar unsigned char
#define unit unsigned int
typedef unsigned int u16;         
typedef unsigned char u8;
unsigned int zkb1=0;
unsigned int zkb2=0;
unsigned int t=0;
sbit RSEN=P1^4;
sbit LSEN=P1^5;
sbit VSEN=P1^6;
sbit left1=P2^1;
sbit left2=P2^2;
sbit right1=P2^3;
sbit right2=P2^4;
sbit pwmleft=P2^7;
sbit pwmright=P2^6;
u16 left_speed,right_speed,timer1,S,state,time,timer;
void delay(u16 i)
{
        while(i--);        
}


void left()
{
           left1=0;        //左輪后退
      left2=1;
      right1=1;        //右輪前進(jìn)
      right2=0;
          left_speed=20;
          right_speed=30;
}
  void right()
{
           left1=1;        //左輪前進(jìn)
      left2=0;
      right1=0;        //右輪后退
      right2=1;
          left_speed=40;
          right_speed=25;
}
void forward()
{
           left1=1;        //左輪前進(jìn)
      left2=0;
      right1=1;        //右輪前進(jìn)
      right2=0;
          left_speed=35;
          right_speed=30;
}
void stop()
{
      left1=0;        //左輪停止
      left2=0;
      right1=0;        //右輪停止
      right2=0;
}
void back()
{
            left1=0;        //左輪后退
      left2=1;
      right1=0;        //右輪后退
      right2=1;
          left_speed=30;
          right_speed=30;
}
void bizhang()
{
     u16 l=500;
         
      back();
          delay(500);
          stop();
          delay(l);//暫停
          left();
          delay(1200);//左轉(zhuǎn)
          stop();
          delay(l);//暫停
          forward();
          delay(2000);//直走
          stop();
          delay(l);//暫停
          right();
          delay(1400);//右轉(zhuǎn)
          stop();
          delay(l);//暫停
          forward();
          delay(2000);//直走
          stop();
          delay(l);//暫停
          right();
          delay(1400);//右轉(zhuǎn)
          stop();
          delay(l);//暫停
          while(LSEN==0&&RSEN==0)
          {
           forward();
          }
          while(LSEN==1||RSEN==1)
          {
           forward();
           
           while(LSEN==1||RSEN==1)
           {
             left();
           }
          }
         
}
void xunji()
{
uchar flag;
  if((LSEN==0)&&(RSEN==0)&&(VSEN==1))
  {flag=0;}
  else if((LSEN==1)&&(RSEN==0)&&(VSEN==1))
  {flag=1;}
  else if((LSEN==0)&&(RSEN==1)&&(VSEN==1))
  {flag=2;}
  else if(VSEN==0)
  {flag=3;}
  else if((LSEN==1)&&(RSEN==1))
  {flag=4;}

switch(flag)
{
case 0:forward();
     break;
case 1:left();
     break;
case 2:right();
     break;
case 3:bizhang();
           break;
case 4:stop();
     break;
}         
}
  void TimerInit()
{
        TMOD=0X11;//選擇為定時(shí)器1和0的模式,工作方式1
        TH0 = 0xFF;
        TL0 = 0xff;   //1us
        TH1=0;
    TL1=0;                        
        ET0=1;//打開定時(shí)器0中斷允許
        EA=1;//打開總中斷
        TR0=1;//打開定時(shí)器                        
}
void main()
{  
   TimerInit();
  while(1)
{
   xunji();

}
}
void Time0(void) interrupt 1    //3 為定時(shí)器1的中斷號(hào)  1 定時(shí)器0的中斷號(hào) 0 外部中斷1 2 外部中斷2  4 串口中斷
{        
     if(timer1>=100)  //PWM周期為1000*1us
                {
                        timer1=0;
                }
                if(timer1 <right_speed)        
                {
                    pwmright=1;                  
                }
                else
                {
                  pwmright=0;
                }        
        if(timer1 <left_speed)        
                {
                    pwmleft=1;                  
                }
                else
                {
                   pwmleft=0;
                }        
        TH0 = 0xFF;
        TL0 = 0xff;   //1us
        timer1++;
        timer++;
            
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:844082 發(fā)表于 2020-11-16 19:28 | 只看該作者
那個(gè)暫停是怎么寫的哦
回復(fù)

使用道具 舉報(bào)

板凳
ID:872754 發(fā)表于 2021-1-21 12:25 | 只看該作者
這是車輪的程序嘛
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表