找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1584|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)控制舵機(jī)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:583148 發(fā)表于 2019-7-12 19:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
舵機(jī)的控制一般需要一個20ms的時基脈沖,該脈沖的高電平部分一般為0.5ms~2.5ms范圍內(nèi)的角度控制脈沖部分。以180度角度舵機(jī)為例,那么對應(yīng)的控制關(guān)系是這樣的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;

如下圖可形象地表示脈沖與角度關(guān)系

#include <reg52.h>
unsigned char count;                        //0.5ms次數(shù)標(biāo)識
sbit pwm=P1^0;                                //信號輸出
sbit jia=P1^1;                                //角度增加按鍵
sbit jan=P1^2;                                //角度減小按鍵
char jd;                                        //角度標(biāo)識
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++;                        //角度標(biāo)識加1
                        count=0;                //按鍵按下,則20ms周期重新開始
                        if(jd==50)
                                jd=9;                         //已經(jīng)是180°則保持
                                while(jia==0);         //等待按鍵放開
                }
        }
        if(jan==0)                                         //角度減小鍵是否按下
        {
                delay(10);
                if(jd==0);
                {
                        jd--;                                 //角度標(biāo)識減1
                        count=0;
                        if(jd==0)
                                jd=1;
                        while(jan==0);
                }
        }
}

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



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2019-7-13 05:49 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報

板凳
ID:421308 發(fā)表于 2019-7-13 18:10 | 只看該作者
沒有原理圖看不懂啊
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表