51系列單片機PWM輸出功能

軟件 遊戲 小科說單片機 2017-03-27

51系列單片機無PWM輸出功能,可以採用定時器配合軟件的方法輸出。對精度要求不高的場合,非常實用。電路圖見圖一,採用了高速光隔(6N137)輸出,並將PWM的信號倒相。

一、原理圖

51系列單片機PWM輸出功能

圖一

二、固定脈寬PWM輸出

用T0定時器完成PWM輸出,脈寬固定:65536微妙。T0定時器設置成:16位定時器

PWM:

51系列單片機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位定時器。

51系列單片機PWM輸出功能

程序清單:(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的值。

相關推薦

推薦中...