近年來隨著低成本高性能32位微處理器的出現,越來越多的工程設計人員把目光投向32位嵌入式產品的開發中。目前ARM系列32位微處理器在低功耗移動通信設備方面占有絕對優勢;Motorola的MC683xx系列和Cold Fire系列主要用于工控、智能化儀表和汽車電子等領域;SoC技術是系統開發越來越傾向于32位CPU為核心,32位微處理器日益顯示出其巨大的優越性。顯示器件是嵌入式系統進行人機交互的重要設備,液晶顯示器具有體積小、微功耗、低輻射、性能可靠等優點,已經成為工程技術人員進行系統設計的首選。但目前常用的多種液晶顯示控制器還僅是基于8 位總線并且管理顯示存儲器空間較小,在系統有大量高速實時數據的情況下就有些吃力,“顯示瓶頸”有待解決。對此本文提出了一種基于16位總線的大規模點陣圖形液晶顯示控制器SED1353和32位微處理器相結合的液晶顯示系統,有效地解決上述問題。 SED1353圖形液晶顯示控制器簡介及其接口原理 SED1353圖形液晶顯示控制器作為計算機系統控制液晶顯示模塊的專用芯片,具有8 位/16位計算機總線接口;內置調色板,最大支持256種色彩或16級灰度的液晶顯示屏;具有管理128KB顯示存儲器空間的能力,可支持最大分辨率為1024×1024點陣液晶顯示模塊,提供了比較寬的應用領域。 SED1353是一種可以由微處理器管理顯示存儲器的液晶顯示控制芯片,即微處理器可以采用訪問外部存儲器的方法直接對顯示存儲器和它的16個內部寄存器進行設置讀取。相比由控制器管理顯示存儲器方式的液晶顯示控制器(典型芯片如SED1335),SED1353的優點是顯而易見的,它不需要反復寫指令再寫數據完成對顯示存儲器和內部寄存器的管理,控制效率大為提高。由于要分配一定地址空間給顯示存儲器,SED1353控制器的缺點是占系統資源比較多。微處理器在訪問SED1353的內部寄存器時,地址總線分為三部分:A15~A10組合作為寄存器片選信號I/OCS;A9~A4作為基地址且需要與上電時的VD12~VD7 比較,相等才進行內部譯碼選通寄存器;A3~A0作為16個寄存器AUX[0~F]的地址。微處理器訪問顯示存儲器時,地址總線分為兩部分:A19~A17高位地址對應顯示存儲器的128KB地址空間,與VD15~VD13設置相等才內部譯碼選通顯示存儲器;A16等地址線組合作為顯示存儲器片選信號MEMCS# ,以對顯示存儲器單元進行操作。 硬件系統設計 MC68332與SED1353的接口電路設計 MC68332通過地址總線、數據總線,CS8片選信號、數據傳輸寬度信號SIZ0、A0及讀寫控制R/W,外圍器件接口應答信號DSACK1,同SED1353進行異步數據傳送。SED1353的I/O地址空間分配為$200000~$23FFFF。其中SED1353的16個8位寄存器地址為$200000~$20000F ;顯示存儲器占用128KB地址空間,即$220000~$23FFFF。CS8允許的地址空間塊大小設置為256KB,起始地址$200000。DSACD1指明外部外圍器件寬度為16位;可訪問管理/用戶級空間;允許進行讀寫訪問。故CS 8基址寄存器和選擇寄存器編程為:CSBAR8=$2005;CSOR8=$7BF0。MC68332與SED1353的接口電路如圖1 所示。圖1 還給出了SED1353與液晶屏LM64P83L的接口電路。SED1353通過顯示存儲器的數據總線VD15~VD0的復位上電設置自己的I/O地址。設數值1表示該端接一個10kΩ電阻上拉至高電平,0表示不接上拉電阻,x表示任意。故設置VD15~VD13=001;VD12~VD4=000000xxx;其中VD3~VD0=1,表示16位數據總線、直接訪問方式、M68000時序及總線高低字節交換。 ![]() 地址譯碼GAL的設計 當MC68332的字或長字數據傳送到SED1353的I/O偶數地址(受對準限制)時,需要使BHE# 、AB0/UDS#同時低電平有效。單字節傳輸雖然不受對準限制,但單字節數據傳送到SED1353的I/O奇數地址時(如訪問SED1353內部8 位寄存器) ,需要使SED1353的BHE#低電平有效,AB0/UDS#高電平無效;此外,MC68332設置定義的CS8定義的地址空間包括了內部寄存器和顯示存儲器的地址空間,此時還不能將各自的片選信號分開。因此可通過可編程邏輯器件來解決這一問題,GAL將依據下列等式編程: IOCS#=!(!CS 8 &!A17 &!A16 &!A15 &!A14 &!A13&!A12&!A11 &!A10) MEMCS#=CS8 BHE#=SIZ0&!A0 軟件設計 MC68332的硬件初始化程序設計 MC68332的復位向量和初始化程序駐留在ROM中,在系統復位后MC68332從異常情況向量表中取出向量后在管理方式下執行初始化程序來定義相關地址、常數及其他參數。首先進行硬件初始化,依次初始化全局寄存器、各模塊和外部設備等。MC68332地址空間的分配如下:尋址空間的$000000~$0FFFFF分配為ROM存儲區,$100000~$13FFFF為SRAM 存儲區,$200000~$23FFFF為顯示存儲區,$240000~$FFDFFF分配給其他外設(如串行通信模塊的MC68HC681等) 。通過設備BAR 寄存器,把片上RAM 定位在$FFE000~$FFE7FF。通過設置SIM 模塊的MCR 寄存器,把$FFF000~$FFFFFF存儲區作為模塊寄存器區。硬件初始化完成后,MC68332通過設置用戶堆棧指針地址USP、狀態寄存器SR 以及程序計數器PC將控制權交給應用程序。應用程序一般工作在用戶方式下。本文中液晶顯示系統使用的液晶屏為SHARP公司的LM64P83L,STN單色雙屏結構640×480點陣。限于篇幅,只列出SED1353硬件初始化程序清單。 SED1353初始化程序: INCLUDE SED1353.ASM INIT MOVE.B#$00,AUX00;設置為正常工作模式 MOVE.B#$44,AUX01;設置關顯示,雙屏結構,不屏蔽XSCL,8 位LCD數據,16 位顯存結構 MOVE.B#$27,AUX02;設置顯示域寬度LBCB8 :0=1×640/16-1=39(十進制) MOVE.B#$04,AUX03;設置正常運行方式,單色無灰度顯示,1 位/像素 MOVE.B#$EF,AUX04;設置掃描行數,TDLC7 :0=480/2-1=239(十進制) MOVE.B#$00,AUX05;使用默認值,每幀WF翻轉一次 MOVE.B#$00,AUX06;設置上半屏顯示首址為$220000 MOVE.B#$00,AUX07 MOVE.B#$80,AUX08;設置下半屏顯示首址為$224B00(使用連續地址) MOVE.B#$25,AUX09 MOVE.B#$00,AUX0C;使用默認非顯示周期 MOVE.B#$00,AUX0D;不使用虛擬屏 ORI.B#$90,AUX01;開顯示和LCDE 使能不需要設置的寄存器會被自動旁路 漢字顯示程序的設計 在對系統進行完正確的初始化后將ROM中的字模數據送到SED1353顯示存儲器,就可以使液晶顯示屏顯示出漢字。顯示漢字需要指定其坐標位置,坐標對應該漢字模入口地址。在顯示漢字界面前,首先清屏。由于本文中顯示存儲器結構為16位,所以X方向以字為單位(偶數地址對齊)。故規定顯示區左上角坐標為(0,0) ,右下角坐標為(39,479)。每個漢字都有唯一的代碼,所以在調用字模數據前需要對漢字的代碼進行解碼,對坐標進行解析。 字模入口地址=Y坐標×80+X 坐標×2;字模首地址=漢字代碼×32+字庫首地址。 以在坐標(30,148)處顯示代碼為24的16×16 漢字為例,程序如下: (1) 清屏子程序 MOVE.L# $220000,A4 ;賦當前顯示首址 BRA CLRLCD ;調用清屏子程序 CLRLCD CLR.LD3 CLR.LD4 MOVE.W#480,D3;需要清480 行 LOOP1 MOVE.W#40,D4 ;每行40 個字 LOOP2MOVE.W#$0000,(A4)+ ;清零 SUB.W#1,D4 BNE LOOP2 SUB.W#1,D3 BNE LOOP1 RTS (2) 漢字顯示子程序 MOVE.L#0,A1 ;清A1,A2 MOVE.L#0,A2 CLR.LD1 ;清D1~D4 CLR.LD2 CLR.LD3 CLR.LD4 MOVE.B #30,D2;賦坐標值 MOVE.W #148,D3 BSR ALXY;調坐標解析子程序 MOVE.LD3,A1 ;坐標的絕對地址送出 MOVE.W#24,D4 ;賦代碼值 BSR DECODE ;調解碼子程序 MOVE.LD4,A2;字模首址送出 LOOP MOVE.W(A2) +,(A1) ADD.L#$50,A1 ;字模數據寫入換行 SUB.B #1,D1 BNE LOOP END DECODE MULU #32,D4 ADD.W#TAB16,D4 MOVE.B #16,D1 ;循環16 次 RTS .... ALXYMULU #$50,D3 MULU #$2,D2 ADD.WD2,D3 ADD.L#$220000,D3 RTS TAB16 … *****設“馬”漢字代碼為24 ****** DC.W$0020,$3FF0,$0020,$0820;馬 DC.W$0820,$0820,$0820,$0824 DC.W$0FFE,$0004,$0024,$FFF4 DC.W$0004,$0004,$0028,$0010 ... 結束語 32位嵌入式處理器的軟件開發以C語言為主,通常情況下用匯編語言編寫與硬件有關的程序,高級語言C編寫主程序實現某些復雜算法,若再配上實時多任務任務操作系統更是如虎添翼。本文所述方法可移植性強,稍作修改可應用于摩托羅拉MC68K系列嵌入式系統;選用的SED1353具有直接管理128K大容量顯示緩沖區的能力,編程簡單、顯示速度快和執行效率高;可支持多種單色/彩色液晶顯示屏,可以實現數據顯示、繪制圖表以及翻轉等功能,具有良好的顯示界面,提高了系統的可操作性,值得在智能化儀器儀表中推廣。 |