昨天說的是數(shù)碼管的靜態(tài)顯示,和靜態(tài)顯示對(duì)應(yīng)的就是動(dòng)態(tài)顯示。什么是動(dòng)態(tài)顯示? 先來考慮一個(gè)問題,用靜態(tài)顯示的方法驅(qū)動(dòng)一位數(shù)碼管用了多少資源? 一個(gè)鎖存器控制段選,另一個(gè)鎖存器的一個(gè)引腳控制位選。也就是9個(gè)引腳,如果用這種方式控制兩位數(shù)碼管要占用多少資源?18個(gè)引腳!8位數(shù)碼管呢?不敢想了。所以要另一種方式來解決這個(gè)問題。于是就出現(xiàn)了動(dòng)態(tài)顯示的方法。 我不知道大家對(duì)于動(dòng)態(tài)顯示的原理是不是能透徹理解,先插播一個(gè)故事。我小的時(shí)候很愛玩,喜歡看動(dòng)畫片(海爾兄弟)。當(dāng)?shù)弥獎(jiǎng)赢嬈锏娜宋飫?dòng)作發(fā)生的原理時(shí),很興奮,自己畫了兩個(gè)小人,一個(gè)筆直站立,另一個(gè)擺出踢腿的動(dòng)作,然后疊在一起,兩張紙片快速來回翻動(dòng),竟然就出現(xiàn)了動(dòng)畫的效果。這么高科技的玩具不知道你們誰玩過~~~ 于是當(dāng)我看到數(shù)碼管動(dòng)態(tài)顯示的原理時(shí),很自然就懂了。 通常情況下,人眼識(shí)別圖像的速度是24幀每秒,也就是說24幀/1000毫秒,平均一幀40毫秒左右。當(dāng)你的刷新頻率高于這個(gè)速度的時(shí)候,那些斷斷續(xù)續(xù)的圖片就連貫成了動(dòng)作。 說回到數(shù)碼管上,這里有6位數(shù)碼管,我想讓它從左開始依次顯示1、2、3、4、5、6,每次只亮一個(gè),1秒更新一次,使用昨天的靜態(tài)顯示的方法,很簡(jiǎn)單吧。只需要定時(shí)更新段選編碼以及位選引腳即可。 這樣的效果就是它們循環(huán)點(diǎn)亮,如同流水燈那樣。 在這個(gè)時(shí)候,如果我們不斷減少更新時(shí)間,突破了人眼的識(shí)別速度,將會(huì)是什么視覺效果?六個(gè)數(shù)字同時(shí)點(diǎn)亮!這就是今天要做的。 上程序,在昨天的基礎(chǔ)上進(jìn)行修改。依然共陰極,依然用CH573鎖存器,這次同時(shí)驅(qū)動(dòng)6位數(shù)碼管,顯示123456. 首先,定義了table這個(gè)數(shù)組,通過查表的方式來查詢對(duì)應(yīng)的編碼;其次,使用code的方式,把這個(gè)數(shù)組定義在ROM區(qū),節(jié)約了51單片機(jī)RAM的資源。 留個(gè)思考題,常說的數(shù)碼管消隱是因?yàn)槭裁醇?xì)節(jié)沒處理好出現(xiàn)的問題? 程序下載地址:
SEG_6.zip
(28.84 KB, 下載次數(shù): 47)
2015-3-24 22:54 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|