基于ARM7微處理器的中文液晶顯示技術(shù)
——
液晶顯示屏lcd作為一種功耗低、體積小、無輻射的顯示器件,近幾年被廣泛應(yīng)用于各式各樣的嵌入式電子產(chǎn)品中,lcd可分為段位式、字符式和點(diǎn)陣式三種,其中,段位式lcd和字符式lcd只能用于字符和數(shù)字的簡單顯示,不能滿足圖形曲線和漢字顯示的要求,而點(diǎn)陣式lcd不僅可以顯示字符、數(shù)字,還可以顯示各種圖形、曲線及漢字,并且可以實(shí)現(xiàn)屏幕上下左右滾動(dòng)動(dòng)畫功能,分區(qū)開窗口、反轉(zhuǎn)、閃爍等功能,用途十分廣泛,為了簡化液晶 顯示電路的設(shè)計(jì)和應(yīng)用,生產(chǎn)廠家通常將液晶顯示單元、顯示控制器,顯示內(nèi)存和顯示驅(qū)動(dòng)電路等裝配在一起,做成液晶顯示模塊lcd module(lcm)[1]。lcm對(duì)外提供標(biāo)準(zhǔn)數(shù)據(jù)和控制接口以及控制指令,本文以tm12864c為例,介紹帶控制驅(qū)動(dòng)器st7920的液晶顯示模塊與philips公司的arm7微控制器lpc2214的接口設(shè)計(jì)及編程方法,并在此基礎(chǔ)詳細(xì)介紹在液晶顯示屏上顯示可連續(xù)滾動(dòng)的中文菜單及菜單項(xiàng)反白選擇顯示的設(shè)計(jì)方法,并討論如何解決漢字顯示過程中出現(xiàn)的亂碼問題。
2 硬件實(shí)現(xiàn)
atm12864c是廣東金鵬電子有限公司生產(chǎn)的中文液晶顯示模塊,該款液晶顯示模塊采用中文字型點(diǎn)陣的控制驅(qū)動(dòng)器st7920,他內(nèi)含8192個(gè)16×16點(diǎn)陣的國標(biāo)簡體漢字和126個(gè)16×8點(diǎn)陣的英文符號(hào)字庫。用戶輸入國標(biāo)碼或ascii碼即可實(shí)現(xiàn)文本顯示。滿屏顯示為8個(gè)漢字×4行,另外,還提供64×256點(diǎn)的繪圖ram(gdram),可以與文字混合顯示,而且內(nèi)含字型產(chǎn)生ram(cgram),提供可編程造字功能,atm12864c提供的外部接口信號(hào)有:8位數(shù)據(jù)總線d0-d8;寄存器選擇信號(hào)r/s,當(dāng)r/s為高電平時(shí),控制數(shù)據(jù)寄存器,r/s為低電平時(shí),控制指令寄存器,讀寫信號(hào)r/w,r/w為該電平時(shí)讀,低電平時(shí)寫,使能信號(hào)e,下降沿有效,atm12864c的寫操作時(shí)序如圖1(b)所示,讀操作時(shí)序除r/w信號(hào)為高電平外,其余與寫操作時(shí)序相同[2]。
lpc2214是philips公司推出的一款基于一個(gè)支持實(shí)時(shí)仿真和跟蹤的32位arm7tdmi-s cpu的微控制器,頻率高達(dá)60mhz,帶有256kb嵌入的高速片內(nèi)flash存儲(chǔ)器和4個(gè)32位寬度的外部存儲(chǔ)器接口,是一款低功耗、高性能、小封裝的微控制器,lpc2214的外部存儲(chǔ)器訪問時(shí)序如圖1(a)所示[1]。
為了節(jié)省微控制器的普通i/o口資源和簡化程序的編寫,lpc2214可以通過數(shù)據(jù)總線與控制信號(hào)直接采用外部存儲(chǔ)器訪問形式控制液晶顯示模塊,這種方式對(duì)于一些i/o口資源緊張的復(fù)雜系統(tǒng)有著更加重要的意義,由于sta7920的數(shù)據(jù)訪問時(shí)序與ltc2214的存儲(chǔ)器訪問時(shí)序有很大區(qū)別,如圖1所示。lpc2214和液晶顯示模塊的接口電路設(shè)計(jì)的關(guān)鍵是如何通過合理的設(shè)計(jì),使得lpc2214的存儲(chǔ)器訪問時(shí)序和st7920的訪問時(shí)序正確的配合。
lpc2214與液晶顯示模塊的接口電路如圖2所示。lpc2214通過低位地址a1控制lcm的r/s信號(hào),以選擇當(dāng)前控制的寄存器,通過對(duì)lpc2214寫信號(hào)we做適當(dāng)?shù)难舆t后作為lcm的r/w信號(hào)控制數(shù)據(jù)總線上的數(shù)據(jù)流方法。而lcm的使能信號(hào)e由lpc22414的讀信號(hào)oe、寫信號(hào)we和存儲(chǔ)器控制器的片選信號(hào)cs1來合成產(chǎn)生,在產(chǎn)生讀寫信號(hào)r/w信號(hào)的電路中,電阻r和電容c的選擇是關(guān)鍵,根據(jù)lpc2214和st7920的電氣特性(具體見文獻(xiàn)[1,2])和調(diào)試的結(jié)果,理想的選值:r取1kω,c取12pf,為了實(shí)現(xiàn)低功耗,lcm的背光通過一個(gè)普通i/o口來控制,當(dāng)有外部按鍵響應(yīng)時(shí),背光點(diǎn)亮,否則背光熄滅。
由于lcm的片選信號(hào)由cs1控制,即使用lpc2214外部存儲(chǔ)器接口的bank1地址空間,而r/s信號(hào)由a1控制,所以lcm的操作如下:
命令輸入地址:0x81000000
數(shù)據(jù)操作地址:0x81000002
3 軟件設(shè)計(jì)
在帶漢字庫的液晶屏顯示程序設(shè)計(jì)過程中,中文菜單的滾動(dòng)顯示和菜單項(xiàng)的反白選擇是關(guān)鍵,本文所選的液晶顯示模塊可顯示4行,每行可顯示8個(gè)中文字符。當(dāng)要顯示的菜單項(xiàng)大于4個(gè)時(shí),需要進(jìn)行滾屏顯示。本文設(shè)計(jì)了一種人機(jī)交互友好的菜單操作程序,該程序的基本思想:在內(nèi)存中開辟一個(gè)可顯示4×16得二維字符型數(shù)組的顯示緩沖區(qū),把要顯示菜單項(xiàng)列表存儲(chǔ)在另一個(gè)二維數(shù)組中,通過改變顯示函數(shù)lcm_show()的參數(shù),方便、靈活地顯示菜單列表中指定的菜單項(xiàng),假設(shè)要顯示如圖3(a)中的5項(xiàng)菜單,默認(rèn)的顯示焦點(diǎn)在第一行,即把第一行的菜單項(xiàng)進(jìn)行反白顯示,當(dāng)按"下移"鍵,顯示焦點(diǎn)下移一行。當(dāng)焦點(diǎn)下移至液晶顯示屏最后一行時(shí),如圖3(b)所示,此時(shí)再按"下移"鍵,顯示屏向上滾動(dòng),如圖3(c)所示,當(dāng)繼續(xù)按"下移"鍵時(shí),顯示屏繼續(xù)向上滾動(dòng),循環(huán)顯示菜單列表中的5項(xiàng)菜單,如圖3(d)所示,按"上移"鍵,操作相同。
本文通過顯示函數(shù)lcm_show()和反白顯示函數(shù)lcm_showinvert()來實(shí)現(xiàn)如上所述的菜單連續(xù)滾動(dòng)顯示功能及焦點(diǎn)反白顯示功能。具體代碼如下:
在顯示漢字的過程中,顯示內(nèi)容經(jīng)常是漢字和ascii碼混合,由于漢字是由2個(gè)字節(jié)組成,ascii碼是一個(gè)字節(jié),如果顯示內(nèi)容中的ascii號(hào)碼中的個(gè)數(shù)是單數(shù),ascii碼后面漢字的顯示就會(huì)出現(xiàn)亂碼的現(xiàn)象。
針對(duì)這一現(xiàn)象,本文提出了在顯示前對(duì)顯示內(nèi)容進(jìn)行格式化的方法,其基本思想是:把連續(xù)的單數(shù)個(gè)ascii碼字符后面加一個(gè)空格,使顯示內(nèi)容中的連續(xù)ascii碼字符保持雙數(shù),這種方法很好地解決了漢字顯示時(shí)的亂碼現(xiàn)象。程序流程如圖4所示。
4 結(jié)語
本文在對(duì)arm7微控制器lpc2214和帶控制驅(qū)動(dòng)器st7920的液晶顯示模塊的訪問時(shí)序進(jìn)行研究的基礎(chǔ)上,設(shè)計(jì)了他們之間的接口電路,該接口電路無需增加普通i/o,直接使用lpc2214的外部存儲(chǔ)器訪問形式簡單方便地對(duì)液晶顯示模塊進(jìn)行控制,既節(jié)省了普通i/o口,也使得程序的編寫更加方便,同時(shí)也給出了中文菜單滾屏顯示和菜單項(xiàng)反白選擇的程序,并且針對(duì)在顯示過程中出現(xiàn)的亂碼現(xiàn)象進(jìn)行討論,給出解決方案和程序流程。對(duì)于基于arm微控制器的嵌入式系統(tǒng)的具有漢字顯示功能的顯示系統(tǒng)的設(shè)計(jì)提出了一個(gè)行之有效的解決方案。
本文引用地址:http://m.butianyuan.cn/article/21474.htm
評(píng)論