pwm调速c语言,PWM调速的C语言程序编写

《PWM调速的C语言程序编写》由会员分享,可在线阅读,更多相关《PWM调速的C语言程序编写(6页珍藏版)》请在人人文库网上搜索。

1、PWM调速的C语言程序编写关于PWM的原理在上一篇文章中已经说的很详细了,现在就细说一下pwm C语言程序的编写。C语言中PWM的编写有这么几种方法;一、用普通的I/O 口输出的PWM ,二、使用定时计数器编写,三、就是使用片内 PWM 了1先说使用普通的lO 口编写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程序。先写出程序再慢慢给大家分析void pwm (uchar x,uint y) uint i,j,a,。

3、b;for(i=y;i0;i-)for(j=7;j0;j-)for(a=y;a0;a-)PORTA=0X01;for(b=100-y;b0;b-)PORTA=OXOO;/X为占空比丫为函数使用时间/定时外函数/定时内函数/PWM波高电平宽度/PWM低电平宽度这个程序够简单吧 轻松的实现AVR单片机的PA.0 口输出7KHZ左 右的PWM脉冲你可以将PORTA=0X01;改为P1.0=0X01;就可以移植到51单片机 上了为什么使用参数丫定时是因为用普通I/O 口控制它的开关没有使用 定时器编写的灵活。如果这不符合你的需要 你可以不使用时间参数 丫控制他的开关,只要去掉关于 Y的部分 利用控制I/O 口的方向来 控制它的使用上面的程序参数如下在mega16单片机上使用8M晶振一个PWM 脉冲大约128 e循环7次是940ms 所以输出PWM脉冲频率是7KHZ左右注意:我使用时精度要求不高 所以没有考虑for语句运行时花费的 时间故实际占空比略低,但误差是很小的。需要高精度的朋友可以自 己做修改。感谢下载!欢迎您的下载,资料仅供参考。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值