首先這個題目就有點刁鉆,因為就目前來說,就算是最基礎的單片機也有PWM外設,如果連這個功能都沒有,我覺得他不應該算在單片機的范疇之內,只能說是一個小規模的集成電路。你現在非要來一個沒有PWM波外設的單片機,好吧,就拿你這種情況分析一下,如何在沒有PWM外設的MCU來做可調的占空比。
PWM
首先我們要知道什么是PWM,PWM的全稱是PulseWidthModulation,即脈沖寬度調制,它的實現原理很簡單,即通過單片機的高低電平控制MOS管或三極管的開通和關斷,以實現小功率控制大功率的目的,在PWM中,高低電平的變換速度極快,一般都不大于1MS。
如上圖中的三個PWM波,如果一半的時間是高電平一半的時間是低電平,那么他的占空比是50%,所謂占空比即高電平所占PWM周期的比例。
通過簡單的延時
在一個沒有PWM外設的MCU來做可調的占空比,最簡單的辦法是,讓單片機循環的輸出高低電平。比如我們要輸出一個占空比為50的PWM我們可以這么寫,雖然不是正規途徑生成的PWM波,但是實現效果上卻和PWM波一個樣。
占空比可調的PWM
這個占空比其實也很容易改變,只需要我們改變高低電平的時間,如果你不想這么做,可以往單片機上加一個電位器,在我們旋轉電位器的時候,把對應的電壓傳給單片機,單片機再通過不同的電壓改變不同的時間,以此來達到調節占空比的目的。