两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

1.按鍵控制舵機槳

為了再次領悟舵機的運用,我們使用按鍵控制舵機槳在我們想要的位置上停留。

K8負責控制舵機槳往一個方向不停旋轉,K16則控制相反方向旋轉。按鍵模式為支持連按。然后數碼管顯示高電平持續(xù)的時間,如果數碼管顯示5,則高電平在20ms周期里持續(xù)的時間為0.5ms,如果顯示的是20,那就是持續(xù)2ms的高電平時間。

#include <reg52.h> 
#include <function.h>//詳見第六章第8講
#include <timer.h>   //詳見第八章第11講
sbit PWMOUT = P1^7;  //舵機信號線引腳
 
u16 highval=15; 
void main()
{   
    u8 key;
    LED_Init();//初始化LED硬件模塊
    KEY_Init();//初始化按鍵模塊
    EA = 1;    //閉合總中斷開關
    TIM0_Init(100,9); //定時0.1ms,9是微調使定時精度更高
    TIM1_Init(1000,0);//定時1ms,用來刷新數碼管顯示,定時精度要求不高可不微調
 
    ShowNumber(highval);
    while(1)
    {      
        key=KEY_Scan(1,500);//支持連按 
        if(key==8)
        {
            highval++;
            if(highval>25)highval=25;//高電平持續(xù)時間不能超過2.5ms
            ShowNumber(highval);
        }
 
        if(key==16)
        {
            highval--;
            if(highval<5)highval=5;//高電平持續(xù)時間不能低于0.5ms
            ShowNumber(highval);
        }     
    }   
}
  
void TIM0_IRQHandler() interrupt 1
{ 
    static u8 pwm=0;
    TH0 = T0RH;  //重新加載重載值
    TL0 = T0RL;
    
    pwm++;
    if(pwm>=200)pwm=0;//pwm在0~199之間間隔0.1ms變化,周期為20ms
 
    if(pwm<highval)PWMOUT=1;//highval的值決定舵機槳的停留位置
    else PWMOUT=0; 
}
 
void TIM1_IRQHandler() interrupt 3
{ 
    TH1 = T1RH;  //重新加載重載值
    TL1 = T1RL;
    SEG_Scan();
}

 

2.呼吸燈思想與舵機

呼吸燈的程序思想如果用在舵機控制上,那么舵機槳就是從0度的位置轉到180度的位置又從180度處轉回0度處如此循環(huán)往復,現在我們動手改寫一下呼吸燈的程序使其能融入舵機的控制中。

#include <reg52.h> 
#include <function.h>//詳見第六章第8講
#include <timer.h>   //詳見第八章第11講
sbit PWMOUT = P1^7;  //舵機信號線引腳

u16 highval=5; 
void main()
{   
    u8 key;
    LED_Init();//初始化LED硬件模塊
    KEY_Init();//初始化按鍵模塊
    EA = 1;    //閉合總中斷開關
    TIM0_Init(100,9);  //定時0.1ms,9是微調使定時精度更高
    TIM1_Init(50000,0);//定時50ms,定時精度要求不高可不微調
    while(1);
}
 
void TIM0_IRQHandler() interrupt 1
{ 
    static u8 pwm=0;
    TH0 = T0RH;  //重新加載重載值
    TL0 = T0RL;
   
    pwm++;
    if(pwm>=200)pwm=0;//pwm在0~199之間間隔0.1ms變化,周期為20ms

    if(pwm<highval)PWMOUT=1;//highval的值決定舵機槳的停留位置
    else PWMOUT=0; 
}

void TIM1_IRQHandler() interrupt 3
{ 
    static u8 dir;
    TH1 = T1RH;  //重新加載重載值
    TL1 = T1RL;
      
    //控制highval只能在5~24之間變化
    if(dir==1)highval--;//占空比逐漸減少,舵機槳往0度的位置走動
    if(highval<5)dir=0;

    if(dir==0)highval++; //占空比逐漸增加,舵機槳往180度的位置走動
    if(highval>=24)dir=1;//測試發(fā)現,24已經是舵機漿的盡頭,無需寫25
}

本章的舵機知識內容比較少,主要是簡單入門使用舵機,后期的教程我們再用其他模塊配合舵機一起實戰(zhàn)。

點贊(0)

C語言網提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:

一點編程也不會寫的:零基礎C語言學練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學奧賽或C++選手的 必學C++課程

藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程

手把手講解近五年真題的藍橋杯輔導課程

Dotcpp在線編譯      (登錄可減少運行等待時間)