《51单片机输出PWM的两种方法.doc》由会员分享,可在线阅读,更多相关《51单片机输出PWM的两种方法.doc(3页珍藏版)》请在金锄头文库上搜索。
1、51单片机输出PWM的两种方法51系列单片机无PWM输出功能,可以采用定时器配合软件的方法输出。对精度要求不高的场合,非常实用。电路图见图一,采用了高速光隔(6N137)输出,并将PWM的信号倒相。一、原理图图一二、固定脉宽PWM输出用T0定时器完成PWM输出,脉宽固定:65536微妙。T0定时器设置成:16位定时器PWM:程序清单:(12MHz)PwmData0 ;T0定时t1所需的定时初值(字)PwmData1 ;T0定时t2所需的定时初值(字)PwmF ;PWM输出标志;* SETB TR0 ;启动T0 T0Int: ;T0中断服务程序 JB PwmF ,PwmOutH ;PWM输出未完
2、成返回 Mov TH0,High(PwmData0) Mov TL0,Low(PwmData0) Setb tr0 Setb PwmF Clr p1.0 ;PWM输出脚 retiPwmOutH: 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输出脚 retiT1Int:;T1中断服务程序Clr p1.0Clr tr0Clr tr1 Mov TH0,High(PwmData0) Mov TL0,Low(PwmData0) Mov TH1,High(PwmData1) Mov TL1,Low(PwmData1) Setb tr1 Setb tr0 reti说明:在主程序中计算PwmData0、PwmData1的值。