PWM调速的C语言程序编写(非常简单)

PWM调速的C语言程序编写(非常简单)

ID:42323327

大小:31.01 KB

页数:4页

时间:2019-09-12

PWM调速的C语言程序编写(非常简单)_第1页
PWM调速的C语言程序编写(非常简单)_第2页
PWM调速的C语言程序编写(非常简单)_第3页
PWM调速的C语言程序编写(非常简单)_第4页
资源描述:

《PWM调速的C语言程序编写(非常简单)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、PWM调速的C语言程序编写关于PWM的原理在上一篇文章中已经说的很详细了,现在就细说一下pwmC语言程序的编写。C语言中PWM的编写有这么几种方法;一、用普通的I/O口输出的PWM,二、使用定时计数器编写,三、就是使用片内PWM了。1先说使用普通的IO口编写PWM程序了。      使用I/O口输出PWM波形你必须首先明白PWM他的实质是:调制占空比,占空比就是波形中高电平的长度与整个波长的比值。我们写C语言的目的是写PWM波形的一个周期。在这个周期内高低电平的比值是可以改变的。这也就符合了PWM的原意脉宽调制。即高电平的宽度的调制。当然了PWM他也可用于改变

2、频率,我们这里只先说他改变脉宽。     一旦我们的C语言程序写完那么他产生的PWM波形的频率就一定了。(也可写频率变化的PWM,难度有点大)一般我们控制使用1K到10K的PWM波进行控制。当然了你也可在要求不是很高的地方使用频率更低的PWM波。比如在飞思卡尔智能车比赛中我们学校使用的PWM波频率只有600HZ.     我们要改变一个PWM波周期内的高电平的宽度显然需要将一个PWM波的周期分成单片机可以控制的N个小的周期,N的取值越大你的调速等级越高,但产生的PWM频率就越低。我们下面以实现100级调速为例编写PWM程序。    先写出程序再慢慢给大家分析  

3、 voidpwm(ucharx,uinty)   //X为占空比Y为函数使用时间{  uinti,j,a,b;  for(i=y;i>0;i--)                         //定时外函数{   for(j=7;j>0;j--)                      //定时内函数  {   for(a=y;a>0;a--)                 //PWM波高电平宽度  {   PORTA=0X01;  }for(b=100-y;b>0;b--)            //PWM低电平宽度{PORTA=0X00;}  }  

4、}}这个程序够简单吧轻松的实现AVR单片机的PA.0口输出7KHZ左右的PWM脉冲你可以将PORTA=0X01;改为P1.0=0X01;就可以移植到51单片机上了为什么使用参数Y定时是因为用普通I/O口控制它的开关没有使用定时器编写的灵活。如果这不符合你的需要你可以不使用时间参数Y控制他的开关,只要去掉关于Y的部分利用控制I/O口的方向来控制它的使用上面的程序参数如下在mega16单片机上使用8M晶振  一个PWM脉冲大约128μs    循环7次是940ms  所以输出PWM脉冲频率是7KHZ左右注意:我使用时精度要求不高所以没有考虑for语句运行时花费的时间

5、故实际占空比略低,但误差是很小的。需要高精度的朋友可以自己做修改。2.下面说如何使用定时/计数器来编写PWMC语言程序;

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

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

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