《PWM调速的C语言程序编写非常简单.docx》由会员分享,可在线阅读,更多相关《PWM调速的C语言程序编写非常简单.docx(4页珍藏版)》请在优知文库上搜索。
1、PWM调速的C语言程序编写关于PWM的原理在上一篇文章中已经说的很具体了,现在就细说一下PwmC语言程序的编写。C语言中PWM的编写有这么几种方法;一、用一般的I/O口输出的PWM,二、运用定时计数器编写,三、就是运用片内PWM了。1先说运用一般的IO口编写PWM程序了。运用o口输出PwM波形体方Inr先明白PwM他的实质是:w制占空比,占空比就是波彩中育电平的长度与整个波长的比值。我们写C语音的目的是写PwM波形的一个同期。在这个周期内凹凸电平的比值是可以变更的。这也就符合了PWM的原意脉宽调制。即高电平的宽度的调制。当绘了PwM他也可用于变更发率,我们这里只先说他变更脉宽。一旦我们的C语言
2、程序写完那么能产生的PWM波形的发率就肯定了。(也可写发率变更的PWM,难度有点大)一般我们限制运用IK到IOK的PWM波进行限制。当然了你也可在要求不是很商的地方运用频率更低的PwM波。比如在飞思卡尔智能率竟妻中我们学校运用的PWM波发率只有6HZ.我们要变更一个PWM波网期内的商电平的宽度明敢便将一PwM波的周期分成单片机可以限制的N个小的属期,N的取值越大你的调速等级越高,但产生的FWM疹率就越低。我们下面以实现1级调速为例编写PWM程序。先写出程序再渐渐给大家分析voidpwm(ucharx,uinty)X为占空比Y为函数运用时间uinti,j,a,b;定时外函数定时内函数for(a-
3、y;a0;a-)PWM波商电平宽度PORTA-0X01;for(b-1-yjbOjb-)/PWM低电平宽度PORTA-OX;这个程序修简洁电轻松的实现AVR单片机的PAQ口出TKHZ左右的PWM脉冲你可以将PORTA-OX01;改为P1.00X01;就可以移植到51单片机上了为什么运用参数丫定时是因为用一般I/O口PR制它的开关没有运用定时卷1写的捷。假如这不符合你的融你可以不运用时间参数丫限制他的开关,只要去掉关于Y的部分利用限制I/O口的方一直限制它的运用上面的程序数如下在megal6单片机上运用8M晶摄一个PWM脉冲大妁128st环7次是940ms所以,出PwM豚冲Ii率是7KHZ左右留京:我运用时精度要求不育所以没有考虚for语句运行时花费的时间故实际占空比略低,但误差是很小的。须要商精度的挚友可以自己做修改。2.下面说如何运用定时/计数器来编写PWMC语言程序;