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