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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

51單片機(jī)如何控制舵機(jī)啊 求幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:314625 發(fā)表于 2018-4-23 17:23 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
求各位大樓幫忙  最好有編程解釋
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:511588 發(fā)表于 2019-8-5 14:48 | 只看該作者
//采用24.5MHZ的51單片機(jī)驅(qū)動(dòng)舵機(jī)轉(zhuǎn)動(dòng)程序如下:(上電自動(dòng)轉(zhuǎn)動(dòng) )
#include <C8051F410.H>

unsigned char count;      //0.5ms次數(shù)標(biāo)識(shí)

sbit pwm =P1^0 ;          //PWM信號(hào)輸出

sbit jia =P2^4;           //角度增加按鍵檢測(cè)IO口

sbit jian =P2^5;           //角度減少按鍵檢測(cè)IO口

unsigned char jd;         //角度標(biāo)識(shí)



sbit pwm1 =P0^0 ;          //PWM信號(hào)輸出給示波器,檢測(cè)PWM波用

void delay(unsigned char i)//延時(shí)
{

  unsigned char j,k;

  for(j=i;j>0;j--)

    for(k=125;k>0;k--);

}

void Time0_Init()          //定時(shí)器0初始化
{


  TH0  = 0xfc;        //定時(shí)器0裝初值 定時(shí)0.5ms進(jìn)入中斷

  TL0  = 0x03;


  TMOD = 0x01;       //定時(shí)器0工作在方式1   

  IE = 0x82;              //IE=0x82=1000 0010 等價(jià)于 EA=1 開(kāi)總中斷  ET0=1 開(kāi)定時(shí)器0中斷

  TR0=1;             //開(kāi)定時(shí)器0
       
  CKCON = 0x04;      //定時(shí)器0使用系統(tǒng)時(shí)鐘22.1184mhz
}

void Time0_Int() interrupt 1         //中斷程序
{

     //重裝初值

  TH0  = 0xfc;
  TL0  = 0x03;

    if(count<jd)

      {

                        pwm=1;                  //確實(shí)小于,PWM輸出高電平
                        pwm1=pwm;              //接示波器用的io口,觀(guān)測(cè)PWM波形用            }        //判斷0.5ms次數(shù)是否小于角度標(biāo)識(shí)
       //pwm=1;                  //確實(shí)小于,PWM輸出高電平
                       
                }
    else

                {

                        pwm=0;                  //大于則輸出低電平

                        pwm1=pwm;             //接示波器用的io口,觀(guān)測(cè)PWM波形用        }

                        //  pwm=0;                  //大于則輸出低電平

                        count=(count+1);          //0.5ms次數(shù)加1

                        count=count%40;     //次數(shù)始終保持為40 即保持周期為20ms

                }
}


//此注銷(xiāo)掉部分為通過(guò)按鍵控制舵機(jī)轉(zhuǎn)動(dòng)的程序,功能為通過(guò)jia按鍵控制正轉(zhuǎn),

//通過(guò)jian按鍵控制反轉(zhuǎn)

/*void keyscan()              //按鍵掃描
{
   if(jia==0)               //角度增加按鍵是否按下
  {
    delay(10);              //按下延時(shí),消抖
    if(jia==0)              //確實(shí)按下
     {
      jd++;                 //角度標(biāo)識(shí)加1
      count=0;              //按鍵按下 則20ms周期從新開(kāi)始
      if(jd==6)
        jd=5;               //已經(jīng)是180度,則保持
      while(jia==0);        //等待按鍵放開(kāi)
     }
  }
  if(jian==0)                //角度減小按鍵是否按下
  {
    delay(10);
    if(jian==0)
     {
      jd--;                 //角度標(biāo)識(shí)減1
      count=0;
      if(jd==0)
        jd=1;               //已經(jīng)是0度,則保持
      while(jan==0);
     }
  }
}*/


void Port_IO_Init()
{
    P1SKIP    = 0x0F;
    XBR0      = 0x08;
    XBR1      = 0x50;
}

void Oscillator_Init()
{
    OSCICN    = 0x87;
}
void Init_Device(void)
{
         PCA0MD    &= ~0x40;
    PCA0MD    = 0x00;
    Port_IO_Init();
    Oscillator_Init();
}



void main()

{

//上電,舵機(jī)自動(dòng)正反轉(zhuǎn)   

//應(yīng)注意每次步進(jìn)是延時(shí)函數(shù)delay參數(shù)的設(shè)置,此處延時(shí)函數(shù)參數(shù)設(shè)置的并不理想   
  Init_Device();
       
while(1)

{

  for(jd=1;jd<6;jd++)
                 
                {
                 
                        count=0;
                       
                        Time0_Init();
                 
                        delay(50000000);
                 
                }

                delay(50000000);

        for(jd=6;jd>0;jd--)
         
                {
                 
                        count=0;
                         
                        Time0_Init();
                         
                        delay(50000000);
                 
                }
        }
}
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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