![]() |
發(fā)布時間: 2019-5-10 18:31
正文摘要:網(wǎng)上找的一個程序,想請教大佬們,這段代碼是怎么實現(xiàn)PWM的?X1為低電平時間,X2為高電平時間,LED置0時點亮,置1時熄滅。這段代碼邏輯是啥?到底能不能實現(xiàn)PWM,連占空比都看不出來是多少,很急,謝謝大家。 |
搞個2812燈帶玩一玩,可以任意顏色和亮度。 |
PWM是一種方波脈沖串,占空比可調(diào),占空比是開和關(guān)持續(xù)時間的比值。 該代碼分別控制開啟和關(guān)閉持續(xù)時間 X1 和 X2。 循環(huán)時間/計數(shù)為 1000。 |
進(jìn)來學(xué)習(xí)的,可惜代碼不全。 |
占空比=X1/1000.總時間是1000個時間量,低電平時X1個時間量,高電平是1000-X1個時間量,改變X1就是改變占空比,實現(xiàn)亮與暗的時間比例變化,由于時間短,看到的是光的總亮度變化。 |
m182892 發(fā)表于 2019-5-11 08:26 問題是樓主位代碼算X2的值算錯了。 |
看到你這個代碼 讓我想到的是呼吸燈的代碼,從滅到亮 逐漸變化的 |
PWM周期是1000,首先是燈亮,等待X1低電平時間到,轉(zhuǎn)為燈滅,持續(xù)X2時間,高電平占空比為X2/1000 |
占空比=X1/1000.總時間是1000個時間量,低電平時X1個時間量,高電平是1000-X1個時間量,改變X1就是改變占空比,實現(xiàn)亮與暗的時間比例變化,由于時間短,看到的是光的總亮度變化。 |
你的截圖代碼不完整,沒辦法解釋, 而且X2本來就有問題,117-120行已經(jīng)表明X1永遠(yuǎn)都是等于0后才往下執(zhí)行,那么X2=1000-X1;這個就是多余的,123行的X2永遠(yuǎn)都是從1000開始減, 這個程序如果不給出完整的代碼只能認(rèn)為是錯誤的 |
本帖最后由 ccl09 于 2019-5-11 13:38 編輯 while(x1!=0){},等待 x1*指令周期 的時間 ,x1<1000, while(x2!=0){},等待 x2*指令周期 的時間,占空比x2/1000. |
Powered by 單片機(jī)教程網(wǎng)