彩色液晶智能控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
介紹了一種彩色液晶智能控制系統(tǒng)的實(shí)現(xiàn)方案,該系統(tǒng)封裝了彩色液晶的所有外圍電路,增加了智能控制功能。
它通過通信端口和外設(shè)相連,使對液晶的各種繁瑣控制過程簡化為接收外設(shè)指令的過程;還可通過配套軟件和微機(jī)通信,實(shí)現(xiàn)漢字庫更新和預(yù)置畫面等功能。
彩色液晶顯示器是現(xiàn)代高新技術(shù)產(chǎn)品,它具有體積小、功耗低、無輻射、壽命長、超薄、防震防爆等特點(diǎn)。彩色液晶顯示器的出現(xiàn),有力地推動了工控儀表、系統(tǒng)設(shè)備的微型化、節(jié)能化進(jìn)程,為單片機(jī)等微處理器系統(tǒng)提供了完善的人機(jī)對話界面,具有LED和CRT顯示器所無法比擬的優(yōu)點(diǎn)。但在開發(fā)帶有液晶顯示設(shè)備的系統(tǒng)的過程中,用點(diǎn)陣操作顯示漢字和圖形圖像是非常繁瑣的工作,工作量很大、周期較長。為了減輕開發(fā)人員的負(fù)擔(dān),提高開發(fā)效率,設(shè)計(jì)了彩色液晶智能控制系統(tǒng),把繁瑣的顯示操作封裝起來,簡化為一套簡單易用的指令系統(tǒng),只需通過接口向本系統(tǒng)發(fā)送簡單的指令,就可控制液晶顯示器的顯示,如畫曲線、顯示漢字和圖形圖像等。本系統(tǒng)為全數(shù)字化設(shè)計(jì),顯示穩(wěn)定可靠,抗強(qiáng)電磁干擾,可用于機(jī)電、冶金、船舶、航空、鐵路、電力、通訊導(dǎo)航等領(lǐng)域的系統(tǒng)設(shè)備和智能儀表中。
1 系統(tǒng)硬件組成及工作原理
系統(tǒng)采用工業(yè)級AVR高速微處理器,內(nèi)置二級字庫,通過串口或三態(tài)數(shù)據(jù)總線口接收控制命令數(shù)據(jù), 自行對接收的命令和數(shù)據(jù)進(jìn)行處理,實(shí)時(shí)顯示所需的各種曲線、中西文和圖形圖像。硬件原理框圖如圖1所示。
1.1 微處理器系統(tǒng)
微處理器是實(shí)現(xiàn)智能控制功能的核心部分,為了有效控制液晶顯示圖像的失真度,微處理器采用高速單片機(jī)AT90S8515(如果對顯示速度要求很高,例如顯示動畫等,可采用DSP芯片)。單片機(jī)系統(tǒng)上電后便處于實(shí)時(shí)接收命令狀態(tài),可完成和外設(shè)通信、對外設(shè)發(fā)送的命令進(jìn)行解釋并執(zhí)行命令(如從漢字庫中取字模并在相應(yīng)的位置顯示出來)、在適當(dāng)位置畫線、顯示預(yù)置圖形和畫面等。
1.2 電源部分
外部+12V電源由電源接口引入,分為兩路,一路經(jīng)過DC/DC變換后,產(chǎn)生直流偏置電源,為彩色液晶模塊提供所需電源;另一路經(jīng)DC/AC變換后,產(chǎn)生高壓交流電,為液晶屏背光燈CCFL供電。
1.3 通信端口
通信端口包括總線口和串行口,外部設(shè)備通過通信端口和本控制系統(tǒng)進(jìn)行電氣溝通,并發(fā)送相關(guān)指令,從而達(dá)到對液晶顯示的各種控制??偩€口是一個(gè)并行口;串行口采用RS232電平標(biāo)準(zhǔn),單片機(jī)的串行TTL電平經(jīng)過SIO轉(zhuǎn)換后,變?yōu)镽S232標(biāo)準(zhǔn)電平(負(fù)邏輯),這里高電平變?yōu)?8V,低電平變?yōu)?V。它可以和微機(jī)等標(biāo)準(zhǔn)串口直接相連,進(jìn)行串行通信。如果其它控制系統(tǒng)通過串行口和本系統(tǒng)相連,只需三條線就可控制液晶的顯示。
1.4 FLASH閃存
閃存由4片Am29F040B組成,每片Am29F040B包括512K字節(jié),共2M字節(jié)。第一片Am29F040B用來存儲漢字點(diǎn)陣和圖形數(shù)據(jù),后三片共1.5M字節(jié)用來存儲圖像數(shù)據(jù)。液晶采用320×240分辨率的16位數(shù)字彩色液晶,RGB分量各包含5位,每點(diǎn)占用兩個(gè)字節(jié),1.5M可以存儲的滿屏圖像約10幅。由于Am29F040B的地址線多于微處理器的地址線,因此采用分頁技術(shù)進(jìn)行處理,即把多出的地址線通過鎖存器與數(shù)據(jù)線相連,讀取數(shù)據(jù)前先向鎖存器寫入頁面地址數(shù)據(jù),即選中該地址對應(yīng)的頁,然后讀取該頁。用同樣的方法可以讀取其它頁,不同片子之間可以利用微處理器的空閑端口,通過控制Am29F040B的片選信號加以區(qū)分。應(yīng)用這種方法可以擴(kuò)充FLASH閃存達(dá)數(shù)G之多。
1.5 液晶驅(qū)動電路及顯存
液晶驅(qū)動電路主要對液晶點(diǎn)陣完成讀寫操作,并產(chǎn)生液晶接口所需要的行場掃描信號、時(shí)鐘信號及其它控制信號。由于時(shí)序邏輯關(guān)系相當(dāng)復(fù)雜,這里采用了復(fù)雜可編程邏輯芯片CPLD進(jìn)行編程控制。外部總線對顯存進(jìn)行讀寫操作,就可以對屏幕相應(yīng)象素的顏色與亮度進(jìn)行控制。
2 系統(tǒng)軟件
軟件實(shí)質(zhì)上是一個(gè)通信程序,實(shí)時(shí)接收和執(zhí)行串口和總線口發(fā)來的命令。接收程序用匯編語言編寫。串口通信采用一位起始位、一位停止位、8位數(shù)據(jù)位、無較驗(yàn)位的異步串行通信方式;總線口為并行口,數(shù)據(jù)發(fā)來時(shí),引起中斷,在中斷子程序中,讀取總線口數(shù)據(jù)。主程序和中斷程序流程圖如圖2所示。[!--empirenews.page--]
系統(tǒng)上電后,首先進(jìn)行初始化,接著循環(huán)讀取緩沖區(qū)指針。若有數(shù)據(jù),則讀取緩沖區(qū)數(shù)據(jù),并對數(shù)據(jù)進(jìn)行分析;若為命令就讀取完整的命令信息,并執(zhí)行命令。否則,就將讀取內(nèi)容作為中西文字符顯示。命令主要有:畫線、畫矩形、畫橢圓、畫曲線、畫填充區(qū)域、中西文切換、光標(biāo)跳轉(zhuǎn)、字庫更新及圖形圖像下載及顯示等。若有中斷發(fā)生,就進(jìn)行中斷處理。外設(shè)引起的中斷共有兩個(gè):串行中斷和總線口中斷,當(dāng)有一個(gè)串行數(shù)據(jù)或總線口數(shù)據(jù)到達(dá)時(shí),就會引發(fā)相應(yīng)的中斷。這兩種中斷雖然入口地址不同,但它們實(shí)現(xiàn)的功能是完全一樣的,都是讀取外設(shè)傳來的數(shù)據(jù),并將其放入緩沖區(qū)中。
從微機(jī)下載字庫或圖像文件時(shí),數(shù)據(jù)量較大,在對板載接收程序編程時(shí)應(yīng)注意對128字節(jié)緩沖區(qū)的操作要合理,否則會導(dǎo)致軟件系統(tǒng)的崩潰。緩沖區(qū)是作為環(huán)形隊(duì)列來使用的,主要應(yīng)注意兩點(diǎn):一是不要等緩沖區(qū)滿時(shí)才置DTR(見圖3)為“忙”狀態(tài),因?yàn)檫@樣正在傳輸?shù)淖止?jié)會丟失;二是當(dāng)DTR出現(xiàn)一次“忙”后,緩沖區(qū)有較多空閑時(shí),應(yīng)使DTR信號變?yōu)椤伴e”,否則會因DTR信號變化太頻繁而使程序失控。這里的算法是,當(dāng)緩沖區(qū)還有6個(gè)字節(jié)空閑時(shí),置DTR有效(CPU“忙”),暫停通信;之后,當(dāng)緩沖區(qū)降到64字節(jié)的閑余時(shí),置DTR為“閑”,恢復(fù)通信。這樣,雖然下載速度稍微受點(diǎn)影響,但通信的可靠性大大增強(qiáng)了;另一方面,下載完數(shù)據(jù)后,本系統(tǒng)要脫機(jī)和其它微處理器連接使用,下載速度對本系統(tǒng)的使用無任何影響。
3 預(yù)置功能的實(shí)現(xiàn)
預(yù)置功能主要是通過微機(jī)的通訊程序,為液晶顯示器預(yù)先儲存漢字字庫、圖形或圖像,并可隨時(shí)更新漢字字庫、圖形或圖像,以便系統(tǒng)脫機(jī)和其它微處理器連用時(shí),可以利用這些資源。當(dāng)其它微處理器系統(tǒng)發(fā)送顯示預(yù)置資源命令時(shí),本系統(tǒng)就會控制液晶顯示器來顯示相應(yīng)的漢字點(diǎn)陣、圖形或圖像。存儲器采用非易失FLASH閃存,分為字庫、圖形和圖像三個(gè)區(qū)域。字庫存儲的是漢字字模的點(diǎn)陣,圖形存儲的是液晶圖形方式下的一些命令,圖像存儲的是BMP位圖點(diǎn)陣數(shù)據(jù)。
預(yù)置軟件是智能控制系統(tǒng)的配套軟件,用來下載PC機(jī)的圖形圖像到智能控制系統(tǒng)中,實(shí)現(xiàn)預(yù)置功能。它基于MSComm通信控件,采用VC++的MFC類庫編程,控件工作方式為查詢方式,可運(yùn)行于Windows的所有操作系統(tǒng)中,通過微機(jī)串行口和本系統(tǒng)通信。連接關(guān)系如圖3所示。
由于通信距離較近,采用串行口直接相連方式。微機(jī)通信端口選擇COM1或COM2,它們是標(biāo)準(zhǔn)的RS232異步通訊接口。微機(jī)向智能控制系統(tǒng)發(fā)送數(shù)據(jù),進(jìn)行單工串行通信,在智能界面板載128字節(jié)的緩沖區(qū),采用了DSR硬件握手程序。在通訊過程中,如果智能控制系統(tǒng)的微處理器忙,它就會置DTR(微機(jī)的DSR)為RS232標(biāo)準(zhǔn)的低電平,微機(jī)暫停發(fā)送;等智能控制系統(tǒng)的微處理器閑時(shí),它又置DSR為高,微機(jī)繼續(xù)發(fā)送數(shù)據(jù)。
字庫預(yù)置是把漢字字庫點(diǎn)陣下載到FLSH的字庫區(qū);圖形預(yù)置時(shí),軟件會根據(jù)選擇的液晶屏型號,使預(yù)置視區(qū)和液晶屏分辨率相同。此時(shí)菜單項(xiàng)包括畫線、畫矩形、畫橢圓、畫曲線、畫填充區(qū)域及寫漢字等。用戶可選擇在視區(qū)繪制圖形或?qū)憹h字的命令,然后按下發(fā)送命令,程序會在后臺把用戶繪制的圖形轉(zhuǎn)換為相應(yīng)的智能控制系統(tǒng)能識別的命令傳送出去,之后智能控制系統(tǒng)的接收程序會把這些命令存儲到FLASH的圖形區(qū)內(nèi);圖像預(yù)置時(shí),程序可以打開一副BMP無壓縮圖像,在圖像上有一個(gè)大小和位置可改變的矩形框,用來選定傳送圖像的區(qū)域,按下發(fā)送命令后,程序提取矩形框內(nèi)圖像的寬高和點(diǎn)陣數(shù)據(jù),傳送出去。
在對BMP圖像數(shù)據(jù)進(jìn)行提取時(shí),應(yīng)注意以下幾點(diǎn):第一,大多數(shù)BMP圖像點(diǎn)陣都是倒置的,起始點(diǎn)在左下角。第二,現(xiàn)在Windows操作系統(tǒng)下的位圖多為與設(shè)備無關(guān)的位圖,256色及以下位圖都帶有調(diào)色板,調(diào)色板每個(gè)顏色表示的三字節(jié)RGB分量按相反的順序排列,要注意調(diào)色板與位圖數(shù)據(jù)的正確對應(yīng)關(guān)系。第三,要把顏色信息轉(zhuǎn)化為本系統(tǒng)能識別的信息。系統(tǒng)采用的液晶屏為16位色(用兩字節(jié)表示),對于24位真彩色,要把RGB分量由256個(gè)等級轉(zhuǎn)化為32個(gè)等級,即把每點(diǎn)的RGB分量分別除以8,再合為兩個(gè)字節(jié);對于256色及以下位圖,要先找到每點(diǎn)對應(yīng)的調(diào)色板顏色表示的信息,然后按上面介紹的方法處理即可。這種方法雖然引入一些失真,但失真不大,完全滿足應(yīng)用要求。