找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

舵机控制示波器图,波形缺角怎么解决

[复制链接]
admin 发表于 2012-9-2 13:33:41 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本人在研究用单片机机控制舵机时,用定时器参生如图波形,在占空比为50%左右时波形正常,当占空比越小时,波形右下角就会变形,当占空比大于50%时,右上角显示不正常,图中的占空比为20%,哪位高人能指点下是哪的问题?代码:
#include < reg51.h >
unsigned int PWM_T=20; //占空比控制变量
void delayms(unsigned char ms);
sbit K1=P2^0;
sbit K2=P2^1;
void main(void) // 主程序
{ //unsigned int n; //延时循环变量
TMOD=0x02; //定时器0,工作模式2(0000,0010),8位定时模式
TH0=56; //写入预置初值6到定时器0,使200微秒溢出一次(12MHz)
TL0=56; //写入预置值
ET0=1; //允许定时器0中断
EA=1; //允许总中断
TR0=1; //启动定时器
while(1) //无限循环,实际应用中,这里是做主要工作
{
if(K1==0&&PWM_T<100)
PWM_T++; //占空比控制变量加1
delayms(5);
if(K2==0&&PWM_T>0)
PWM_T--;
delayms(5);

}
}
timer0() interrupt 1 //定时器0中断服务程序
{
static unsigned int tt ; //tt用来保存当前时间在一秒中的比例位置
tt++; //每200微秒增加1
if(tt==100) //2毫秒的时钟周期
{ tt=0; //使tt=0,开始新的PWM周期
P0=0x00; //使LED灯亮
}
if(PWM_T==tt) //按照当前占空比切换输出为高电平
P0=0xff; //使LED灯灭
}
/*********************************************************/
// 延时子程序
/*********************************************************/
void delayms(unsigned char ms)
{
unsigned char i ;
while(ms--)
{
for(i = 0 ; i < 120 ; i++) ;
}
}

15_112255_005f11cef0d7aa2.jpg
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-25 02:31 , Processed in 0.063255 second(s), 14 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表