两种方法教你如何有效地利用51单片机产生PWM波 | 您所在的位置:网站首页 › pwm产生的三种方法 › 两种方法教你如何有效地利用51单片机产生PWM波 |
89C51芯片没有自带PWM发生器,如果要用51来产生PWM波就必须要用软件编程的方法来模拟。方法大概可以分为软件延时和定时器产生两种方法。下面将逐一介绍。 1 软件延时法 利用软件延时函数,控制电平持续的时间,达到模拟pwm的效果。 程序如下: #include sbit pwm=P1^0; main() { while(1) { pwm=1; delayus(60);//置高电平后延时60us,占空比60% pwm=0; delayus(40); } } void delayus(uint x) { while(x--); } proteus软件仿真结果如下:
可见,用这种延时函数的方法就能简单地模拟出pwm输出。但是这种方法的缺点也相当明显。当程序除了要输出pwm波还要执行其他操作比如键盘扫描、显示等操作时,需要占用CPU一定的机器周期,这样就会影响pwm的准确度。现在很少会用到这种方法,接下来要介绍的是比较常用的方法。 2 定时器产生pwm 这种方法利用了定时器溢出中断,在中断服务程序改变电平的高低,在程序较复杂、多操作时仍能输出较准确的pwm波形。 2.1 注意事项 2.2.1中断服务程序的内容。 一般来说中断服务程序只完成改变标志位、转换高低电平的功能,如果中断服务程序中有太多的操作会影响pwm波的输出,尤其是除法、取余、浮点数运算会占用大量的机器周期,应在中断外完成运算。2.2.2定时器装入初值的问题。 装入初值不能太接近于定时器的溢出值。如我们使用定时器方式1,最多能计65536个数,假设我们转入的初值为65534,那么定时器计两个数就会进入中断,这样会使程序紊乱而其他功能无法正常地执行,所以一般要留50-100个数的裕量。 2.2 定时器工作方式 在定时器工作方式的选择上,可以选择定时器的工作方式0、1、2都可以,本文采用的是工作方式1,即16位定时器,这样可以获得较宽的调频范围。 2.3 定时器初值的计算 设占空比为α,频率为f 产生高电平时装入定时器高8位的值应为 产生高电平时装入定时器低8位的值应为 显然,产生低电平时的公式只要把α换成(1-α)就行了。 然而在51单片机中,浮点数运算需要消耗cpu很长的时间,为了提高程序效率,通常用100倍的占空比来计算。同时,要注意数据类型,避免超出范围,影响计算结果。关于C51的乘除法问题,可以看以下这篇文章:http://blog.163.com/ssou_1985/blog/static/295320362010311102232210/ 修改后的公式如下:a为100倍占空比,fr为0.01倍频率TH0 = (65535-a*100/fr)/256; //高位初值TL0 = (65535-a*100/fr)%256;同样,低电平的公式只需把a换成(100-a)即可。 2.4 例程 本例程采用定时器T0在工作方式1下产生一路PWM,用独立键盘控制频率、占空比的加减,频率可调范围100Hz-10kHz,占空比0-100%(均为理论值,实际值略低)部分代码如下:
注:T0_H , T0_L , T1_H , T1_L 均用于暂时存储初值,进入中断服务程序后直接给寄存器TH0、TL0赋值,避免了在中断中计算。
注:flag为pwm输出标志,flag=1输出高电平,flag=0输出低电平 2.5 软件仿真结果 2.5.1 频率为100Hz a.占空比约15%
b.占空比95%
2.5.2 频率为10KHz a.占空比15%
b.占空比90% 声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉 PWM PWM +关注 关注 114文章 4785浏览量 209408 51单片机 51单片机 +关注关注 269文章 5640浏览量 120298原文标题:51单片机产生PWM方法 文章出处:【微信号:mcugeek,微信公众号:MCU开发加油站】欢迎添加关注!文章转载请注明出处。 收藏 人收藏扫一扫,分享给好友 复制链接分享 评论发布评论请先 登录 相关推荐 【原创】51单片机PWM波控制直流电机转速,仿真、原理图和代码 单片机产生脉宽可调的脉冲信号并输入到L298驱动芯片来控制直流电机工作的。 该直流电机PWM控制系统由以下电路模块组成: 设计输入部分:这一模块主要是利用带中断的独立式键盘来实现对直流 发表于 03-13 00:33 基于51单片机的PWM发生器设计 电子发烧友网站提供《基于51单片机的PWM发生器设计.rar》资料免费下载 发表于 01-12 10:29 •1次下载 PWM产生的几种方法总结 PWM产生的方法有很多种,小编将常用的几种产生方法作了一个整理以及分类,下面我们来了解一下。 发表于 01-11 09:15 •541次阅读 基于51单片机的PWM发生器设计 电子发烧友网站提供《基于51单片机的PWM发生器设计.rar》资料免费下载 发表于 01-07 09:38 •1次下载 基于51单片机双极型PWM的软件实现 电子发烧友网站提供《基于51单片机双极型PWM的软件实现.doc》资料免费下载 发表于 10-30 09:26 •0次下载 如何使用标准51定时器0产生pwm波? 如何使用标准51定时器产生pwm波 发表于 10-30 07:03 c51单片机怎么实现pwm波? c51单片机怎么实现pwm波 发表于 10-17 07:53 51单片机可以产生65KHz的正弦波吗? 51单片机可以产生65KHz的正弦波么 发表于 10-17 06:39 没有示波器之类的仪器,如何用软件检测单片机输出的PWM波? 用的单片机是STC12C5A10S2,写了一个程序让它的一个IO口输出PWM波,没有示波器,逻辑分析仪等硬件仪器,那如何看这个PWM波程序的 发表于 09-27 07:47 51单片机用定时器产生pwm有干扰是什么原因造成的? 用51单片机定时器输出pwm,如果主循环是空的话,pwm波形很完美,如何执行其他函数,波形会抖动,只有一个定时器中断产生 发表于 09-25 06:01 基于单片机用软件实现直流电机PWM调速系统 介绍了基于单片机用PWM实现直流电机调整的基本方法,直流电机调速的相关知识,及PWM调整的基本原理和实现方法。重点介绍了基于MCS一 发表于 09-22 07:56 pwm产生的三种方法 pwm产生的三种方法 PWM(Pulse Width Modulation)是一种常用的控制技术,可以通过调节开关管的通断时间,通过改变输出波形的占空比来实现对电路的控制。在现代工业控 发表于 09-02 10:25 •4832次阅读 基于51单片机的占空比可调方波(PWM)例程源代码 基于51单片机的单片机产生占空比可调方波(PWM)例程源代码 发表于 05-12 15:59 •19次下载 单片机控制pwm波输出,每次烧录后pwm输出不正常 有无朋友回答一下stm32单片机烧录之后的状态;我用stm32输出pwm波控制舵机,我设置的正常初始化输出pwm波脉冲宽度是0.5ms,但每 发表于 04-05 23:07 单片机的直流电机控制PWM调速代码分享 中断来实现及时切换高低电平。具体历程见以下51单片机部分。 **定时器** 要想使用51单片机来产生一路 发表于 03-22 16:17 |
CopyRight 2018-2019 实验室设备网 版权所有 |