熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2017-3-12 17:06
正文摘要:剛剛搜了一下,發(fā)現(xiàn)壇里還沒(méi)有這樣分析PWM的帖子,然后發(fā)了一個(gè)。 手電LED控制或馬達(dá)轉(zhuǎn)速控制都離不開(kāi)PWM,下面有兩種方法可以模擬PWM的。如果不正確希望各位指教。 //用定時(shí)器計(jì)算方式模擬PWM,高低電平 ... |
| 這種最高頻率也超不過(guò)去2k吧? |
|
本帖最后由 wjw7680 于 2022-8-17 15:49 編輯 第二個(gè)程序根本實(shí)現(xiàn)不了PWM,只要中斷11次,k值就會(huì)超過(guò)num,P20=1一直輸出高電平。第一個(gè)也有問(wèn)題,定時(shí)器初值在TR0=0時(shí)對(duì)TL0,TH0賦初值才有效。中斷內(nèi)沒(méi)有TR0=0,沒(méi)法改變定時(shí)器內(nèi)的TL0,TH0 。這個(gè)程序估計(jì)是直接抄來(lái)的,沒(méi)驗(yàn)證過(guò)![]() |
wosiyabo 發(fā)表于 2017-3-12 23:01 ![]() |
| 是不是再搞一臺(tái)示波器,哎 ,小白很迷茫啊 |
|
//缺點(diǎn):高低電平會(huì)的百分之一格不受控制 這句怎么理解呢? |
wosiyabo 發(fā)表于 2017-3-12 23:01 是說(shuō)第一種方式不好,要用第二種? |
| 第二種方法用過(guò),的確頻率跑不高,我做的最高才300hz |
| 謝謝您的分享,謝謝你的經(jīng)驗(yàn)分享! |
| 還有樓主,輸出腳不需要設(shè)置成推挽么?謝謝 |
wosiyabo 發(fā)表于 2017-3-28 20:16 我是STC15W1K16S,我按照你的第一種方式來(lái)弄的,弄了之后燈能點(diǎn)亮,但是怎么弄亮度都不變,謝謝! |
jgp886585 發(fā)表于 2017-3-28 19:11 你用的是什么單片機(jī)?我是在STC15W4kK58S4的平臺(tái)上試的,有兩個(gè)按鍵可以調(diào)加大的減小占空比。我都在示波器上試過(guò)的。你用其他型號(hào)的單片機(jī)注意有些IO初始化和AUXR寄存器等要設(shè)置。 |
| 樓主,你這個(gè)我怎么弄不成PWM波呢,反應(yīng)都沒(méi)有 |
| 謝謝樓主啦!!分享很好 |
| 學(xué)習(xí)了@@ |
|
終于知道第一種PWM為什么會(huì)不受控了。因?yàn)槎〞r(shí)器內(nèi)指令執(zhí)行時(shí)間過(guò)長(zhǎng)超出定時(shí)器設(shè)定的時(shí)間時(shí)會(huì)導(dǎo)致系統(tǒng)崩潰。 當(dāng)定時(shí)器賦值為T(mén)H0=0xFF,TL0=0xFF時(shí),那怕是在定時(shí)器內(nèi)運(yùn)行很少的指令也很可能會(huì)導(dǎo)致指令未執(zhí)行完就溢出了。 所以如果有人用第一種PWM時(shí),切記賦值不要過(guò)大"TH0=0xFF,TL0=0xFF"否則會(huì)有問(wèn)題。。! |
Powered by 單片機(jī)教程網(wǎng)