c51单片机利用脉宽调制控制多路舵机c语言程序

c51单片机利用脉宽调制控制多路舵机c语言程序

ID:11424436

大小:19.51 KB

页数:4页

时间:2018-07-11

c51单片机利用脉宽调制控制多路舵机c语言程序_第1页
c51单片机利用脉宽调制控制多路舵机c语言程序_第2页
c51单片机利用脉宽调制控制多路舵机c语言程序_第3页
c51单片机利用脉宽调制控制多路舵机c语言程序_第4页
资源描述:

《c51单片机利用脉宽调制控制多路舵机c语言程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、51单片机的资源都差不多,这里采用STC89C52作为控制芯片,上位机的输出控制信号,利用串口接收控制舵机。理论上,只用一个定时器就可以产生无限多路PWM波输出,但事实上,PWM输出越多,定时器中断里面操作的语句就越多,很繁杂,单片机的运行速度会变得很慢,以致于输出PWM波周期大于一般舵机的控制周期20ms,或者频率产生误差,导致舵机的颤抖。所以,只利用一个定时器输出PWM有一定限制,路数不能太多,如果需要控制的舵机数量太多,建议更换带有PWM输出的单片机。下面是单片机控制三路舵机的程序。#includesbitduoji1=P

2、3^2;//PWM输出口1sbitduoji2=P2^4;//PWM输出口2sbitduoji3=P2^5;//PWM输出口3intt,xinhao[3],flag;//xinhao[3]是上位机传来的三个控制信号voidmain(){EA=1;flag=0;for(t=0;t<3;t++)xinhao[t]=15;//初始化控制信号t=0;TMOD=0x21;//设置定时器1的工作方式为3,用于产生波特率,//接收串口的数据,设置定时器0的工作方式为1,//用于控制舵机的PWM波输出TH1=0xfd;//设置串口波特率为9600TL1=0xfd

3、;TR1=1;ES=1;REN=1;SM0=0;SM1=1;PCON=0x00;TH0=(65536-40)/256;//定时器0每40微妙产生一次中断,注意://中断产生的频率越高,单片机运行速度也//会越慢,但控制信号宽度会变宽,控制也//越精准,需要各位自己权衡TL0=(65536-40)%256;ET0=1;TR0=1;while(1);}voidtimer0()interrupt1//PWM波输出控制{TH0=(65536-40)/256;TL0=(65536-40)%256;t++;if(t==xinhao[0])duoji1=0;i

4、f(t==xinhao[1])duoji2=0;if(t==xinhao[2])duoji3=0;if(t==500)//{t=0;duoji1=1;duoji2=1;duoji3=1;}}voidserial()interrupt4//接收上位机的控制数据{if(flag==0){xinhao[0]=SBUF;flag=1;RI=0;}elseif(flag==1){xinhao[1]=SBUF;flag=2;RI=0;}elseif(flag==2){xinhao[2]=SBUF;flag=0;RI=0;}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。