新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 舵機速度控制的51單片機程序

        舵機速度控制的51單片機程序

        作者: 時間:2016-12-01 來源:網絡 收藏

        /************************************************************************************************/
        void qhuan(unsigned int ms50,char zushu) //控速算法
        {
        char i;
        if(thesea>=ms50&a>100) //檢驗定時和舵機是否到達指定時間和位置,到達更新
        {
        n++;
        if(n PWMM=shuju[n];
        else
        PWMM=shuju[0];
        for(i=0;i<8;i++)
        {
        if(n<(zushu))
        *(K+i)=(shuju[n][i]-shuju[n-1][i])/100;
        else
        *(K+i)=(shuju[0][i]-shuju[zushu-1][i])/100;
        }
        if(n>=zushu)
        n=0;
        thesea=0;
        a=0;
        }
        }
        void T0zd(void) interrupt 1
        {
        static uint8 i=0,irm=0;
        ++i;
        ++irm;
        qhuan(640,4);
        if((a<=100)&(irm>=64))
        {
        a+=10; //自加在40就已經是舵機不控速的最快速度了
        irm=0;
        }
        thesea++;
        switch(i)
        {
        case 1:
        {
        pwm1=1;
        Timer0(*(PWMM)-*(K)*(100-a)); //定時
        } return;
        case 2:
        {
        pwm1=0; //pwm1變低
        Timer0(2500-*(PWMM)+*(K)*(100-a));// 定時
        } return;
        case 3:
        {
        pwm2=1; //pwm2變高
        Timer0(*(PWMM+1)-*(K+1)*(100-a));// 定時時常為pwm[2]
        } return;
        case 4:
        {
        pwm2=0; //pwm2變低
        Timer0(2500-*(PWMM+1)+*(K+1)*(100-a));// 定時時常為pwm[2]
        } return;
        case 5:
        {
        pwm3=1; //pwm3變高
        Timer0(*(PWMM+2)-*(K+2)*(100-a));// 定時時常為pwm[3]
        } return;
        case 6:
        {
        pwm3=0; //pwm3變低
        Timer0(2500-*(PWMM+2)+*(K+2)*(100-a));// 定時
        } return;
        case 7:
        {
        pwm4=1; //pwm4變高
        Timer0(*(PWMM+3)-*(K+3)*(100-a));// 定時
        } return;
        case 8:
        {
        pwm4=0; //pwm4變低
        Timer0(2500-*(PWMM+3)+*(K+3)*(100-a));// 定時
        } return;
        case 9:
        {
        pwm5=1; //pwm5變高
        Timer0(*(PWMM+4)-*(K+4)*(100-a));// 定時
        } return;
        case 10:
        {
        pwm5=0; //pwm5變低
        Timer0(2500-*(PWMM+4)+*(K+4)*(100-a));// 定時
        } return;
        case 11:
        {
        pwm6=1; //pwm6變高
        Timer0(*(PWMM+5)-*(K+5)*(100-a));// 定時
        } return;
        case 12:
        {
        pwm6=0; //pwm6變低
        Timer0(2500-*(PWMM+5)+*(K+5)*(100-a));// 定時
        } return;

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

        case 13:
        {
        pwm7=1; //pwm7變高
        Timer0(*(PWMM+6)-*(K+6)*(100-a));// 定時
        } return;
        case 14:
        {
        pwm7=0; //pwm7變低
        Timer0(2500-*(PWMM+6)+*(K+6)*(100-a));// 定時
        } return;

        case 15:
        {
        pwm8=1; //pwm8變高
        Timer0(*(PWMM+7)-*(K+7)*(100-a));// 定時
        } return;
        case 16:
        {
        pwm8=0; //pwm8變低
        Timer0(2500-*(PWMM+7)+*(K+7)*(100-a));// 定時
        i=0;
        } return;
        default:return;
        }
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 前郭尔| 五大连池市| 尼玛县| 武定县| 玛纳斯县| 麻江县| 长泰县| 米林县| 马公市| 团风县| 巧家县| 青海省| 平乡县| 丰台区| 芷江| 屯门区| 天祝| 兴仁县| 望城县| 班戈县| 剑阁县| 麻栗坡县| 革吉县| 若尔盖县| 新邵县| 安图县| 元江| 桓台县| 宁河县| 台江县| 永吉县| 平远县| 长岭县| 黔江区| 平谷区| 乌拉特前旗| 浦县| 巩留县| 武邑县| 侯马市| 绥棱县|