LED顯示屏動態(tài)顯示和遠(yuǎn)程監(jiān)控的實現(xiàn)
3.1單片機動態(tài)顯示控制
以上提到的靜態(tài)、閃動、滾動和打字等4種顯示方式,實際上是單片機定時中斷程序進行行掃描處理的不同方法。下面將分別說明如何實現(xiàn)這4種顯示方式。
靜態(tài)顯示只需在定時中斷處理程序中從顯示緩沖區(qū)調(diào)入相應(yīng)的一行顯示數(shù)據(jù),然后選中該行即可實現(xiàn)該行的顯示,如此循環(huán),便可顯示整個內(nèi)容。閃動顯示與此類似,不同的是要間隔一個“軟定時器”的定時時間,在行掃描時,行移位寄存器的D端打入的全為0,可使得整屏不顯示,以確保黑屏?xí)r間與顯示時間相等,從而實現(xiàn)漢字或圖符的閃動顯示。
滾動顯示要求需要顯示的內(nèi)容每隔一定時間向指定方向(這里以從右向左為例)移動一列,這樣顯示屏可以顯示更多的內(nèi)容。為此,需要在下次移動顯示之前對顯示緩沖區(qū)的內(nèi)容進行更改,從而完成相應(yīng)點陣數(shù)據(jù)的移位操作。具體操作方法是:
設(shè)置一個顯示緩沖區(qū)(如圖2所示),該區(qū)應(yīng)包括兩部分:一部分用來保存當(dāng)前LED顯示屏上顯示的10個漢字點陣數(shù)據(jù);另一部分為點陣數(shù)據(jù)預(yù)裝載區(qū),用來保存即將進入LED顯示屏的1個漢字的點陣數(shù)據(jù)。滾動指針始終指向顯示屏的最右邊原點。當(dāng)滾動指針移動到需要顯示的點陣數(shù)據(jù)存儲區(qū)的第1個漢字的首地址時,顯示緩沖區(qū)LED顯示區(qū)為空白,而預(yù)裝載區(qū)已保存了第1個待顯示漢字的點陣數(shù)據(jù)。當(dāng)需要滾動顯示時,則可在接下來的掃描周期的每個行掃描中斷處理程序中,將對顯示緩沖區(qū)的相應(yīng)行點陣數(shù)據(jù)左移一位,同時更改顯示緩沖區(qū)的內(nèi)容。(需要注意的是,要確保該操作能在1.25ms的中斷時間內(nèi)完成。這里89C52采用22MHz晶振,實驗證明可以實現(xiàn)該操作)。這樣,在一個掃描周期后,整個漢字將左移一列,而顯示緩沖區(qū)的內(nèi)容也同時更改。由于預(yù)裝載區(qū)保存了1個漢字點陣數(shù)據(jù),即16×16點陣,所以當(dāng)前顯示緩沖區(qū)的內(nèi)容只能移動16列。當(dāng)下一個滾動到來時,滾動指針將移動到點陣數(shù)據(jù)存儲區(qū)的下一個漢字的首地址,并在預(yù)裝載區(qū)存入該漢字的點陣數(shù)據(jù)。然后重復(fù)執(zhí)行上述操作便可實現(xiàn)滾動顯示。特殊字符或圖形的顯示與此類似,這里不再贅述。
打字顯示要求漢字在顯示屏上按從左到右的順序一個個的出現(xiàn),如同打字的效果。設(shè)計時可采用如下方法:首先將LED顯示屏對應(yīng)的顯示緩沖區(qū)全部清零,即 LED顯示空白,然后每間隔一個“軟定時器”設(shè)定的動態(tài)顯示時間,顯示緩沖區(qū)依次加入一個漢字點陣數(shù)據(jù)并進行掃描顯示,這樣就可達(dá)到打字顯示的效果。
3.2 PC機控制程序
a.通訊功能的實現(xiàn)
在Windows環(huán)境下,實現(xiàn)PC與單片機的通訊可利用Windows的通訊API函數(shù)或者利用VC++(或其它語言)的標(biāo)準(zhǔn)通訊函數(shù)_inp、_outp來實現(xiàn)。但上述兩種方法比較繁瑣,而采用ActiveX控件MSComm32來實現(xiàn)則非常方便。該控件用事件的方式簡化了對串口操作的編程,并可設(shè)置串行通信的數(shù)據(jù)發(fā)送和接收,還可對串口狀態(tài)及串口通信的信息格式和協(xié)議進行設(shè)置。其初始化程序如下:
評論