求高人写一个用c语言写一个51单片机输出PWM控制舵机的程序,舵机参数可以自己定。最好加注释。高分谢谢啦

求高人写一个用c语言写一个51单片机输出PWM控制舵机的程序,舵机参数可以自己定。最好加注释。高分谢谢啦,第1张

用带PWM输出的单片机做吧!51单片机只能通过定时器来实现。

想12C2052AD这些单片机就带PWM输出的。他的PWM输出程序:

#include<reg52h>

sfr CCON =0xD8;

sfr CMOD=0xD9;

sfr CL=0xE9;

sfr CH =0xF9;

sfr CCAP0L=0xEA;

sfr CCAP0H=0xFA;

sfr CCAPM0=0xDA;

sfr CCAPM1=0xDB;

sbit CR =0xDE

void main(void)

{

CMOD = 0X02;//

CL =0X00;//

CH =0X00;//

CCAP0L = 0xc0;//设置初值

CCAP0H= 0xc0;//输出占空比为25%的波形

CCAPM0 = 0x42;//PWM的输出模式

CR =1 ;启动PCA定时器

while(1){};

}

上面是输出PWM的程序,你把PWM输出端接到你的舵机控制端,再启动PCA就OK了,改变CCAP0的值就可以改变占空比

这个可以用三个I/o口,用定时器0分时启动三路PWM波,代码的话,每次中断给计数器赋下次中断的时间,void T0_time() interrupt 1 //通过定时器0产生多路PWM,每次中断赋值下一次中断的时间,

{ //两个t[]一组,在20ms周期内分时启动各路PWM高电平,

TH0=(65536-9216t[i])/256; //各路的高电平只需1-2ms

TL0=(65536-9216t[i])/256;

i++;

switch(i)

{

case 1:

k1=1;

break;

case 2:

k1=0;

break;

case 3:

k2=1;

break;

case 4:

k2=0;

break;

case 5:

k3=1;

break;

case 6:

k3=0;

break;

}

以上就是关于求高人写一个用c语言写一个51单片机输出PWM控制舵机的程序,舵机参数可以自己定。最好加注释。高分谢谢啦全部的内容,包括:求高人写一个用c语言写一个51单片机输出PWM控制舵机的程序,舵机参数可以自己定。最好加注释。高分谢谢啦、用51单片机控制3路舵机、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9764231.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存