单片机输出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的值。
51系列单片机PWM输出功能
51系列单片机无PWM输出功能,可以采用定时器配合软件的方法输出。对精度要求不高的场合,非常实用。电路图见图一,采用了高速光隔(6N137)输出,并将PWM的信号倒相。
一、原理图
图一
二、固定脉宽PWM输出
用T0定时器完成PWM输出,脉宽固定:65536微妙。T0定时器设置成:16位定时器
PWM:
程序清单:(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的值。
三、可变脉宽PWM输出
用T0定时器控制PWM的占空比,T1定时器控制脉宽(最大:65536微妙)。
T0、T1定时器设置成:16位定时器。
程序清单:(12MHz)
PwmData0 ;T0定时t1所需的定时初值(字)
PwmData1 ;T1定时T所需的定时初值(字)
;*********************************************************
setb tro ;启动T0
setb tr1
。。。。。。
T0Int:;T0中断服务程序
Clr tr0
setb p1.0 ;PWM输出脚
reti
T1Int:;T1中断服务程序
Clr p1.0
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的值。
相关问答
stc 单片机pwm输出 设置?stc单片机pwm的输出设置方法STC15W408AS单片机,在有PWM功能的端口输出,设置PWM(如电源5V、30%的PWM设置),需要滤波后得到1.5V直流(可以用LC电路)stc单片....
atmega16 单片机输出pwm 驱动电机?比如快速PWM方式,定点使用ICP寄存器,这时改变ICP的值,就改变了PWM频率,当然占空比也跟着变化了,需要你重新调整。Atmega16的OC1A和OC1B输出两路PWM的程序,...
将 单片机PWM 信号变送成工业标准电流 输出 4-20mA?接一个可控硅,就应该可以了,当然用好一点的光耦也是比较好的选择,但如果用继电器,就要选比较好的才行,否则速度可以跟不上。接一个可控硅,就应该可以了,当然...
pwm 是怎么调节 输出 频率的?电压变化是通过占空比的调节改变的。改变频率输出是通过改变开关的动作频率实现的。在理想条件下以电压型PWM为例:直流侧是电容器,然后通过全控器件(如IGBT...
单片机 控制 pwm 原理详解?PWM(脉冲宽度调制)是一种通过改变脉冲信号的占空比来实现对电压或电流的控制的技术。在单片机控制中,使用定时器/计数器产生固定频率的脉冲信号,根据所需的占...
k66 pwm输出 通道怎么用?K66PWM输出通道的使用通常涉及以下几个步骤:1.**使能定时器和相关IO口时钟**:这是初始化过程的第一步,确保定时器和相关的GPIO(通用输入输出)端口被激活。...
单片机 如何产生 pwm 。控制开关电源,驱动如何?51单片机的拉电流能力100uA左右,MOS管是电压控制型,栅极电流很小,近乎于断路,所以IO口是可以直接驱动的;如果只是控制MOS管,隔离就没必要了;只要确保IO...5...
单片机pwm 频率范围?您好,单片机PWM频率范围取决于其时钟频率、定时器配置和分频器设置等因素。一般来说,单片机的PWM频率可以从几十Hz到几百kHz不等。具体的范围取决于单片机型号...
0-5V转 PWM 谁有做过单片机方案,为什么我的 单片机输出PWM 老是不稳?一般在模拟信号采集成数字信号后做个平均,估计会好。如果你只是用到了电压转PWM这一个功能的话,可以直接使用APC芯片,不需要编程序,厂家估计已经固化了。GP93...
PIC 单片机 中 PWM 怎么实现DA转换?PWM是通过改变占空比来改变输出电压的有效值的,即改变输出电压的大小.假设单片机的电源电压为5V,并假设输出高电平也为5V.当PWM的占空比为100%时,输出电压有效...