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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AT89S52控制混合式步進(jìn)電機(jī) C程序

          AT89S52控制混合式步進(jìn)電機(jī) C程序

          作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò) 收藏
          #include<uart.h>//包含串口通信頭文件(里面含有reg52.h)

          #include//包含printf頭文件
          #define uint unsigned int
          #define uchar unsigned char

          本文引用地址:http://www.ex-cimer.com/article/201611/320052.htm

          sbit cp = P2^0;//脈沖輸入端
          sbit dir = P2^1;//方向控制端
          sbit free = P2^2;//脫機(jī)控制端,一般接高即可

          sbit jia_su = P1^0;//加速鍵key1聲明
          sbit jian_su = P1^1;//減速鍵key2聲明
          sbit fang_xiang = P1^2;//切換方向鍵key3聲明
          sbit ting = P1^3;//停止鍵key4聲明
          uint num;
          void uart_Init();//串口初始化子函數(shù)聲明

          void delay(uint z)//ms子函數(shù)
          {
          uint x,y;
          for(x = 0;xfor(y = 0;y<120;y++);
          }

          void delay1(uint z)//電機(jī)延時(shí)子函數(shù)us級(jí)
          {
          uint x;
          for(x = 0;x
          }

          void init()//初始化電機(jī)、串口子函數(shù)
          {
          num = 2;
          dir = 1;
          free = 1;
          uart_Init();
          }

          void key_scan()//鍵盤控制子函數(shù)
          {
          if(jia_su == 0)//判斷有加速鍵按下
          {
          delay(5);//延時(shí)消抖
          if(jia_su == 0)//再次判斷有加速鍵按下
          {
          num++;//num(代表電機(jī)轉(zhuǎn)速)增加
          if(num>4)
          {num=4;}
          while(!jia_su);//松手檢測(cè)
          delay(5);
          while(!jia_su);
          printf("num = %dn",num);//通過(guò)串口查看num值
          }
          }
          if(jian_su == 0)//判斷有減速鍵按下
          {
          delay(5);//延時(shí)消抖
          if(jian_su == 0)//再次判斷有減速鍵按下
          {
          num--;//num(代表電機(jī)轉(zhuǎn)速)減小
          if(num<1)
          {num=0;}
          while(!jian_su);//松手檢測(cè)
          delay(5);
          while(!jian_su);
          printf("num = %dn",num);//通過(guò)串口查看num值
          }
          }
          if(fang_xiang ==0)//判斷是否有方向切換鍵按下
          {
          delay(5);//延時(shí)消抖
          if(fang_xiang == 0)
          {
          dir =~dir;//方向改變
          while(!fang_xiang);//松手檢測(cè)
          delay(5);
          while(!fang_xiang);
          printf("dir = %dn",dir);
          }
          }
          if(ting ==0)//判斷是否有停止鍵按下
          {
          delay(5);//延時(shí)消抖
          if(ting == 0)
          {
          num = 0;//停止
          while(!ting);//松手檢測(cè)
          delay(5);
          while(!ting);
          }
          }

          switch(num)
          {
          case 0: cp = 1; break;//電機(jī)停止
          case 1: //以低速轉(zhuǎn)動(dòng)
          {


          cp = 1;
          delay1(20);
          cp = 0;
          delay1(20);

          }
          break;

          case 2: //以中速轉(zhuǎn)動(dòng)
          {


          cp = 1;
          delay1(15);
          cp = 0;
          delay1(15);

          }
          break;

          case 3: //以高速轉(zhuǎn)動(dòng)
          {


          cp = 1;
          delay1(10);
          cp = 0;
          delay1(10);

          }
          break;

          case 4: //以更高速轉(zhuǎn)動(dòng)
          {


          cp = 1;
          delay1(5);
          cp = 0;
          delay1(5);

          }
          break;
          }

          }
          void main()
          {
          init();//調(diào)用初始化子函數(shù)
          while(1)
          {
          key_scan();//不停鍵盤掃描
          }

          }



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();