PLC和點(diǎn)陣液晶顯示模塊組成的監(jiān)控電路與顯示軟件設(shè)計(jì)
摘要:點(diǎn)陣液晶顯示模塊在工業(yè)控制設(shè)備中正逐步得到推廣,依據(jù)DMF50081NB-FW點(diǎn)陣液晶顯示模塊的要求,闡述了監(jiān)控電路的設(shè)計(jì),論述了點(diǎn)陣液晶顯示模塊漢字和字符顯示的編程方法。在確??删幊绦蚩刂破鲗?duì)被控對(duì)象控制的可靠性和抗干擾性的前提下,該電路可對(duì)系統(tǒng)運(yùn)行狀態(tài)的監(jiān)控達(dá)到比較高的性能價(jià)格比。
本文引用地址:http://www.ex-cimer.com/article/225749.htm關(guān)鍵詞:液晶顯示模塊 字符 起始地址 行列
點(diǎn)陣液晶顯示模塊在工業(yè)控制中,已得到越來越廣泛的應(yīng)用。如許多可編程序控制器(PLC)生產(chǎn)公司相繼推出了各種型號(hào)、各種系列的液晶顯示模塊,有單色的、彩色的、觸摸式等。這些模塊能夠顯示字符和圖形,若配備漢字還能夠顯示漢字。使用這些模塊可組成高性能的控制操作面板,但是各公司的顯示模塊兼容性能不是很好,且售價(jià)較高。本文提出應(yīng)用單片機(jī)和PLC的接口電路組成點(diǎn)陣液晶顯示模塊的控制操作面板,既達(dá)到了高性能,又降低了成本。
1 DMF50081NB-FW點(diǎn)陣液晶顯示模塊與SED1330控制器
DMF50081NB-FW是320×240=76800個(gè)顯示點(diǎn)的點(diǎn)陣液晶顯示模塊,每8個(gè)顯示點(diǎn)構(gòu)成一個(gè)字節(jié),每行40個(gè)字節(jié),全屏共計(jì)40×240=9600個(gè)字節(jié)。DMF50081NB-FW點(diǎn)陣液晶顯示模塊可以顯示圖形,也可以顯示漢字和字符,漢字和字符可以采用32×32、24×24、16×16、8×8等點(diǎn)陣形式。DMF50081NBFW點(diǎn)陣液晶顯示模塊的接口信號(hào)有13根,它直接與SED1330控制器相連。SED1330控制器是專門用于DMF系列點(diǎn)陣液晶顯示模塊控制器,而且很容易與單片機(jī)接口。其主要功能特點(diǎn)是:內(nèi)部有功能較強(qiáng)的I/O緩沖器;有豐富的指令功能;最大可驅(qū)動(dòng)640×256的點(diǎn)陣液晶顯示模塊;圖形和文本方式混合顯示;內(nèi)部存儲(chǔ)器最大容量達(dá)64k,可選用只讀存儲(chǔ)器和隨機(jī)存儲(chǔ)器。SED1330控制器的指令集如表1所示。從指令集中可看出,除了一般液晶顯示器所具有的設(shè)置功能之外,其突出的一個(gè)特點(diǎn)是還可以設(shè)置光標(biāo)四個(gè)方向的移動(dòng)等功能??刂破鞯拿钭趾?jiǎn)單、易于掌握、便于編程[3]。
表1 SED1330控制器指令集
功 能 | 指 令 | 代 碼 | 說 明 | 參數(shù)量 |
系統(tǒng)控制 | SYSTEM SET SLEEP IN | 40H 53H | 初始化,顯示窗口 設(shè)置空閑操作 | 8 - |
顯示操作 | DISP ON/OFF SCROLL CSRFORM CGRAM ADR CSRDIR HDOT SCR OVLAY | 59/58H 44H 5DH 50H 4C-4FH 5AH 5BH | 顯示開,設(shè)置顯示方式 設(shè)置顯示區(qū)域,卷動(dòng) 設(shè)置光標(biāo)形狀 設(shè)置CGRAM起始地址 設(shè)置光標(biāo)移動(dòng)方向→←↑↓ 設(shè)置點(diǎn)單元卷動(dòng)位置 設(shè)置合顯示方式 | 1 10 2 2 - 1 1 |
繪制操作 | CSRW CSRR | 46H 47H | 設(shè)置光標(biāo)地址 讀出光標(biāo)地址 | 2 2 |
存儲(chǔ)操作 | MWRITE MREAD | 42H 43H | 數(shù)據(jù)寫入顯示緩沖區(qū) 從顯示緩沖區(qū)讀出數(shù)據(jù) |
2 監(jiān)控電路與輸入信號(hào)采集時(shí)序
監(jiān)控系統(tǒng)電路如圖1所示。左邊的信號(hào)來自于可編程序控制器(PLC),當(dāng)PLC輸出被控對(duì)象工作狀態(tài)(Y20~Y25)和數(shù)據(jù)參數(shù)(Y10~Y17、Y4~Y7)時(shí),PLC(Y27)向單片機(jī)發(fā)出斷申請(qǐng)。單片機(jī)通過可編程芯片82C55與PLC實(shí)現(xiàn)信息輸入。液晶顯示器通過SED1330控制器與單片機(jī)接口,其接口電路是按照液晶顯示器和SED1330控制器接口說明要求設(shè)計(jì)的。根據(jù)應(yīng)用需要編制的32×32字庫(kù)和32×16字符庫(kù)存放在16K的EPROM中。由于輸入信號(hào)來自于PLC,單片機(jī)采集信息需結(jié)合PLC輸出信號(hào)并遵循一定的采集時(shí)序。時(shí)序要求如圖2所示。Y27應(yīng)在PLC一個(gè)掃描周期內(nèi)輸出低電平,作為單片機(jī)的中斷申請(qǐng)信號(hào),通常PLC一個(gè)掃描周期至少數(shù)毫秒乃至十多信號(hào),通常PLC一個(gè)掃描周期至少數(shù)毫秒乃至十多毫秒。為了確保單片機(jī)讀入的數(shù)據(jù)和狀態(tài)準(zhǔn)確無誤,單片機(jī)響應(yīng)中斷信號(hào)后,啟動(dòng)定時(shí)器延時(shí)2~3ms,即t=2~3ms,然后才從82C55讀入PLC輸出的參數(shù)與狀態(tài)。PLC輸出數(shù)據(jù)是按8421碼編制好的三位十進(jìn)制數(shù):Y14~Y17,Y10~Y13,Y4~Y7。
3 系統(tǒng)軟件設(shè)計(jì)
單片機(jī)程序主要分為三個(gè)部分:初始化;輸入信號(hào)采集;字符和漢字顯示。初始化程序需對(duì)液晶顯示模塊[2]、82C55以及其它存儲(chǔ)單元初始化。輸入信號(hào)采集程序由INT0中斷服務(wù)程序和定時(shí)器0中斷服務(wù)程序組成。INT0中斷服務(wù)程序的任務(wù)是設(shè)置定時(shí)器0的時(shí)間常數(shù)、開定時(shí)器0中斷和啟動(dòng)時(shí)器0;定時(shí)器0中斷服務(wù)程序的任務(wù)是從82C55三個(gè)口讀入數(shù)據(jù)和狀態(tài);C口狀態(tài)信號(hào)送入31H,B口四位數(shù)據(jù)送入32H;并在中斷服務(wù)程序中設(shè)置采集一次信息標(biāo)志(置位單元00H為“1”)。字符和漢字顯示程序是主體。為了使顯示內(nèi)容在控制現(xiàn)場(chǎng)醒目,有一定的視覺范圍,便于對(duì)被控設(shè)備監(jiān)控,設(shè)計(jì)了32×32漢字和32×16字符點(diǎn)陣庫(kù)。顯示程序設(shè)計(jì)時(shí),首先對(duì)屏幕顯示畫面進(jìn)行設(shè)計(jì)。設(shè)某控制對(duì)象的工作狀態(tài)有數(shù)十種,每個(gè)狀態(tài)下有三個(gè)數(shù)據(jù),并有多種工作模式和工作選件選擇。屏幕共有240行,每行40個(gè)字節(jié),屏幕顯示和地址排列如表2所示。表左邊列出每一行顯示字符的起始地址,表的上邊列出第一行每一字節(jié)的地址,該地址作為每一列的列地址,這兩組地址值可決定屏幕上每一個(gè)字符的起始地址,例如第二行參數(shù)2低位數(shù)據(jù)顯示起始地址為0C80H+17H。顯示屏每屏可動(dòng)態(tài)顯示5組狀態(tài)和參數(shù),可以采用按順序翻轉(zhuǎn)和按屏顯示兩種方式。按順序翻轉(zhuǎn)就是當(dāng)?shù)?組參數(shù)要顯示時(shí),每行顯示內(nèi)容按順序向上移位,即6→5→4→3→2→1→取消。按屏顯示就是當(dāng)?shù)诹M參數(shù)要顯示時(shí),首先清狀態(tài)和參數(shù)顯示區(qū)域,然后將第六組參數(shù)設(shè)置為第一級(jí)并顯示在第一組顯示位置上。本文采用按屏顯示方式。
顯示程序編程的關(guān)鍵問題是確定每一行顯示的起始地址、每一個(gè)文字和數(shù)據(jù)列顯示起始地址以及文字和數(shù)據(jù)在字庫(kù)中的起始地址。這些地址的確定是由狀態(tài)字、采集次數(shù)、顯示面板設(shè)計(jì)和字庫(kù)設(shè)計(jì)確定的。
顯示程序框圖如圖3所示。顯示程序首先判斷信息是否已被采集,若無則等待或處理其它程序,若有則判斷采集次數(shù)(41H)。若(41H)>3,對(duì)41H置1,然后根據(jù)41H中的內(nèi)容,轉(zhuǎn)云執(zhí)行處理不同采集次數(shù)的程序。這里重點(diǎn)介紹(41H)=1的情況,此時(shí)先判斷(30H)是否大于#30H。若大于#30H,編制多個(gè)判斷分支程序,根據(jù)30H中內(nèi)容分別調(diào)用不同的漢字顯示程序;若小于#30H,首先按照表2進(jìn)行數(shù)據(jù)處理,然后判斷顯示行號(hào)是否大于5,大于則使(3BH)=1,并經(jīng)判斷程序是出行號(hào),然后根據(jù)行號(hào)分別執(zhí)行不同行號(hào)下的顯示程序。圖3中設(shè)行號(hào)等于3,此時(shí)先將屏幕顯示第3行文字顯示的起始高位地址賦給3DH,低俠地址賦給3CH,并調(diào)用狀態(tài)顯示子程序。然后確定每一行數(shù)據(jù)顯示的列起始地址,調(diào)用數(shù)據(jù)顯示子程序。執(zhí)行完,采集次數(shù)+1.當(dāng)二次采集數(shù)據(jù)全部處理完,顯示行號(hào)+1,使下一組狀態(tài)和數(shù)據(jù)顯示內(nèi)容自動(dòng)換行。
字庫(kù)中的字模在EPROM中是按照32×32點(diǎn)陣先從字模第一行第一個(gè)字節(jié)到第四個(gè)字節(jié),然后從第二行第一個(gè)字節(jié)到第四個(gè)字節(jié),依此類推,直到32行。數(shù)據(jù)的字模也是按照類似的方式排列,只是每行為兩個(gè)字節(jié)。
圖4為顯示狀態(tài)和漢字的子程序。虛線框中的內(nèi)容是顯示一個(gè)漢字的子程序,進(jìn)入顯示一個(gè)漢字子程序之前,只要將漢字在字庫(kù)中的起始地址送入3EH、3FH單元以及將漢字在屏幕顯示位置的起始地址送入42H、3DH即可。顯示程序主要應(yīng)用5HA、42H、4FH(↓)和4DH(←)命令,由于每一個(gè)漢字有32行,所以需循環(huán)32次。顯示狀態(tài)文字時(shí),首先設(shè)置所要顯示的文字?jǐn)?shù),賦給43H,根據(jù)30H中的狀態(tài)字內(nèi)容判斷程序執(zhí)行的方向,因?yàn)闋顟B(tài)字決定了要顯示的文字個(gè)數(shù)和文字內(nèi)容,也就決定了每個(gè)文件在字庫(kù)中的起始地址和顯示屏幕上的位置。對(duì)于數(shù)據(jù)的顯示,其顯示編程的方法和文字顯示編程的方法類似,只要把握住地址正確即可。而對(duì)于操作模式、選擇和報(bào)警信息的顯示,根據(jù)(30H)>#30H,此時(shí)只有一組信號(hào),編程時(shí)間樣按照屏幕設(shè)計(jì)的要求,將地址設(shè)置正確,調(diào)用方案顯示子程序,同時(shí)需將采集次數(shù)復(fù)位。報(bào)警信息顯示在狀態(tài)和數(shù)據(jù)顯示區(qū),應(yīng)注意顯示行號(hào)和文字個(gè)數(shù)的設(shè)置,顯示輸出完之后對(duì)行號(hào)進(jìn)行修改。
綜上所述,系統(tǒng)的組成易于實(shí)現(xiàn)。軟件雖然分支判斷程序多,但程序的編制有規(guī)律可循。其執(zhí)行速度主要受文字和數(shù)據(jù)顯示程序的影響(32次循環(huán))。但信息采集采用中斷方式,單片機(jī)每?jī)纱沃袛囗憫?yīng)之間至少間隔近10ms,才能夠滿足應(yīng)用的要求。
本文應(yīng)用PLC組成點(diǎn)陣液晶顯示模塊的控制操作面板的設(shè)計(jì)方法適應(yīng)于工業(yè)控制現(xiàn)場(chǎng),顯示部分的電路和單片機(jī)程序沒有參與對(duì)被控對(duì)象的控制。實(shí)際上,鍵盤操作也是由PLC輸入端口予以輸入,這樣保證了控制系統(tǒng)的控制高可靠性和高抗干擾性。
評(píng)論