以多工掃描的方式驅動七段顯示器,要如何避免殘影現象?
很多人實作多工掃描驅動七段顯示器時都遇過「殘影」的情況,正好最近一個案子用到了多工掃描,順便把文章寫一寫紀錄起來,讓大家之後也能參考。 先來解釋一下「殘影」具體是什麼情況可以看下面這張比較圖, 左圖 可以看到每個位數有右邊一個位數的殘影; 右圖 則是多工掃描有處理好 這個案子客戶的要求不複雜,就是要一個可以1~6 KHz輸出頻率可調的方波產生器,外加斷電記憶的功能,下次復電要能輸出上次調整的頻率。當然,調整到幾KHz還是要讓使用者知道阿,於是我就選擇用四位數七段顯示器。 這次選用了新唐的MG51FB9AE,因為它可以跑在24 MHz,而之前常用的N76S003是16 MHz,兩顆是pin-to-pin相容的。在這邊會需要較高的時脈速度並不是為了運算效能,而是輸出頻率的解析度,因為PWM或Timer輸入頻率越高,輸出的除頻步數就要越多,頻率解析度也會越高。如果對輸出頻率或duty cycle精度有要求的讀者,這就可以列入選型的考量了。 先來簡介一下多工掃描:多工掃描是什麼? 下圖是截自專案的部分電路。圖中有一顆 億光ELF-511 ,是非常標準的四位數共陰極七段顯示器,四個位數的a~g和dot都是在顯示器裡面直接並聯,每個位數的共點(陰極)則是分開的。 每個時間點P0的信號只會讓Q1~Q4其中一顆導通,並在導通的時候從P1送出對應a~g和dot的資料。也就是輪流點亮每一個位數,當輪流的速度快過人眼的視覺暫留,我們看上去就會像是它們一直都亮著一樣。 多工掃描的好處? 如果四位數七段顯示器每一個位數獨立控制的話,共點可以直接接電源,還需要4個a~g和dot,共32支接腳來控制。 多工掃描的話就只需要1個a~g和dot加4條掃描線,只要12支接腳就能控制四位數七段顯示器。 少了十多支接腳在設計上是非常可觀的,無論在BOM cost、電路面積上或是layout難易度都有優勢。 想一想,12支腳我用TSSOP20的MG51FB9AE就可以做完,若是32支腳的話得挑到48-pin的MCU才能做了。 韌體的寫法就是建一個陣列u8segments[16]把0~F (0~16, 0x0~0xF)排出來,利用餘數除法在switch case中將數字u32num的個、十、百、千位數分別提取出來,然後利用查表法去查u8segments[]將它們送出到P1; switch case則...