3.1單片機動態顯示控制
以上提到的靜態、閃動、滾動和打字等4種顯示方式,實際上是單片機定時中斷程序進行行掃描處理的不同方法。下面將分別說明如何實現這4種顯示方式。
靜態顯示只需在定時中斷處理程序中從顯示緩沖區調入相應的一行顯示數據,然后選中該行即可實現該行的顯示,如此循環,便可顯示整個內容。閃動顯示與此類似,不同的是要間隔一個“軟定時器”的定時時間,在行掃描時,行移位寄存器的D端打入的全為0,可使得整屏不顯示,以確保黑屏時間與顯示時間相等,從而實現漢字或圖符的閃動顯示。
滾動顯示要求需要顯示的內容每隔一定時間向指定方向(這里以從右向左為例)移動一列,這樣顯示屏可以顯示更多的內容。為此,需要在下次移動顯示之前對顯示緩沖區的內容進行更改,從而完成相應點陣數據的移位操作。具體操作方法是:
設置一個顯示緩沖區(如圖2所示),該區應包括兩部分:一部分用來保存當前LED顯示屏上顯示的10個漢字點陣數據;另一部分為點陣數據預裝載區,用來保存即將進入LED顯示屏的1個漢字的點陣數據。滾動指針始終指向顯示屏的最右邊原點。當滾動指針移動到需要顯示的點陣數據存儲區的第1個漢字的首地址時,顯示緩沖區LED顯示區為空白,而預裝載區已保存了第1個待顯示漢字的點陣數據。當需要滾動顯示時,則可在接下來的掃描周期的每個行掃描中斷處理程序中,將對顯示緩沖區的相應行點陣數據左移一位,同時更改顯示緩沖區的內容。(需要注意的是,要確保該操作能在1.25ms的中斷時間內完成。這里89C52采用22MHz晶振,實驗證明可以實現該操作)。這樣,在一個掃描周期后,整個漢字將左移一列,而顯示緩沖區的內容也同時更改。由于預裝載區保存了1個漢字點陣數據,即16×16點陣,所以當前顯示緩沖區的內容只能移動16列。當下一個滾動到來時,滾動指針將移動到點陣數據存儲區的下一個漢字的首地址,并在預裝載區存入該漢字的點陣數據。然后重復執行上述操作便可實現滾動顯示。特殊字符或圖形的顯示與此類似,這里不再贅述。
打字顯示要求漢字在顯示屏上按從左到右的順序一個個的出現,如同打字的效果。設計時可采用如下方法:首先將LED顯示屏對應的顯示緩沖區全部清零,即 LED顯示空白,然后每間隔一個“軟定時器”設定的動態顯示時間,顯示緩沖區依次加入一個漢字點陣數據并進行掃描顯示,這樣就可達到打字顯示的效果。