历史上的今天
返回首页

历史上的今天

今天是:2025年06月04日(星期三)

正在发生

2020年06月04日 | 用软件编程的方法来模拟51单片机产生PWM波

2020-06-04 来源:elecfans

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倍的占空比来计算。同时,要注意数据类型,避免超出范围,影响计算结果。

修改后的公式如下:

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%

推荐阅读

史海拾趣

Barry Industries Inc公司的发展小趣事

Barry Industries Inc深知品质是企业生存和发展的关键。因此,公司始终将品质管理放在首位,从原材料采购到生产流程控制,再到产品出厂检验,每一个环节都严格把控品质。同时,公司还注重品牌建设,通过提升产品形象和服务水平,逐渐树立了良好的品牌形象。

天二科技(EVER OHMS)公司的发展小趣事

进入90年代,随着电子技术的快速发展,市场对电阻器的要求也越来越高。天二科技紧跟行业趋势,投入大量资源进行技术研发和产品创新。1996年,公司成功推出贴片电阻器,这一产品凭借其优良的性能和稳定的品质,迅速赢得了市场的认可。此后,天二科技又陆续推出了耐高温电阻器、超薄贴片电阻器等一系列新产品,进一步丰富了公司的产品线。

Continental Industries公司的发展小趣事

在电子行业的初期,Continental Industries凭借其深厚的技术积累,成功研发出了一款固态继电器。这款继电器以其高度可靠性、长寿命和减少电磁干扰的特性,迅速在市场中占据了重要地位。公司不断投入研发资源,优化产品性能,逐渐在工业自动化和建筑环境控制领域树立起了技术领先的形象。

Ark-Les Connectors公司的发展小趣事

随着公司规模的扩大和产品线的丰富,Ark-Les Connectors公司开始积极寻求市场拓展。公司制定了针对不同区域和行业的市场拓展策略,通过参加国际电子展会、建立销售网络、开展合作伙伴计划等方式,不断扩大品牌影响力。同时,公司还根据市场需求调整产品策略,推出定制化解决方案,满足不同客户的个性化需求。这些举措使得Ark-Les的市场占有率稳步提升,公司业绩也实现了稳步增长。

Dionics Inc公司的发展小趣事

在经历了一段艰难的市场竞争后,Dionics Inc决定加大研发投入,寻求技术突破。经过数年的努力,公司成功研发出一款具有自主知识产权的高性能微处理器芯片,该芯片在性能上大幅超越同类产品,并在市场上取得了良好的口碑。随着这款芯片的成功上市,Dionics Inc的市场份额也逐渐扩大。

High Voltage Power Solutions Inc公司的发展小趣事

为了进一步拓展国际市场,Dionics Inc开始寻求与国际知名企业的战略合作。经过多次洽谈,公司最终与一家国际知名电子企业达成战略合作协议,共同开发新一代智能穿戴设备。通过这一合作,Dionics Inc不仅获得了宝贵的技术支持和市场资源,还成功将其产品推向了国际市场。

问答坊 | AI 解惑

印制电路板设计原则和抗干扰措施

印制电路板(PCB)是电子产品中电路元件和器件的支撑件。它提供电路元件和器件之间的电气连接。随着电于技术的飞速发展,PCB的密度越来越高。PCB设计的好坏对抗干扰能力影响很大。因此,在进行PCB设计时.必须遵守PCB设计的一般原则,并应符合抗干扰 ...…

查看全部问答>

怎样才能快速入门呢?

一、弄懂电子技术常用名称、概念、图形及文字符号、单位制等   初学者必须弄懂电子技术常用的名称、概念,比如什么是电流、电压、电阻,什么是直流电、交流电,什么是串联、并联、串并联,什么是频率、周期、波长、振幅、相位,什么是阻抗、容抗 ...…

查看全部问答>

分享FPGA教程初级(alter)

alter公司的配套教材,希望对大家有用!!!!…

查看全部问答>

简易配置TFTP

Redhat Linux下tftp服务器配置其实很容易。现以RedHat 7.3为例说明。 1. 如何启动tftp服务?1 执行ntsysv命令,选中tftp服务,再执行service xinetd restart命令。tftp服务就启动了,容易吧。 2. 如何下载文件? 先分析一下tftp的配置文件 ...…

查看全部问答>

IGBT连接铜牌怎样减小电感?

连接IGBT的铜牌,由于存在di/dt , 因此要求其电感越小越好,怎样减少铜牌的电感?…

查看全部问答>

vxWorks信号的使用问题求助

我在利用信号(signal)实现模拟软中断的功能,由于需要模拟定时中断,所以在看门狗(watchDog)服务程序中向目标任务发送信号,以中断目标任务,目标任务总共有32个,但是在该程序的运行过程中,前10个目标任务中出现页错误,后22个任务丢失信号信 ...…

查看全部问答>

virtualcoy 与 dma

在wince下预留一块ram空间作为dma的发送缓冲,应用程序往里写数据,dma读取,问题是在应用程序和驱动中能不能对同一块物理地址同时使用virtualcopy绑定呢?不能的话该怎么做,请高手指点啊…

查看全部问答>

可以作为多任务或多线程之间的通信方式都有哪些?

可以作为多任务或多线程之间的通信方式都有哪些?各路高手指点一下…

查看全部问答>

新手求助:EVC3.0编译出错拉!

我在windows xp的环境里,用evc3.0和ppc2002开发pda程序,编译时提示出错: Cannot open include file: \'icmpapi.h\': No such file or directory 这和环境配置有什么关系吗? 这个具体的环境应该如何配置呢? 请各位大虾帮帮我! …

查看全部问答>

中国想要发展高清监控面临着多少挑战?

视频监控并不是为了录像,而是为了提供信息。当然录像是为了提供信息的重要手段,但仅仅录像是不能达到安全监控的目的的。 一个监控用的高清摄像机必须具备什么样的条件,才能提供有效的信息?由于已安装的监控用摄像机数量快速增长,总录像时数 ...…

查看全部问答>