打印

为什么用51单片机定时器输出PWM控制舵机会有很大的误差?

[复制链接]
7152|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elephant00|  楼主 | 2021-8-23 11:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[C] 纯文本查看 复制代码
#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit pwm=P2^0;uint pwm_val;void delayms(uint xms);   //软件延时函数void timer_set(uint value);void main(){   TMOD=0X01;              //定时器初始化   TH0=(65536-1000)/256;       TL0=(65536-1000)%256;    EA=1;    ET0=1;    TR0=1;      while(1)   {      pwm_val=500;      delayms(1000);            pwm_val=1500;      delayms(1000);   }}void timer0() interrupt 1{   static uchar i=1;   TR0=0;      switch(i)            //两角度之间切换   {      case 1:                    {            pwm=1;            timer_set(pwm_val);         }break;      case 2:         {            pwm=0;            timer_set(20000-pwm_val);            i=0;         }break;      default: break;   }   i++;}void timer_set(uint value){   TH0=(65536-value)/256;   TL0=(65536-value)%256;   TR0=1;}void delayms(uint xms){uint i,j;for(i=xms;i>0;i--)for(j=125;j>0;j--);}

使用特权

评论回复

相关帖子

沙发
LcwSwust| | 2021-8-23 12:14 | 只看该作者
这排版太乱。
没看出来有误差。
为什么说它有“很大误差”?

使用特权

评论回复
板凳
m564522634| | 2021-8-23 16:51 | 只看该作者
你这排版格式 别人没法看呀,误差是哪里的误差,PWM 波型怎么样有测量过吗?

使用特权

评论回复
地板
coody| | 2021-8-24 11:55 | 只看该作者
PWM是一个数字外设,怎么会有误差?

使用特权

评论回复
5
linxi6414| | 2021-8-24 23:22 | 只看该作者
看到这么多的delay,难道楼主是刚刚学的编程?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

970

主题

2981

帖子

7

粉丝