回覆列表
-
1 # 使用者5825681599401
相關內容
- 微波爐數碼管亮度變暗怎樣維修?
- 用51微控制器組合語言,數碼管靜態輪流顯示1~F?
- 如何用AD軟體做一個基於ICL7106的數字電壓表呢,需要4位數碼管顯示?
- 彙編數碼管顯示0——9顯不是按順序顯示的?
- 使用C語言編寫數碼管動態顯示程式。標頭檔案為reg52,h,數碼管接P2口,為共陰?
- 微控制器數碼管模擬的控制流程和模擬結果的步驟是什麼?
- 組合語言程式設計,一個按鍵,一個2位數碼管,實現按鍵計數顯示在數碼管上?
- c語言,怎樣用兩個獨立按鍵控制一位數碼管顯示,就是按下其中一個按鍵就加1按下另一個按鍵就減1 0~9顯示?
- 程式設計數碼管迴圈顯示數字0-5?
- AT89C51微控制器怎麼用匯編語言讓4個數碼管同時顯示1234?
首先,答主要知道單個數碼管的本質就是八個led二極體(8這個數字佔七個 外加一個小數點)。把這八個led二極體的陰極連在一塊這就是共陰管,陽極連在一起就是共陽管。用的時候在陰陽級上通對應電平控制哪些led亮或者滅來顯示資料。
數碼管原理圖
其次,出現鬼影的一般是多位數碼管,並且是在顯示不同數字的時候,總會有一些不亮不暗的影子存在,這個影子就是題主所謂的鬼影。一般為了消除這個所謂的鬼影,我們需要在程式中加上消隱語句來消除掉這部分奇怪的現象。
我們先來分析鬼影產生的原因:多位數碼管的內部結構一般是若干個共陰(陽)管的公共極單獨引出,從而控制具體是哪個數碼管在顯示(這裡我們先把他給命名為位選引腳,即圖中數碼管上方接三極體的引腳),把控制不同管子上的相同位置的led亮滅的引腳合併引出,從而控制數碼管具體顯示什麼(我們把這個引腳可以稱為段選引腳,即圖中左側的那些引腳)。
多位數碼管顯示不同資料其實不是同時顯示的,是以掃描的方式顯示的,例如上面的原理圖我想顯示12這個數字,理論上我需要先讓第一個顯示數字1,第二個顯示數字2,這樣來回不停的顯示並且重新整理頻率上去的話,利用人眼的視覺暫留效應就可以得到一個顯示著12的數碼管了。
但是,迴歸到程式上來,數碼管的顯示我需要微控制器送兩組資料出去,即控制哪個管子顯示的位選訊號(選擇哪一位),還有控制具體顯示什麼的段選訊號(選擇亮什麼)。 這樣一來就有一個先後順序
比如 我先開控制第一個數碼管亮位選訊號1,然後送數字1的段選訊號,這個時候第一個數碼管就成功的顯示了數字1了,這個時候我關掉第一個數碼管的位選訊號,開啟第二位的位選訊號2,在這一瞬間,二號數碼管等於收到了位選訊號2和段選訊號1,短暫的亮了一下數字1,接下來段選訊號重新整理,更新為段選訊號2,數碼管改顯示2。 因為段選訊號跟位選訊號同步更新的成本太高,所以人們想出了一個從程式上解決這個問題的思路,即消隱操作。
所謂的消隱操作,就是位選訊號更新前(上一位位選引腳鎖存,下一位位選引腳未開啟之間)先送一個0x00或者0xff出來,重新整理掉段選訊號上的資料,這樣的話,等下一個管子可以被點亮時,段選資料實際是空的,只有當他該顯示的資料傳過來時才會現實正確的數字,就不會有所謂的鬼影了。