1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1532|回復(fù): 1
收起左側(cè)

51單片機(jī)通過(guò)L298控制兩個(gè)直流電機(jī)帶動(dòng)裝置進(jìn)行上下左右移動(dòng) 程序問(wèn)題

[復(fù)制鏈接]
ID:654785 發(fā)表于 2020-5-16 19:58 | 顯示全部樓層 |閱讀模式
通過(guò)L298控制兩個(gè)直流電機(jī)帶動(dòng)裝置進(jìn)行上下左右移動(dòng),條件是自動(dòng)按鍵按下,裝置按照設(shè)計(jì)的路徑運(yùn)動(dòng),當(dāng)設(shè)置X2-X1小于50時(shí),裝置先下移,在右移到X2最后上移到Y(jié)1。通過(guò)proteus仿真時(shí),自動(dòng)按鍵按下后釋放,裝置只進(jìn)行下移,需要不停的按下和釋放自動(dòng)按鍵才能完整的按照路徑運(yùn)動(dòng),去掉獨(dú)立按鍵部分可以正常工作。下面是用到的程序。希望大佬可以幫我看看問(wèn)題,單片機(jī)學(xué)的不太好。
sbit key_at = P1^6;//自動(dòng)
sbit IN1 = P2^3;
sbit IN2 = P2^4;//電機(jī)a輸入控制
sbit IN3 = P2^5;
sbit IN4 = P2^6;//電機(jī)a輸入控制

sbit fa = P3^0;//左移時(shí)為1,右移時(shí)為0
sbit fb = P3^1;//下移時(shí)為1,上移時(shí)為0


int X,Y;//工作平臺(tái)坐標(biāo)
int X1 ; //電機(jī)a左限位
int X2 ; //電機(jī)a右限位
int Y1 ; //電機(jī)b上限位
int Y2; //電機(jī)b下限位


void initial()
{

  EA = 1;//打開(kāi)總中斷
  EX0 = 1;//打開(kāi)外部中斷0
  EX1 = 1;

  IT0 = 1;//設(shè)置外部中斷0下降沿觸發(fā)
  IT1 = 1;

}


void delay(uint z)
{
  uint i,j;
  for(i = z;i > 0;i--)
  for(j = 114;j > 0;j--);

}

void moto_auto()
{
  int n;
  int i;
  X1=85;
  Y1=170;
  X2=110;
  Y2=100;

  X=X1+numa;
  Y=Y1+numb;

  n=(X2-X1)/100;

  if(key_at==0)
  {
    delay(10);
    if(key_at==0)
   {
       while(!key_at);

        if((X2-X1-100*n)<=50)
        {                  
            if(Y>=Y1&&(X<(X1+100*n+10))&&(X>(X1+100*n-10)))
           {
                IN1=0;
                IN2=0;
                IN3=0;
                IN4=1;//下移
           }

          if(Y<=Y2&&(X<(X1+100*n+10))&&(X>(X1+100*n-10)))
         {
              IN1=1;
              IN2=0;
              IN3=0;
              IN4=0;//右移
         }

        if(Y<=Y2&&X>X2)
        {
            IN1=0;
            IN2=0;
            IN3=1;
            IN4=0;//上移
        }

         if(Y>=Y1&&X>X2)
        {
             IN1=0;
             IN2=0;
             IN3=0;
            IN4=0;//停止
        }
}  

}
}
}

void main()
{
  initial();
  while(1)
  {
    moto_auto();
  }
}


void Int0() interrupt 0
{
  if(fa==1)
  numa--;//左移減計(jì)數(shù)
  else
  numa++;//右移加計(jì)數(shù)
}

void Int1() interrupt 2
{
  if(fb==1)
  numb--;//下移減計(jì)數(shù)
  else
  numb++;//上移加計(jì)數(shù)
}



回復(fù)

使用道具 舉報(bào)

ID:654785 發(fā)表于 2020-5-17 21:13 | 顯示全部樓層
有大神指點(diǎn)一下嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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