BET体育365官网首页

电位器控制舵机

电位器控制舵机

1.题目要求为了使ADC的知识能配合其他模块实现不同功能,这里我们打算通过扭动电位器(滑动变阻器)来控制舵机桨的位置,如果我们顺时针扭一圈电位器,那么舵机桨也会跟着从一端旋转到另一端。

2.main.c测试代码#include

#include //详见第六章第8讲

#include //详见第八章第11讲

#include //详见第十一章第3讲

#include //详见第十四章

sbit PWMOUT=P1^7; //舵机信号线接口

u8 flag20ms = 0;

u8 PWM_VAL = 0;

void main()

{

u8 val;

u8 str[10];

EA = 1;

InitLcd1602(); //初始化液晶屏

TIM1_Init(20000,6); //定时20ms,6是微调使定时精度更高

TIM0_Init(100,9); //定时0.1ms,舵机专用,9是微调使定时精度更高

LcdShowStr(6, 0, "AIN0");

while (1)

{

if (flag20ms) //每隔20ms获取一次ADC通道0的转换值

{

flag20ms = 0;

val = GetADCValue(0); //获取ADC通道0的转换值

ValueToString(str, val); //转为字符串格式的电压值

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

else PWMOUT=0;

}

void TIM1_IRQHandler() interrupt 3

{

TH1 = T1RH; //重新加载重载值

TL1 = T1RL;

flag20ms = 1;

}我们把上一章测试AD,DA所拔下的跳线帽插回去先。开发板底部中间处有一个电位器,大家用一字螺丝刀来旋转电位器就可以观察到舵机桨跟着旋转了。此外舵机的电源供电最好使用外部电源,用开发板来给舵机供电会导致液晶屏失压闪烁,而且舵机的稳定性也不是很好,笔者测试的时候是使用另外的5V电源电压给舵机供电,连接图如下

← 维果部落Vingoo品牌介绍 中国足协:对世预赛0比7不敌日本之战 深刻反思 →

相关推荐