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

1.題目要求

為了使ADC的知識能配合其他模塊實現(xiàn)不同功能,這里我們打算通過扭動電位器(滑動變阻器)來控制舵機(jī)槳的位置,如果我們順時針扭一圈電位器,那么舵機(jī)槳也會跟著從一端旋轉(zhuǎn)到另一端。


2.main.c測試代碼

#include <reg52.h>
#include <function.h>//詳見第六章第8講
#include <timer.h>   //詳見第八章第11講
#include <lcd.h>     //詳見第十一章第3講
#include <adc.h>     //詳見第十四章
 
sbit PWMOUT=P1^7;    //舵機(jī)信號線接口
u8  flag20ms = 0;
u8  PWM_VAL  = 0;

void main()
{
    u8 val;
    u8 str[10];
    EA = 1;     
    InitLcd1602();      //初始化液晶屏
    TIM1_Init(20000,6); //定時20ms,6是微調(diào)使定時精度更高
    TIM0_Init(100,9);   //定時0.1ms,舵機(jī)專用,9是微調(diào)使定時精度更高
  
    LcdShowStr(6, 0, "AIN0");
    while (1)
    {
        if (flag20ms)                 //每隔20ms獲取一次ADC通道0的轉(zhuǎn)換值
        {
            flag20ms = 0;
            val = GetADCValue(0);     //獲取ADC通道0的轉(zhuǎn)換值   
            ValueToString(str, val);  //轉(zhuǎn)為字符串格式的電壓值
            LcdShowStr(6, 1, str);    //顯示通道0的電壓    
            PWM_VAL=val/14+5;         //此時PWM_VAL的取值范圍是5~23
        }
    }
}
  
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<PWM_VAL)PWMOUT=1; //PWM_VAL的值決定舵機(jī)槳的停留位置
    else PWMOUT=0;
}
 
void TIM1_IRQHandler() interrupt 3
{  
    TH1 = T1RH;              //重新加載重載值
    TL1 = T1RL;
  
    flag20ms = 1;
}

我們把上一章測試AD,DA所拔下的跳線帽插回去先。開發(fā)板底部中間處有一個電位器,大家用一字螺絲刀來旋轉(zhuǎn)電位器就可以觀察到舵機(jī)槳跟著旋轉(zhuǎn)了。此外舵機(jī)的電源供電最好使用外部電源,用開發(fā)板來給舵機(jī)供電會導(dǎo)致液晶屏失壓閃爍,而且舵機(jī)的穩(wěn)定性也不是很好,筆者測試的時候是使用另外的5V電源電壓給舵機(jī)供電,連接圖如下

電位器

點贊(0)

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

一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程

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

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

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

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

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