關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 步進電機控制程序(c語言+51單片機)

        步進電機控制程序(c語言+51單片機)

        作者: 時間:2011-05-01 來源:網絡 收藏

        void ext_int0(void) interrupt 0 { /* 主 齒輪 中斷 */
        uint tmp;
        EA = 0;
        if( !pri_dj ){
        round_num ++;
        if (round_num % Chilun_Num == 0 ){
        one_round_flg = 1;
        tmp = round_num / Chilun_Num ;
        set_display_num();
        P0 = 0xf0;
        P0 = P0 | LEDBuf[0] ;
        led_1000 = 0;
        P0 |= 0xf0;

        本文引用地址:http://www.104case.com/article/162126.htm

        P0 = 0xf0;
        P0 = P0 | LEDBuf[1] ;
        led_100 = 0;
        P0 |= 0xf0;

        P0 = 0xf0;
        P0 = P0 | LEDBuf[2] ;
        led_10 = 0;
        P0 |= 0xf0;

        P0 = 0xf0;
        P0 = P0 | LEDBuf[3] ;
        led_1 = 0;
        P0 |= 0xf0;

        P0 = 0xf0;
        }
        if ( round_num >= set_round_num ) Dj_stop();
        }
        EA = 0x81;
        }

        void display(){
        uchar i;
        uint tmp = 0;
        tmp = round_num / Chilun_Num ;
        set_display_num();
        for(i = 0; i LEDLen ; i ++){
        P0 = 0xf0;
        P0 = P0 | LEDBuf[i] ;
        if(i==0) led_1000 = 0; //P0^4
        if(i==1) led_100 = 0; //P0^5
        if(i==2) led_10 = 0; //P0^6
        if(i==3) led_1 = 0; //P0^7
        P0 |= 0xf0;
        }
        P0 = 0xf0;
        }

        void read_num(){
        /* 讀播碼盤 到 set_round_num ,set_pwm_width */
        uchar tmp;
        P2 = 0xFF;
        P2 = 0xEF; // 1110 1111
        delay ( 1ms );
        tmp = ~(P2 | 0xF0);

        P2 = 0xDF; // 1101 1111
        delay ( 1ms );
        tmp = (~(P2 | 0xF0 )) * 10 + tmp;
        set_round_num = tmp;

        P2 = 0xBF; // 1011 1111
        delay ( 1ms );
        tmp = (~(P2 | 0xF0));

        P2 = 0x7F; // 0111 1111
        delay ( 1ms );
        tmp = (~(P2 | 0xF0)) * 10 + tmp;

        set_round_num = set_round_num + tmp * 100;
        set_round_num = set_round_num * Chilun_Num;

        P2 = 0xFF;
        P1 = 0xbF; // 0111 1111
        delay ( 1ms );
        tmp = ~(P2 | 0xF0) ;

        P1 = 0xFF;
        P2 = 0xFF;
        P1 = 0x7F; // 1011 1111
        delay ( 1ms );
        tmp = (~(P2 | 0xF0)) * 10 + tmp ;
        set_pwm_width = tmp ;

        P1 = 0xFF;
        P2 = 0xFF;
        }

        void fx_run(){
        #define f_Delay_time 180
        while ( bujin_fx_stop ) { /* 反向 回車 直到 傳感器 動作*/
        P1 = 0xf3; //0011
        delay ( f_Delay_time );
        P1 = 0xf6; //0110
        delay ( f_Delay_time );
        P1 = 0xfc; //1100
        delay ( f_Delay_time );
        P1 = 0xf9; //1001
        delay ( f_Delay_time );
        }
        P1 = 0xff;
        }

        51單片機相關文章:51單片機教程


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



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 五台县| 保山市| 平度市| 东阳市| 正宁县| 鄄城县| 禄劝| 延吉市| 海南省| 普定县| 横峰县| 仁寿县| 呼图壁县| 阿克苏市| 慈溪市| 乐平市| 体育| 屏山县| 米脂县| 灵武市| 宣威市| 鹤峰县| 盱眙县| 顺平县| 凭祥市| 拜泉县| 平利县| 新邵县| 仁布县| 金湖县| 西林县| 庆阳市| 太仓市| 孝感市| 锦屏县| 永昌县| 芷江| 浑源县| 左云县| 清水河县| 溧阳市|