欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機控制舵機 [打印本頁]

作者: puimhty    時間: 2019-7-12 19:31
標題: 單片機控制舵機
舵機的控制一般需要一個20ms的時基脈沖,該脈沖的高電平部分一般為0.5ms~2.5ms范圍內的角度控制脈沖部分。以180度角度舵機為例,那么對應的控制關系是這樣的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;

如下圖可形象地表示脈沖與角度關系

#include <reg52.h>
unsigned char count;                        //0.5ms次數標識
sbit pwm=P1^0;                                //信號輸出
sbit jia=P1^1;                                //角度增加按鍵
sbit jan=P1^2;                                //角度減小按鍵
char jd;                                        //角度標識
void delay(unsigned int i)
{
        unsigned int j,k;
        for(j=i;j>0;j--)
                for(k=125;k>0;k--);
}
void Time0_init()                        //定時器初始化
{
        TMOD=0x01;
        IE=0x82;
        TH0=0xff;
        TL0=0x19;                                //12晶振,0.25ms
        TR0=1;                                   //定時器開始
}
void Time0_int() interrupt 1                        //中斷程序
{
        TH0=0xff;
        TL0=0x19;
        if(count<jd) //輸出count個高電平
                pwm=1;
        else
        pwm=0;    //其余輸出低電平
        count++;
        count=count%40;  //時鐘保持40個count 即20ms
}
void keyscan()                                //按鍵掃描
{
        if(jia==0)                                //角度增加鍵是否按下
        {
                delay(50);                        //按下延時,消抖
                if(jia==0)
                {
                        jd++;                        //角度標識加1
                        count=0;                //按鍵按下,則20ms周期重新開始
                        if(jd==50)
                                jd=9;                         //已經是180°則保持
                                while(jia==0);         //等待按鍵放開
                }
        }
        if(jan==0)                                         //角度減小鍵是否按下
        {
                delay(10);
                if(jd==0);
                {
                        jd--;                                 //角度標識減1
                        count=0;
                        if(jd==0)
                                jd=1;
                        while(jan==0);
                }
        }
}

void main()
{
        jd=1;
        count=0;
        Time0_init();
        while(1)
        {
                keyscan();
//                display();
        }
}




作者: admin    時間: 2019-7-13 05:49
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
作者: xiaozhong1314    時間: 2019-7-13 18:10
沒有原理圖看不懂啊




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1