设计与开发

单片机有pwm 单片机输出PWM脉冲的两种方法

小编 2025-07-31 设计与开发 23 0

单片机输出PWM脉冲的两种方法

51单片机没有PWM输出功能,可以采用定时器配合软件的方法实现,对精度要求不高的场合是非常实用的。采用高速光隔6N137输出,并将PWM的信号倒相。

本文引用地址:http://www.eepw.com.cn/article/201609/296668.htm

一、 工作原理

二、PWM输出

1. 固定脉宽PWM输出

用T0定时器完成PWM输出,脉宽固定为65536μs。T0定时器设置成16位定时器,PWM波形如图2所示。

程序清单:(12MHz)

PwmData0 ;T0定时t1的初值(字)

PwmData1 ;T0定时t2的初值(字)

PwmF     ;PWM输出标志

;***************************

setb tro ;启动T0

……

T0Int:;T0中断服务程序

JB PwmF ,PwmOutH

;PWM输出未完成返回

Mov TH0,High(PwmData0)

Mov TL0,Low(PwmData0)

Setb tr0

Setb PwmF

Clr p1.0 ;PWM输出脚

reti

PwmOutH:Setb p1.0

Clr tr0

Mov TH0,High(PwmData1)

Mov TL0,Low(PwmData1)

Setb tr0

Clr PwmF

reti

说明:在主程序中计算PwmData0、PwmData1的值。

2. 可变脉宽PWM输出

用T0定时器控制PWM的占空比,T1定时器控制脉宽(最大65536μs。)

T0、T1定时器设置成16位定时器。

程序清单:(12MHz)

PwmData0 ;T0定时t1的初值(字)

PwmData1 ;T1定时T的初值(字)

;***************************

setb tro ;启动T0

setb tr1

……

T0Int:Clr tr0   ;T0中断服务程序

setb p1.0 ;PWM输出脚

reti

T1Int:Clr p1.0 ;T1中断服务程序

Clr tr0

Clr tr1

Mov TH0,High(PwmData0)

Mov TL0,Low(PwmData0)

Mov TH1,High(PwmData1)

Mov TL1,Low(PwmData1)

Setb tr1

Setb tr0

reti

说明:在主程序中计算PwmData0、PwmData1的值。

PIC单片机之PWM原理

1,什么是PWM

什么是PWM,专业点说脉宽调制,通俗点说 就是不断的输出高低电平。 比如 单片机 40ms的时间 输出高电平然后60ms的时间 输出低电平接着一直不断周期性的交替输出高低电平 这就是典型的PWM波。高电平输出的时间40ms就是传说中的脉宽,40ms+60ms=100ms 便是PWM的周期。假定我们把周期定为100ms.我们可以根据我们的需要 把高电平的时间加大或者减小,比如 高电平输出时间加大为80ms.那么低电平的时间就变为20ms. 也可以 高电平输出时间减小为20ms.那么低电平的时间就变为80ms.这即是脉宽调制 调的便是这高电平的时间。 而高电平(脉宽)在周期中,所占用的时间比例 就被称为占空比。用数学公式表示 高电平的时间/周期的时间=占空比。

2,PWM的实现方式

我们如何让单片机输出PWM波。有两种方式 一种是直接用I/O输出,另一种方式利用模块。

2.1利用I/O口输出PWM

如果你的单片机没有带有PWM输出功能模块,那么你可以自己写个程序输出PWM波。因为PWM不就是高低电平。一个I/O在加上一个定时器,对于任何单片机来说都是很容易做到的。

2.2利用模块输出PWM

对于PIC单片机而言就带有输出PWM的功能模块。利用模块输出PWM其实比利用I/O输出PWM更加简单便捷精确。

3,PWM的作用

PWM能用来做什么PWM比较典型的应用就是对LED调光和电机调速。那PWM是如何进行调光和调速的呢,其实也很好理解。以给LED调光为例。给LED一直通电LED是最亮的。不给LED断电LED是不亮的。那要是在极短的时间内给LED不断的通电断电。那给人眼的感觉就是LED虽然是亮的,但亮度较低。

如果单片机高平输出时LED是亮的。那么在PWM波中高电平输出的时间越长LED就越亮,反之则越暗。

相关问答

单片机 是怎么通过 pwm 波来控制电机运转的,工作原理是什么?

PWM的英文全称是PulseWidthModulation的缩写,翻译成中文就是脉冲宽度调制,PWM是一种利用数字输出来对模拟电路进行控制的技术,它的实质就是使用数字信号...

单片机有 多少 PWM 输出的引脚 - 135****6478 的回答 - 懂得

有的单片机有内置的硬件pwm功能,它的输出可能只能在某几个管脚上选择;如果自己编写程序实现软件PWM,则没有这个限制,所有的引脚都可以作为PWM输出。...

单片机 产生 pwm 的方法?

在单片机中生成脉宽调制(PWM)信号的方法可以根据具体的单片机型号和架构而异,但是通常有几种常见的实现方法。以下是其中两种较为常见的单片机产生PWM信号的方...

单片机 产生 pwm 信号的方法是什么?_其他问答_系统粉

在电机调速等方面,PWM应用是最广泛的,而用标准的51单片机内部没有PMW模块,只得用软件来产生PWM信号,这样就得用51单片机的定时器来完成,而在中档PIC...

单片机pwm 控制的基本原理?

单片机PWM(脉冲宽度调制)控制的基本原理是通过不断地在一个固定的时间周期内调整脉冲的宽度,来控制输出信号的电平。具体地说,当脉冲的宽度越大,输出信号的...

单片机 的数字端口、模拟端口和 PWM 口各是什么意思,麻烦通俗点回答,谢谢?

1、单片机的数字端口是指该端口只有通常的逻辑电平只有高电平或者低电平,用数字来表示高电平就是1,低电平就是0。以51单片机为例,如果说IO口P1.0为高电平,...

如何将 单片机 输出的 PWM 控制信号,变成可以带负载的变化的电压?

单片机输出的PWM为控制信号,需要加入控制器件才可以驱动负载单片机输出的PWM驱动能比较弱,不能直接驱动负载,需要三极管、MOS管参与才可以控制负载的功率,比...

51 单片机 输出 pwm 波控制led灯?

使用51单片机可以通过输出PWM波来控制LED灯的亮度。PWM波是一种脉冲宽度调制信号,其占空比决定了电路输出信号的平均功率。具体实现方法如下:1.首先需要选...

单片机 控制 PWM 输出0~10V连续可调电压不进0.05程序电路?

加低通滤波就可以了搞定如果负载那边输入阻抗很高,所谓低通滤波就可以用最简单的RC电路实现,RC时间常数比PWM周期大几倍就可以了。补充:单片机输出的话,先...

如何利用51 单片机 输出 PWM 波?

提供思路:定义一个静态变量,程序每次进入定时器的中断函数中时判断是否满足你说要求的占空比,没达到就继续对变量值进行累加直到满足条件后使输出PWM波的那个...

猜你喜欢