LED顯示屏動(dòng)態(tài)顯示和遠程監控的實(shí)現
一般情況下,PC要與多個(gè)單片機89C51系統進(jìn)行主從式通訊,為了區分各單片機系統,可以使89C51采用串口工作方式3,即11位異步接收/發(fā)送方式,該方式的有效數據為9位,其中第9位為地址/數據信息的標志位,其作用是使從機據此判斷發(fā)送的數據是否為地址,從而實(shí)現多機操作。但現在由于采用的是MSCOMM控件來(lái)實(shí)現PC機和單片機之間的通訊,這是一種標準的10位串口通信方式,即8位標準數據位和該數據的起始位、停止位各1位。因此二者格式不相符,故很難利用上述方案。因此可考慮將單片機串口設為工作方式1,即改為10位異步接收/發(fā)送方式來(lái)解決,其通訊流程如下:
首先發(fā)通信開(kāi)始標志,接著(zhù)發(fā)送需要操作的單片機系統地址,然后發(fā)送顯示工作命令字,該命令包括2個(gè)字節,前一字節用于設定顯示方式和滾動(dòng)方向,后一字節則用于設定顯示速度。再往下是傳送顯示內容的點(diǎn)陣數據,最后對數據進(jìn)行校驗。該通訊規約非常簡(jiǎn)便,能夠較好的解決上述問(wèn)題,從而實(shí)現PC機與多單片機之間的主從式通訊及對顯示的控制。
需要注意的是,當顯示內容需要改變時(shí),為了避免在單片機串行中斷接收數據時(shí),顯示屏出現亂碼,應使顯示屏暫不顯示(處于“黑屏”狀態(tài)),直到數據接收完全,串行中斷處理結束時(shí)再顯示。
漢字字模的提取非常關(guān)鍵,本文的字模數據取自UCDOS下的字庫文件HZK16。關(guān)于這方面的介紹較多,文獻[2]給出了較為具體的在VC下提取漢字字模的方案,這里不再贅述。對于特殊字符或圖形點(diǎn)陣數據的提取,簡(jiǎn)便的方法可以先做一個(gè)BMP文件,然后用一些取模軟件(如字模提取v2.1)來(lái)獲得。為了顯示方便,點(diǎn)陣數據的格式應為n×(16×8),不足要求的則應以0數據補充。
b.動(dòng)態(tài)效果模擬顯示。
為了方便調節LED的顯示效果,筆者在PC機的控制界面上設計了LED顯示屏的模擬顯示,它同實(shí)際的顯示效果完全一樣。用戶(hù)可以設定顯示的模式,并調節顯示速度,然后在界面上對顯示效果進(jìn)行預覽,同時(shí)還可以隨時(shí)修改和設定參數,因而十分方便簡(jiǎn)捷。
為此,可先在界面上描繪出虛擬的LED顯示屏,由于實(shí)際的顯示屏為160×16點(diǎn)陣,故須在界面 上設定相同的區域。
實(shí)現動(dòng)態(tài)顯示效果的方法和以上幾種基本類(lèi)似,這里以滾動(dòng)顯示為例作一說(shuō)明。對于需要滾動(dòng)的文字,可以將其設置為位圖格式,暫存于內存中,然后利用VC 提供的位圖拷貝函數BitBlt將位圖復制到顯示位置。對于特殊字符或圖形,則可以直接利用BitBlt函數調用到顯示位置。然后在類(lèi)CLEDDlg的 OnTimer函數中調用該函數,以實(shí)現文字的滾動(dòng)顯示。另外,也可以通過(guò)設定不同的響應時(shí)間間隔來(lái)改變文字的滾動(dòng)速度。
4、結束語(yǔ)
本文提出的實(shí)現LED點(diǎn)陣顯示屏的動(dòng)態(tài)顯示和控制的解決方案,已成功地應用于實(shí)際系統。如將該系統聯(lián)入計算機網(wǎng)絡(luò ),還可實(shí)現對顯示屏的遠程控制。
評論