<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 步進電機正反轉和加速減速c源程序

          步進電機正反轉和加速減速c源程序

          作者: 時間:2012-12-05 來源:網絡 收藏

          這是一個群里朋友發(fā)給我的實現(xiàn)正轉反轉和的單片機c語言源程序,這里給大家共享下,有需要的朋友直接復制到keil里編譯就可以了,程序已測試成功。

          /*****************************************
          單4拍正轉 zheng[]={0x01,0x08,0x04,0x02}
          單4拍反轉 fang[]={0x01,0x02,0x04,0x08}

          雙4拍正轉 zheng[]={0x09,0x0c,0x06,0x03}
          雙4拍反轉 fang[]={0x03,0x06,0x0c,0x09}

          單雙8拍正轉 zheng[]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03}
          單雙8拍反轉 fang[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}
          *****************************************/

          #include"reg51.h"
          #include"intrins.h"
          #define uchar unsigned char
          #define uint unsigned int
          bit front_move,back_move;

          uchar jzaj(void); //單4拍正轉 zheng[]={0x01,0x08,0x04,0x02}; 單4拍反轉 fang[]={0x01,0x02,0x04,0x08};
          void ajcl(uchar jz);
          void delay(uchar del);

          uchar code zheng[]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03};
          uchar code fang[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};

          void timer0() interrupt 1
          {
          static uchar jz;
          TH0=0xfc;
          TL0=0x18;
          jz=jzaj();
          if(jz)
          ajcl(jz);
          }

          //程序
          //實用于51系列單片機 http://www.51hei.com首發(fā),程序運行有問題請聯(lián)系本站。
          void main()
          {
          uchar count=0;
          TMOD=0x01;
          TH0=0xFC;
          TL0=0x18;
          TR0=1;
          ET0=1;
          EA=1;
          while(1)
          {
          if(front_move)
          {
          P2=zheng[count];
          delay(100);
          count++;
          if(count==8) count=0;
          }
          if(back_move)
          {
          P2=fang[count];
          delay(100);
          count++;
          if(count==8) count=0;
          }
          }
          }

          uchar jzaj(void)
          {
          uchar hz,lz;
          P1=0xf0; //置所有行為低電平,行掃描,列線輸入(此時)
          if((P10xf0)!=0xf0) //判斷是否有有鍵按下(讀取列的真實狀態(tài),若第4列有鍵按下則P1的值會變成0111 0000),有往下執(zhí)行
          {
          delay(10); //延時去抖動(10ms)
          if((P10xf0)!=0xf0) //再次判斷列中是否是干擾信號,不是則向下執(zhí)行
          {
          hz=0xfe; //逐行掃描初值(即先掃描第1行)
          while((hz0x10)!=0) //行掃描完成時(即4行已經全部掃描完成)sccode為1110 1111 停止while程序
          {
          P1=hz; //輸出行掃描碼
          if ((P1hz)!=hz) //***(P20xf0)!=0xf0***也可這樣 本行有鍵按下(即P1(真實的狀態(tài))的高四位不全為1)
          {
          lz=(P10xf0)|0x0f; //列
          while((P10xf0)!=0xf0);
          return((~hz)|(~lz)); //返回行和列
          break; //有按鍵返回 提前退出循環(huán)

          }
          else //所掃描的行沒有鍵按下,則掃描下一行,直到4行都掃描,此時sccode值為1110 1111 退出while程序
          hz=_crol_(hz,1);//行掃描碼左移一位

          }
          }
          }
          else
          return 0; //無鍵按下,返回0
          }
          void ajcl(uchar jz)
          {
          if(jz==0x11)
          {
          back_move=0;
          front_move=1;
          }
          if(jz==0x21)
          {
          front_move=0;
          back_move=1;
          }
          if(jz==0x41)
          {
          P2=0x00;
          front_move=0;
          back_move=0;
          }

          }
          void delay(uchar del)
          {
          uchar i;
          for(;del>0;del--)
          for(i=0;i125;i++)
          {;}
          }

          c語言相關文章:c語言教程




          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();