久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機 陀機 955 測試

作者:黃大垣   來源:本站原創   點擊數:  更新時間:2013年11月27日   【字體:


紅色VCC,橙色信號線,棕色GND


單片機系統實現對舵機輸出轉角的控制,必須首先完成兩項任務:首先,產生基本的PWM周期信號,即產生20ms的周期信號;其次,調整脈寬,即單片機調節PWM信號的占空比。單片機能使PWM信號的脈沖寬度實現微秒級的變化,從而提高舵機的轉角精度。單片機完成控制算法,再將PWM信號輸出到舵機。
#include<reg52.h>

typedef unsigned char BYTE;
typedef unsigned int WORD;
BYTE count,jd;
sbit pwm=P1^6;
sbit jia=P3^2;
sbit jian=P3^3;

sbit LS138A = P2^2;   //定義138譯碼器的輸入A腳由P2.2控制
sbit LS138B = P2^3; //定義138譯碼器的輸入腳B由P2.3控制
sbit LS138C = P2^4; //定義138譯碼器的輸入腳C由P2.4控制
//此表為 LED 的字模, 共陰數碼管   0-9  -
BYTE code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
WORD LedOut[10];//數碼管數組

/***************************************************************************

  *
*                    延時程序               *
****************************************************************************/

void Delay(WORD n)
{
    WORD x;

    while (n--)
    {
        x = 250;
        while (x--);
    }
}
/***************************************************************************

  *
*                    顯示函數               *
****************************************************************************/
void display(WORD num)
{

         WORD i,LedNumVal ;
LedNumVal=num;  
  
LedOut[0]=Disp_Tab[LedNumVal%100000/10000]; //萬位
    LedOut[1]=Disp_Tab[LedNumVal%10000/1000];  //千位
     LedOut[2]=Disp_Tab[LedNumVal%1000/100];   //百位
     LedOut[3]=Disp_Tab[LedNumVal%100/10];  //十位
LedOut[4]=Disp_Tab[LedNumVal%10]; //個位
 
     LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80;  //百位帶小數點
     LedOut[6]=Disp_Tab[LedNumVal%100/10];   //十位
     LedOut[7]=Disp_Tab[LedNumVal%10];             //個位
 
for( i=0; i<8; i++)  //實現8位動態掃描循環

P0 = LedOut[i];  //將字模送到P0口顯示
         switch(i)  //使用switch 語句控制位選  也可以是用查表的方式 
    {   
case 0:LS138A=0; LS138B=0; LS138C=0;  break;        
   case 1:LS138A=1; LS138B=0; LS138C=0;  break;           
   case 2:LS138A=0; LS138B=1; LS138C=0;  break;
   case 3:LS138A=1; LS138B=1; LS138C=0;  break;
case 4:LS138A=0; LS138B=0; LS138C=1;  break;
case 5:LS138A=1; LS138B=0; LS138C=1;  break;
case 6:LS138A=0; LS138B=1; LS138C=1;  break;
case 7:LS138A=1; LS138B=1; LS138C=1;  break;
 
    }
 
Delay(1);

}
}
//定時器初始化
void Time0_init()
{
  TMOD=0x01;           //定時器0工作方式1
  IE=0x82;
  TH0=0xfe;
  TL0=0x33;     //11.0592MHZ晶振,0.5ms
  TR0=1;
}
//定時器0中斷程序
void Time0() interrupt 1
{
  TH0=0xfe;
  TL0=0x33;
  if(count<jd)           //判斷0.5ms次數是否小于角度標識
     pwm=1;     //是,pwm輸出高電平
  else
  pwm=0;     //否,輸出低電平
  count=count+1;
  count=count%40;  //次數始終保持為40,即保持周期為20ms
}
//按鍵掃描
void keyscan()
{
  if(jia==0)
  {
   Delay(1);
   if(jia==0)
   {
     jd++;      //角度增加 1
  count=0;     //按鍵按下則20ms周期重新開始計時
  if(jd==6)
    jd=5;     //已經是180度,保持
   while(jia==0);
   }
  }
    if(jian==0)
   {
     Delay(1);
  if(jian==0)
  {
    jd--;
    count=0;
    if(jd==0)
      jd=1;   //已經0度,保持
   while(jian==0);
  }
   }
}
void main()
{
 jd=1;
 count=0;
 Time0_init();
 while(1)
 {
  keyscan();
  display(jd);
 }
}
 

關閉窗口

相關文章

主站蜘蛛池模板: 亚洲免费在线 | 欧美精品在线免费 | www日本在线 | 成人h片在线观看 | 日韩av视屏 | 中文字幕高清一区 | 91视频网址 | 国产精品久久久久久久久久久新郎 | 国产欧美性成人精品午夜 | 日韩美女一区二区三区在线观看 | 欧美精品日韩精品国产精品 | 99re6热在线精品视频播放 | 欧美日韩一区二区三区四区五区 | 亚洲免费在线播放 | 精品一区二区电影 | 国产精品久久一区 | 91精品国产综合久久福利软件 | 日韩午夜 | 天天看天天摸天天操 | 在线成人www免费观看视频 | 天天干狠狠 | 亚洲午夜精品视频 | www.蜜桃av.com| 国产精品免费一区二区 | 九九看片| 黄色毛片免费视频 | 人人做人人澡人人爽欧美 | 综合激情av| 老司机午夜性大片 | 成人免费日韩 | 久久久免费| 中文字幕韩在线第一页 | 成人区一区二区三区 | 中文欧美日韩 | 成人久久久 | 久久精品国产久精国产 | 久久久久无码国产精品一区 | 亚洲成人网在线播放 | 成人看片在线观看 | 狠狠躁夜夜躁人人爽天天高潮 | 影音先锋中文字幕在线观看 |