可視化編程串行控制中文字庫液晶顯示模塊VLCM320240
摘要:VLCM320240是一款具有可視化編程圖形界面、采用串行控制、內含GB2312簡體中文字庫及64kB自造圖庫的液晶圖形顯示模塊。該模塊采用臺灣EDT公司的藍膜負顯EW32F10BCW?具有320240的點陣分辨率和CCFT背光源。文中介紹了該模塊的性能特點、接口管腳說明、用戶命令及主要參數,同時給出了VLCM320240與單片機的接口電路及相應顯示程序。 1 引言 圖形點陣液晶顯示模塊由于具有顯示信息豐富、功耗低、體積小、重量輕、壽命長、不產生電磁輻射污染等優(yōu)點而成為單片機系統(tǒng)中理想的顯示器件,并被廣泛應用于單片機控制的智能儀器儀表、工業(yè)控制領域、通信器材和家用電器中。但普通圖形點陣液晶顯示模塊用于顯示圖形界面時是非常困難的,首先圖形顯示要占用大量的用戶ROM空間。以320240點陣液晶模塊為例,顯示一幅圖片(全屏幕)占用的ROM空間為?320240?/8=9.6k Byte,這對片內僅有幾k字節(jié)的FLASH閃存單片機來說是不可能的;其次,顯示圖片過程極其復雜,應根據待顯示的圖形計算好各點陣的位置,再以字節(jié)為單位寫入數據來控制各點陣的亮滅。如果顯示多幅圖片,復雜程度更加令人生畏。 另外,圖形點陣液晶顯示模塊在顯示漢字時也存在著占用ROM容量大、與單片機的硬件接口電路復雜以及接口時序復雜,軟件編程繁復等問題。 正是由于上述幾點不足限制了圖形點陣液晶顯示模塊在生成復雜精美的中文人機界面時的應用。而中文界面及圖形顯示又是電子產品人機界面發(fā)展的必然趨勢。實際上任何一種顯示界面本質上都是由若干像素排列組合生成,若能將圖形點陣液晶模塊顯示控制的底層操作集成在模塊內的單片機中,并將生成顯示界面中所用到的各種圖形界面和標準漢字庫預先存入模塊中,用戶使用時就可以僅通過串口向其發(fā)送簡單的控制命令以生成圖文顯示界面,從而使得復雜的圖形界面生成變得簡單容易,最終解決電子產品開發(fā)過程中難以生成精美的人機界面的難題。 VLCM320240即是一款具有上述功能的圖形點陣液晶模塊。該模塊是由深圳研安佳公司推出的。 VLCM320240圖形點陣液晶顯示模塊具有如下主要特點: ● 該液晶顯示模塊采用臺灣EDT公司的藍膜負顯EW32F10BCW?它具有320240的點陣分辨率和CCFT背光源; ● 內部含有臺灣華邦公司生產的高速單片機W78E516BP; ● 內含GB2312 1616點陣國標一級、二級簡體字庫,字庫中的漢字可顯示在液晶屏的任意位置; ● 內含ASCⅡ 816點陣英文字庫; ● 內含64kB自造圖庫或美術字庫、顯示資料現場可在線編程FLASH; ● 內含SED1330F LCD控制器及32kB顯示緩沖區(qū); ● 配套Visual LCM仿真調試軟件可在電腦上獨立完成顯示界面的編輯、資料下載及界面生成; ● 具有標準RS232串行通信控制,可方便地由上位計算機或單片機進行控制; ● 具有最小的硬件資源占用,使用單片機做上位機時,可使用兩根I/O口線模擬串口,而使用TTL電平控制時,僅需一根I/O口線。 VLCM320240留給用戶的接口有兩個,即電源口POWER和RS232通信口。 其中電源口包括以下幾個端口: ●+9V電源:穩(wěn)壓后供給單片機; ●GND:模塊電源地; ●+5V電源:供逆變器使用。 RS232口定義如下: ●BUSY:忙標志輸出,低電平時為忙; ●RX:控制命令輸入,其中有8位數據位,1個起始位,一個停止位; ●GND:信號地。 在具體使用時,可通過上位機的用戶命令來控制VLCM320240的顯示. 漢字或ASCII字符顯示命令中的參數為所顯示漢字的兩個字節(jié)國標碼或ASCII字符代碼。 VLCM320240可視化編程液晶顯示模塊可廣泛應用于顯示信息內容豐富或顯示信息容量巨大的應用場合,如信息家電,通信器材、工業(yè)控制、智能儀器儀表等領域,模塊在使用時可分為顯示界面生成及實時顯示兩個步驟。 4.1 顯示界面的模擬生成 顯示界面的生成在上位計算機上完成,利用可視化編程軟件Visual LCM可將系統(tǒng)設計中用到的各種圖形或文字進行歸納并編輯成圖案,但圖案的大小不得超過320240像素,同時圖案必須選為黑白兩色。然后將編輯好的圖案下載到模塊ISP FLASH存儲器中,圖案的數量應小于256幅。對于顯示較多的文字信息,也應盡量生成美觀的藝術字體并保存為圖案。這樣可大大加快文字信息的顯示速度。圖案下載到模塊后,可通過串口發(fā)送BMP命令以便將任意一張圖片在液晶模塊的任意位置上顯示。 4.2 實時信息顯示 由上位計算機生成的各種圖形信息最終要在單片機的控制下實現相應信息的顯示。圖1所示是以AT89C52為例給出的單片機與VLCM320240的接口電路。 在圖1所示的電路中,AT89C52的RXD端與VLCM320240RS232通信口的BUSY端相連,而將單片機TXD端與模塊RX端相連,為保證波特率的準確性,應將AT89C52的晶振選取為11.0592MHz。此外,在編制相應的顯示控制軟件時,還應注意以下幾點: ●串行口模式應設為模式1(1個起始位,8個數據位,1個停止位); ●波特率設應當為19200(TH1=TL1=0FDH,SMOD=1); ●在發(fā)送命令之前應檢測模塊為閑態(tài)(BUSY=1)?否則所發(fā)的命令可能失效; ●串口發(fā)送的必須是完整命令的ASCII碼(漢字為其機內碼,ASCII字符為其ASCII碼),如命令“BMP0B000C0D”,實際由串口發(fā)送的內容是“424D503042303030433044”,順序為: “B→M→P→0→B→0→0→0→C→0→D”; ●在每條命令的首末還要加上命令結束碼“回車鍵"的ASCII碼“0DH”,以表明該命令的結束。 ●若單片機AT89C52的串口已被占為它用,那么用一根口線來摸擬生成一個通訊協(xié)議為(19200,N,8,1)的軟串口發(fā)送命令即可。 下面給出與上述電路配套的顯示控制子程序: ; 位定義 BUSY BIT P3 ; 定義忙信號線 ; 數據字節(jié)定義 X V EQU 30H; 定義參數x XH V EQU 31H; 定義參數xH Y V EQU 32H; 定義參數y NUBER EQU 33H; 定義參數n WIDTH EQU 34H; 定義參數w HIGHT EQU 35H; 定義參數h ASC XH EQU 36H; 定義參數x高四位 ASC XL EQU 37H; 定義參數x低四位 ASC XHH EQU 38H; 定義參數xH高四位 ASC XHL EQU 39H; 定義參數xH低四位 ASC YH EQU 3AH; 定義參數y高四位 ASC YL EQU 3BH; 定義參數y低四位 ASC NH EQU 3CH; 定義參數n高四位 ASC NL EQU 3DH; 定義參數n低四位 ASC WH EQU 3EH; 定義參數w高四位 ASC WL EQU 3FH; 定義參數w低四位 ASC HH EQU 40H; 定義參數h高四位 ASC HL EQU 41H; 定義參數h低四位 ;初始化子程序 INIT SIO:MOV SCON,#50H;串行口方式1 MOV TMOD,#21H MOV TH1,#0FDH;波特率=19200? MOV TL1?#0FDH ORL PCON?#80H;SMOD=1 SETB TR1 ; 啟動T1 RET ;設置漢字或ASCII字符顯示首地址命令 ORDER HZA:MOV A? X V MOV R0? #REG ASC XH LCALL H ASC ;將參數x轉換為 兩個字節(jié)的ASCII碼 MOV A?XH V MOV R0? #REG ASC XHH LCALL H ASC ; 將參數xH轉換為 兩個字節(jié)的ASCII碼 MOV A?Y V MOV R0? #REG ASC YH LCALL H ASC ;將參數y轉換為 兩個字節(jié)的ASCII碼 LCALL BUSY CK MOV A? ?!埃取?;發(fā)送命令碼HZA 的ASCII碼 LCALL SEND BYTE MOV A?#“Z” LCALL SEND BYTE MOV A? ?!埃痢?/P> LCALL SEND BYTE MOV R0? #REG ASC XHH LCALL SEND CS;發(fā)參數H的ASCII碼 MOV R0? #REG ASC XH LCALL SEND CS;發(fā)參數x的ASCII碼 MOV R0? #REG ASC YH LCALL SEND CS;發(fā)參數y的ASCII碼 LJMP ORDER END ;顯示漢字串子程序 ORDER HZ? LCALL BUSY CK;檢測模塊閑狀態(tài) MOV A? ?!埃取?/P> LCALL SEND BYTE MOV A??!埃凇?/P> LCALL SEND BYTE MOV A? ?!埃摹?/P> LCALL SEND BYTE NEXT HZ: CLR A; 取漢字的高八位內碼 MOVC A,@A+DPTR INC DPTR;調整內碼指針 LCALL SEND BYTE CLR A; 取漢字的低八位內碼 MOVC A,@A+DPTR INC DPTR;調整內碼指針 LCALL SEND BYTE DJNZ R7,NEXT HZ MOV A,#0DH;命令結束 LCALL SEND BYTE RET ;顯示ASCII字符串子程序 ORDER ASCII: LCALL BUSY CK MOV A,?!埃取保?/P> LCALL SEND BYTE MOV A,?!埃凇?/P> LCALL SEND BYTE MOV A??!埃摹?/P> LCALL SEND BYTE NEXT ASCII? CLR A ?取ASCII碼 MOVC A?@A+DPTR INC DPTR LCALL SEND BYTE DJNZ R7?NEXT ASCII MOV A?#0DH LCALL SEND BYTE RET ;清屏子程序 ORDER CLR:LCALL BUSY CK MOV A,#“C” LCALL SEND BYTE MOV A??!埃獭?/P> LCALL SEND BYTE MOV A? ?!埃摇?/P> LCALL SEND BYTE LJMP ORDER END ;顯示下載到模塊內圖形子程序 ORDER BMP:MOV A,X V MOV R0, #REG ASC XH LCALL H ASC ;將參數x轉換為兩個 字節(jié)的ASCII碼 MOV A,XH V MOV R0?#REG ASC XHH LCALL H ASC ;將參數xH轉換為兩 個字節(jié)的ASCII碼 MOV A,Y V MOV R0, #REG ASC YH LCALL H ASC ;將參數y轉換為兩個 字節(jié)的ASCII碼 MOV A,NUBER MOV R0?#REG ASC NH LCALL H ASC ;將參數n轉換為兩 個字節(jié)的ASCII碼 LCALL BUSY CK ;檢測模塊閑狀態(tài) MOV A,#“B” ; 先發(fā)送命令碼 BMP的ASCII碼 LCALL SEND BYTE MOV A,?!埃汀?/P> LCALL SEND BYTE MOV A??!埃小?/P> LCALL SEND BYTE MOV R0, #REG ASC NH LCALL SEND CS;發(fā)參數n的ASCII碼 MOV R0, #REG ASC XHH LCALL SEND CS;發(fā)參數xH的ASCII碼 MOV R0,#REG ASC XH LCALL SEND CS;發(fā)參數x的ASCII碼 MOV R0, #REG ASC YH LCALL SEND CS;發(fā)參數y的ASCII碼 ORDER END:MOV A,#0DH ;發(fā)送命令結標 志“0DH” MOV SBUF,A JNB TI,$ CLR TI RET ;結束上次命令子程序 BUSY CK: MOV A,#0DH MOV SBUF,A JNB TI,$ CLR TI JNB BUSY?$ RET ;發(fā)送參數子程序 SEND CS: MOV A,@R0 LCALL SEND BYTE INC R0 MOV A,@R0 LCALL SEND BYTE RET ;發(fā)送字節(jié)數據子程序 SEND BYTE: MOV SBUF,A JNB TI,$ CLR TI RET TAB HZ: DB “漢字內碼表” TAB ASCII: DB “ASCII字符表” VLCM320240可視化編程液晶顯示模塊由于可將系統(tǒng)中用到的畫面預置到液晶顯示模塊內部,因而使得圖形界面與中文界面的生成變得非常容易,因此,該模塊無疑將是顯示信息要求較高的應用領域中理想的顯示器件選擇之一。 |
評論