基于P89LPC932的LCD組態設計
關鍵詞:P89LPC932 組態設計 LCD顯示 通信模式 堆??臻g 初始化程序
引言
隨著微電子技術、網絡技術和控制技術的不斷發展,LCD作為現場顯示設備廣泛應用在各種通信與控制系統中。大部分的LCD集成了中英文字庫,用戶輸入區位碼或ASCII碼即可實現文本顯示。由于現場控制設備通常較為分散,顯示的項目個數和功能也不盡相同,往往給設計帶來許多不例。常用的方法是,在軟件的設計階段,根據要求把各個顯示的信息固化和程序中。若要修改某個中文字符,程序員首先必須查出其區位碼,然后修改計算機上的漢字數據。這樣,不但系統的開發周期長、程序可讀性差,而且給日后的維護帶來很大的不便。為了實現程序的通用性,選用Philips的P89LPC932實現具有組態功能的LCD顯示。其優點是,在不需要修改系統軟件情況下,通過串口與組態軟件方便地設定LCD顯示的項目和個數,功能菜單隨著設定項目的個數自動改變,并且實現了對設備的簡單控制操作,達到了通用性和靈活性結合的目的。
1 P89LPC932介紹
P89LPC932是Philips公司推出的高性能高速度的80C51 CPU,采用0.35μm Flash,6倍速于標準的8051。8KB?。苐ash程序存儲器,具有1KB可擦除扇區和64B可擦除頁;512B數據EEPROM存儲器可用來存儲器件序列碼及設置參數;256B RAM,512B輔助片內RAM。
在P89LPC76X系列中,P89LPC764得到了廣泛的應用;但由于LPC764只有4KB 的程序空間和128B的數據存取空間,故不能滿足較大量數據通信和顯示的要求。與之相比,P89LPC932還具有如下特點與優勢:
①程序區域擴大。由4KB的EPROM擴大為8KB Flash,并提供在線編程功能。
②數據區域擴大。P89LPC932有256B的內部數據存取區,512B的輔助存取區和512B的EEPROM。
③串行通信功能增強。設置高精度波特率發生器。LPC764實時串行通信時,模式3要使用到定時器1。LPC932使用波特率發生器實現通信設置,可節省出定時器1。帶有字符檢測、幀錯誤檢測、溢出錯誤檢測、雙緩沖發送功能、發送中斷控制(停止位的開始或結束產生中斷)、可實現RX/TX中斷分開,從而提高通信效率。
④新增定時器模式6。簡單的8位PWM信號發生器,帶自動重裝的8位定時/計數器,重裝值表示PWM領帶的占空比。
⑤串行外圍接口SPI。高速串行通信接口,最高速度為3Mb/s。主從模式實現全雙工同步通信。
圖3
2?。蹋茫南到y組態
組態式LCD實現的關鍵在于對漢字處理,以往的做法把系統菜單的漢字區位碼固定在程序中。由于立即數表示的信息難于維護,一旦需要對程序修改,將是一件費勁的事件。我們的處理方法是,設置系統信息表,并把所有的中文信息(系統菜單和顯示信息)存放于EEPROM。中文信息和系統信息表通過由VB編寫的LCD組態軟件完成,并通過串口下載到EEPROM。當LCD上電后,程序根據系統信息自動配置顯示菜單,從而實現了系統的組態性。
系統信息表記錄實際顯示的AI、AO、操作參數、DI、DO的個數。LCD在進行頁面更新時,先讀出相應項目的個數,并自動調整顯示的條目。所有AI、AO、OPER、DI、DO的名稱中文區位碼,單位ASCII碼,狀態信息中文區位碼都存放到EEPROM中。項目名稱為4個漢字,單位信息為2個ASCII字符,狀態信息為2個漢字。
LCD顯示裝置實現功能如下:
①實時顯示8個模擬量輸入點(AI)、8個模擬量輸出點(AO)、8個運行參數、8個開關量輸入點(DI)、8個開關量輸出點(DO)。
②修改模擬量輸出點、運行參數和開關量輸出點,實行就地對設備的控制。
③密碼管理。用戶可以直接在LCD上或通過組態軟件修改密碼。
④流動顯示和手動顯示功能。
⑤組成功能。通過組態軟件可以方便地修改各顯示量的中文代碼和單位等信息。
Slave模式:LCD等待主站發送實時數據。當接收到數據時檢測是否為本機站號。若是,立即接收數據并進行顯示,否則丟棄數據包,如圖1所示。
Master模式:LCD輪流向各個控制器發出請求讀數命令,并作相應的顯示,如圖2所示。
組態模式:LCD發出組態命令,當接收到組態信息后發出組態成功信息。
3 硬件設計
如圖3所示,P89LPC932中P0口作為鍵盤輸入和站號地址,P2口與LCD數據線相連,P1.7、P1.6為LCD數據傳輸的握手信號。串行通信線TXD、RXD與MAX487相連,并通過P1.4實現通信方向的切換。
LCD選用的是OCM28液晶顯示器,內含GB23121616點陣國際一級簡體漢字字庫和ASCII88及816點陣英文字庫;具有上/下/左/右移動當前顯示屏幕及清除屏幕的命令。LCD所有的設置初始化工作在上電時自動完成,實現了即插即用。LCD硬件接口使用8位并行接口方式,采用REQ/BUSY握手協議。圖4所示為LCD寫漢字時序。LCD模塊在收到外部的REQ高是怦信號后立即讀取數據線上的命令或數據,同時將應答線BUSY變為高電平,表明LCD已收到數據并正在忙于對數據的內部處理。當BUSY變為低電平時,表明LCD對用戶的寫操作已經執行完畢。在寫入多個數據時,可以不斷地查詢應答線BUSY是否為低電平。如果為低電平,可以繼續送下一個數據。
4 軟件設計
圖5是軟件的結構,每個模塊對應一個獨立的處理函數。LCD顯示以頁為單位,程序設“PageArbiter”函數實現對頁面的管理。頁面管理函數根據用戶的按鍵,決定進入如“菜單顯示”、“密碼設定、“參數顯示”等畫面。以下是硬件驅動功能的說明。
圖5
P89LPC932的增強型UART具有一個獨立的波特率發生器,波特率取決于對BRGR1和BRGR0的值。如果SMOD1(PCON.7)置位,定時器T1被2分頻。但需要修改BRGR1和BRGR0寄存器的值前,為了避免向波特率發生器裝入錯誤的值,必須在RBGCON寄存器中的BRGEN位為0才能寫入。程序設計使用外晶振(11.0592MHz)選擇串行通信模式3,并利用波特率發生器設置通信速率。波特率發生器計算為
(BRGR1,BRGR0)=(11.0592MHz/19200)-16=0x0230
初始化流程如圖6所示。
若不使用波特率發生器設置串行通信的通信速率,可以使用定時器。其計算公式為
波特率=2fosc192/[0xFF-(TH1)]
選用11.0592MHz的外晶振,波特率為19200bps,則計算出TH1=0xFA。其初始化流程如圖7所示。
(2)EEPROM讀寫操作
P89LPC932擁有512字節的片內數據EEPROM,用于保存配置參數數據。EEPROM由SFR控制,可字節讀、字節寫以及可擦除(通過行填充和塊填充)。用戶通過3個SFR和1個中斷對其進行讀、寫和填充。EEPROM可尋址空間為512個字節,使用9位地址。當數據地址大于0xFF時,置控制寄存器DEECON的第0位。值的注意的是,在訪問EEPROM時,必須對DEECON的第0位清0或置1。在仿真過程中發現,當讀一個地址少于0xFF的字節數據后,再次向同一地址數據時出現錯誤。檢查的結果是第一次讀數時DEECON第0位為0,但第二次讀數時DEECON的第0位就自動地變為1。所以在讀寫數據時,必須對DEECON的第0位賦正確的值。
在任何模式中操作完成之后,硬件都會置位EEIF位。如果EEPROM中斷允許位(EIEE)和系統中斷位(EA)都置位。將產生中斷請求。中斷產生后必須由軟件清零。其初始化程序如下:
EIEE=TRUE;/*允許EEPROM中斷*/
EA=1; /*允許系統中斷*/
(3)輔助RAM的使用
我們所所有從串行通信得到的實時數據存放在輔助RAM區內。讀寫程序如下:
#include"ABSACC.H"
bData=XBYTE[i]; /*輔助RAM讀操作*/
XBYTE[i]=bData; /*輔助RAM寫操作*/
5 組態軟件設計
組態軟件和仿真軟件是由VB開發的。當LCD進入組狀態后,發送請求組態信號。 組態軟件檢測LCD的站號,并向相應的LCD發出組態初始化信息包。LCD發出組態初始化信息包。LCD接收到組態軟件開發的數據包并發出回答信息包。組態軟件依次把中文內碼和單位傳送到LCD。
結語
采用P89LPC932芯片實現了具有組態功能的LCD顯示。系統硬件電路簡單,易于根據用戶和系統的需要設置顯示的項目和個數,實現了對AI、AO、DI、DO和運行參數的顯示和修改。
評論