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

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 步進(jìn)電機(jī)控制程序(c語(yǔ)言+51單片機(jī))

          步進(jìn)電機(jī)控制程序(c語(yǔ)言+51單片機(jī))

          作者: 時(shí)間:2011-05-01 來(lái)源:網(wǎng)絡(luò) 收藏

          #includereg51.h>

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

          #define uint unsigned int
          #define uchar unsigned char
          #define ms *77
          // f = 12 M
          #define LEDLen 4
          #define Dj_star() {IE=0x81; pri_dj=0; }
          #define Dj_stop() {IE=0x00; pri_dj=1; P1=0xff; shache=0; delay(800ms); delay(800ms);delay(400ms); shache = 1; }
          #define Chilun_Num 8
          /* 齒輪數(shù) 8 個(gè)*/
          #define set_display_num() { LEDBuf[0] = tmp / 1000; LEDBuf[1] = tmp / 100 % 10;
          LEDBuf[2] = tmp / 10 % 10; LEDBuf[3] = tmp % 10; }
          uchar LEDBuf[LEDLen] = {0,0,0,0};
          void read_num (); /* 讀播碼盤(pán) 到 set_round_num * 8 */
          void display ();
          void delay(uint delay_time) { uint i; for (i=0; i delay_time ; i++) ; }
          void run ();
          void fx_run();

          uint round_num = 0; /* 記錄已轉(zhuǎn)的 齒輪數(shù) , 中斷1次 加 1*/
          uint set_round_num = 0; /* 播碼盤(pán)設(shè)置 圈數(shù) */
          uint set_pwm_width = 0; /* 播碼盤(pán)設(shè)置 正向速度 */
          bit one_round_flg = 0;
          sbit led_1000 = P0^7; //use for display
          sbit led_100 = P0^6; //use for display
          sbit led_10 = P0^5; //use for display
          sbit led_1 = P0^4; //use for display

          sbit key_start = P3^0;
          sbit key_puse = P3^0;
          sbit key_clear = P3^1;
          /* P3^2 接齒輪傳感器 中斷 */
          sbit bujin_zx_stop = P3^3; /* 接 ,正向到位傳感器 ,為 0 停機(jī) */
          sbit bujin_fx_stop = P3^4; /* 接 ,反向到位傳感器 ,為 0 停機(jī) */

          sbit shache = P3^5; /* 接剎車(chē)繼電器 0 電位有效 */
          sbit pri_dj = P3^6; /* 接主電機(jī)繼電器 0 電位有效 */

          void main(){
          TCON = 0x01;
          display();
          while(1) {
          IE=0x00;
          round_num = 0;
          display();
          if ( bujin_fx_stop ) fx_run();
          while ( key_start );
          delay ( 8ms );
          if(!key_start){
          read_num();
          //set_round_num = 8;
          while ( !key_start );
          run ();
          fx_run();
          }
          }
          }

          void run () {
          #define Delay_time 180
          /* 轉(zhuǎn)一圈 50 次循環(huán),每循環(huán) 4 步 ,50 * 4 = 200 , 200 * 1。8 = 360 */
          uchar i ;
          P1 = 0xff;
          set_pwm_width = 15 + set_pwm_width / 10;
          while ( 1 ) {

          while( !shache | !key_start );
          Dj_star();
          for ( i=0 ; bujin_zx_stop !pri_dj;i++ ){
          P1 = 0xf9;
          delay ( Delay_time ); // bujin_zx_stop = P3^3;
          P1 = 0xfc; // bujin_fx_stop = P3^4;
          delay ( Delay_time); // key_puse = P3^0;
          P1 = 0xf6; // key_clear = P3^1;
          delay ( Delay_time ); // shache = P3^5;
          P1 = 0xf3; // pri_dj = P3^6;
          delay ( Delay_time );
          if( i == set_pwm_width ) { P1 = 0xff; i = 0; one_round_flg = 0; while ( !one_round_flg key_puse );}
          if(!key_puse) { delay(4ms); if(!key_puse) break; }
          }

          P1 = 0xff;
          if ( pri_dj ) break;

          if ( !key_puse ) {
          delay ( 8ms );
          if ( !key_puse ) {
          Dj_stop();
          while ( !key_puse );
          // next pree key
          while( !shache );

          while(1){
          while ( key_puse key_clear );
          delay ( 8ms );
          if ( !key_clear ) { round_num = 0; display(); }
          if ( !key_puse ) break;
          }
          while( !key_puse );
          delay(8ms);
          while( !key_puse );
          }
          }
          }
          }

          51單片機(jī)相關(guān)文章:51單片機(jī)教程


          c語(yǔ)言相關(guān)文章:c語(yǔ)言教程



          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(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); })();