找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

控制直流電極的程序 用L298n為啥電機(jī)沒動(dòng)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:146960 發(fā)表于 2016-12-9 18:47 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
上面的程序中有sbit NUM_1=P2^4;這個(gè),是打開第一位數(shù)碼管,沒用到位選,這也可以嗎?還有這個(gè)我用L298n為啥電機(jī)沒動(dòng)了?

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
sbit L1=P1^0;
sbit L2=P1^1;
sbit R1=P1^2;
sbit R2=P1^3;
sbit key_down=P3^4;
sbit key_set=P3^5;
sbit key_up=P3^6;
sbit NUM_1=P2^4;
uchar PWM;
uchar num=0,duty=0,speed=0;
uchar code table[]={

                0x3F,  //"0"
                0x06,  //"1"
                0x5B,  //"2"
                0x4F,  //"3"
                0x66,  //"4"
                0x6D,  //"5"
                0x7D,  //"6"
                0x07,  //"7"
                0x7F,  //"8"
                0x6F,  //"9"
                0x77,  //"A"
                0x7C,  //"B"
                0x39,  //"C"
                0x5E,  //"D"
                0x79,  //"E"
                0x71,  //"F"
                0x76,  //"H"
                0x38,  //"L"
                0x37,  //"n"
                0x3E,  //"u"
                0x73,  //"P"
                0x5C,  //"o"
                0x40,  //"-"
                0x00,  //熄滅
                0x00  //自定義

                         };


void delay(uchar i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void car_forward(uchar speed)
{ duty=speed;
  L1=0;
  L2=PWM;
  R1=0;
  R2=PWM;
}
void car_stop(void)
{ L1=0;
  L2=0;
  R1=0;
  R2=0;
}
void main(void)
{  TMOD=0x02;
   EA=1;
   TH0=0XC3;
   TL0=0XC3;
   ET0=1;
   TR0=1;
   NUM_1=0;
   P0=table[speed];
   while(1)
   { if(key_down==0 || key_up==0)
       {ET0=0;
        car_stop();
        delay(10);
          if(key_up==0)
            {
               speed++;
            }
          else if(key_down==0)
            { if(speed != 0)
                {
           speed--        ;
        }
            }
          P0=table[speed];
          while(key_down==0 || key_up==0)
           { ET0=1;
             if(key_set==0)
               { ET0=0;
                 car_stop();
         speed=0;
         P0=table[speed];
               }
            }
       }
   }
}
void timer0(void) interrupt 1
{ num++;
  if(num <= duty)
    {
      PWM=1;
    }
  else
  {
    PWM=0;
  }
  if(num >= 10)
  {
    num=0;
  }
  car_forward(speed);
}















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

使用道具 舉報(bào)

沙發(fā)
ID:84299 發(fā)表于 2016-12-9 21:26 | 只看該作者
首先數(shù)碼管位選肯定不能少,電機(jī)沒動(dòng)因該是在中斷服務(wù)函數(shù)里沒有進(jìn)行計(jì)數(shù)器值復(fù)位(TH0=0XC3;    TL0=0XC3;)處理
回復(fù)

使用道具 舉報(bào)

板凳
ID:146960 發(fā)表于 2016-12-9 21:55 | 只看該作者
aiwang51 發(fā)表于 2016-12-9 21:26
首先數(shù)碼管位選肯定不能少,電機(jī)沒動(dòng)因該是在中斷服務(wù)函數(shù)里沒有進(jìn)行計(jì)數(shù)器值復(fù)位(TH0=0XC3;    TL0=0XC3; ...

定時(shí)器0工作方式2是自動(dòng)重載,中斷程序不是不用復(fù)位嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:146960 發(fā)表于 2016-12-9 21:56 | 只看該作者
程世龍 發(fā)表于 2016-12-9 21:55
定時(shí)器0工作方式2是自動(dòng)重載,中斷程序不是不用復(fù)位嗎?

這個(gè)需要使能l298n的ENA和ENB嗎?
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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