好文档 - 专业文书写作范文服务资料分享网站

PWM调速的C语言程序编写

天下 分享 时间: 加入收藏 我要投稿 点赞

第6章 PWM控制技术

PWM调速的C语言程序编写

关于PWM的原理在上一篇文章中已经说的很详细了 ,现在就细说一下pwm C语言程序的编写。

C语言中PWM的编写有这么几种方法;一、用普通的I/O口输出的PWM ,二、使用定时计数器编写,三、就是使用片内PWM了。

1 先说使用普通的I\\O口编写PWM程序了。

使用I/O口输出PWM波形你必须首先明白PWM他的实质是:调制占空比,占空比就是波形中高电平的长度与整个波长的比值。我们写C语言的目的是写PWM波形的一个周期。在这个周期内高低电平的比值是可以改变的。这也就符合了PWM的原意脉宽调制。即高电平的宽度的调制。当然了PWM他也可用于改变频率,我们这里只先说他改变脉宽。

一旦我们的C语言程序写完那么他产生的PWM波形的频率就一定了。(也可写频率变化的PWM,难度有点大)一般我们控制使用1K到10K的PWM波进行控制。当然了你也可在要求不是很高的地方使用频率更低的PWM波。比如在飞思卡尔智能车比赛中我们学校使用的PWM波频率只有600HZ.

我们要改变一个PWM波周期内的高电平的宽度显然需要将一个PWM波的周期分成单片机可以控制的N个小的周期,N的

页脚内容

1

第6章 PWM控制技术

取值越大你的调速等级越高,但产生的PWM频率就越低。我们下面以实现100级调速为例编写PWM程序。

先写出程序再慢慢给大家分析

void pwm (uchar x,uint y) //X 为占空比 Y为函数使用时间

{ uint i,j,a,b;

for(i=y;i>0;i--) //定时外函数

{

for(j=7;j>0;j--) //定时内函数

{

for(a=y;a>0;a--) //PWM波高电平宽度

{

PORTA=0X01; }

页脚内容

2

第6章 PWM控制技术

for(b=100-y;b>0;b--) //PWM低电平宽度

{

PORTA=0X00; } } } }

这个程序够简单吧 轻松的实现AVR单片机的PA.0口输出7KHZ左右的PWM脉冲

你可以将PORTA=0X01;改为P1.0=0X01;就可以移植到51单片机上了

为什么使用参数Y定时 是因为用普通I/O口控制它的开关没有使用定时器编写的灵活。如果这不符合你的需要 你可以不使用时间参数Y控制他的开关,只要去掉关于Y的部分 利用控制I/O口的方向来控制它的使用

上面的程序参数如下

在mega16单片机上使用 8M晶振

页脚内容

3

PWM调速的C语言程序编写

第6章PWM控制技术PWM调速的C语言程序编写关于PWM的原理在上一篇文章中已经说的很详细了,现在就细说一下pwmC语言程序的编写。C语言中PWM的编写有这么几种方法;一、用普通的I/O口输出的PWM,二、使用定时计数器编写,三、就是使用片内PWM了。1先说使用普通的I\\O口编写PWM程序了。
推荐度:
点击下载文档文档为doc格式
0swvs7nbl29kfa2517te4mn0g1mmhw00jmx
领取福利

微信扫码领取福利

微信扫码分享