|
|
“閃”的原因是你刷新數(shù)據(jù)的速度不夠快!
人的視覺殘留時(shí)間是多少?參考電影的幀速率為24-30幀/秒,就能算出來約33~41ms,
即最多41ms,最少33ms,你就要發(fā)一次數(shù)據(jù)(暫不管1638自掃時(shí)間)。
再來看你的總占空比的多少,即多少級(jí)亮度,如果是8級(jí),就要8等分這幀時(shí)間了:
假設(shè)某位對(duì)應(yīng)某LED,置“1”為亮,置“0”為滅,當(dāng)設(shè)為1級(jí)亮度時(shí),發(fā)“1”的數(shù)據(jù)1次,發(fā)“0”的數(shù)據(jù)7次。。。
所以41/8或33/8,最多5ms,最少4ms你就得發(fā)一幀數(shù)據(jù),且不被中斷、周而復(fù)始。。
那么,你用main中的while(1)顯然是不夠的,你要開一個(gè)優(yōu)先級(jí)最高的定時(shí)器,固定4ms發(fā)一次數(shù)據(jù)。
而在main中的while(1)中不停地更新要發(fā)送的數(shù)據(jù),所以,你的51MCU會(huì)很忙!
注意,這才8級(jí),且每幀數(shù)據(jù)只發(fā)一次。
如果是要穩(wěn)定地顯示,且祼眼視覺不閃,每幀數(shù)據(jù)都重復(fù)多次。。。
那你的定時(shí)器需要更短的時(shí)間來響應(yīng)。。。
其實(shí)這方法很有用的,還可以在點(diǎn)陣黑白屏上做出灰度的像素點(diǎn)來。。 |
|