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