欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3502|回復: 0
打印 上一主題 下一主題
收起左側

c52 L298控制2相4線步進電機 按鍵正反轉 按轉 不按不轉

[復制鏈接]
跳轉到指定樓層
樓主
ID:320487 發表于 2018-6-14 12:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 57185490 于 2018-6-14 12:39 編輯

通過別人的程序修改的
主要作用 按鍵正反轉
按下轉  松開按鍵不轉
適合監控云臺------------------------編譯后 實際控制云臺成功。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/*****P1.0=A ;P1.1=A` ;P1.2=B ;P1.3=B`****/
/*****P1.4=C; P1.5=C’; P1.6=D; P1.7=D’這個是用兩個L298 驅動,如果一個的就用P1.0-P1.3******/
code unsigned charrunz[8]={0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04};  //正轉的數組
code unsigned charrunf[8]={0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05};  //反轉的數組
code ucharrun1z[8]={0x50,0x10,0x90,0x80,0xa0,0x20,0x60,0x40};//這個是第二個L298正轉數組
code uchar run1f[8]={0x40,0x60,0x20,0xa0,0x80,0x90,0x10,0x50};//這個是第二個L298反轉數組
uchar keycan=0;                            //啟動哪個數組,用switch 函數
uint y=50;/轉速調整,延時時間,越高越慢
sbit P2_0=P2^0;//按鍵
sbit P2_1=P2^1;//
sbit P2_2=P2^2;//
sbit P2_3=P2^3;//
void delay(i)//延時  i=y
  {
     uchar              j,k;
     for(j=0;j<i;j++)
     for(k=0;k<250;k++);
  }
void delay1(uint b)//這個是按鍵按下時 延時,沒什么大作用!第二個L298沒有使用此延時,運行正常!應該可以不用
   {
            uchar g;
            for(;b>0;b--)
          {
                    g=250;
                  while(--g);
                  g=249;
                  while(--g);
          }
       }
/********************************************************************
                          1號 L298 正轉
*********************************************************************/
void zrun()// 正轉運行
{
  uchar z;
  for(z=0;z<8;z++)
      {
        P1=runz[z];
        delay(y);
         if(P2_0==1)// 監測按鍵是否松開,松開為高電平 1
         delay1(10);//延時 確定按鍵松開,不使用也可以
         if(P2_0==1)//確定按鍵松開
           {
             P1 &= 0x00;// P1  “與”運算 全部清零,不運行
            z = 7;//終止這個運行程序
           }
      }
}
/********************************************************************
                           反轉
*********************************************************************/
void frun()//
{
    uchar z;
    for(z=0;z<8;z++)
       {
           P1=runf[z];
           delay(y);
            if(P2_1==1)
            delay1(10);
            if(P2_1==1)
              {
                P1 &= 0x00;
                z = 7;
              }

        }
}
void zrun1()//第二個L298的正轉
{
  uchar z;
for(z=0;z<8;z++)
{
   P1=run1z[z];
   delay(y);
   If(P2_2==1)
     {
        P1 &= 0x00;
         z = 7;
      }
}
}
void frun1()//反轉
{  
   uchar z;
   for(z=0;z<8;z++)
   {
     P1 = run1f[z];
     delay(y);
     If(P2_3==1)
      {
        P1 &= 0x00;
        z = 7;
}
}
}   
/********************************************************************
                           主程序
*********************************************************************/
void main()
{
  while(1)
    {
      if(P2_0==0) //監測按鍵
       delay1(10);
       if(P2_0==0)
     {
       keycan=1;              //給keycan賦值
     }
        if(P2_1==0)
         delay1(10);
         if(P2_1==0)
      b     {
             keycan=2;              
           }
      if(P2_2==0)  // ????
      delay1(10);
      if(P2_2==0)
          {
          keycan=3;
          }
       if(P2_3==0)   
       delay1(10);
       if(P2_3==0)
         {                                         
            keycan=4;
         }
switch (keycan)//運行各函數
                 {
                           case 1: zrun();   break;
                           case 2: frun();   break;
                           case 3:zrun1();  break;
                           case 4:frun1();  break;
                 }

      }
}


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表