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