振動信號波形在圖形型液晶模塊上的實(shí)現(xiàn)
1 GDM12864E簡介及其與MPU的接口
1.1 GDM12864E簡介
點(diǎn)陣圖形型液晶顯示模塊GDM12864E內(nèi)嵌ST7920型中文字型點(diǎn)陣LCD控制/驅(qū)動器,通過對控制/驅(qū)動器寫指令,可以顯示數(shù)字、字母、漢字以及自定義圖形??刂疲?qū)動器ST7920的ROM中包括8192個(gè)16×16點(diǎn)的中文字型,以及128個(gè)16×8點(diǎn)半寬的數(shù)字、字母字型;RAM中包括 1個(gè)128×64點(diǎn)的軟件繪圖區(qū)域(GDRAM)和4個(gè)16×16點(diǎn)的軟件造字區(qū)域(CGRAM)。
GDM12864E模塊共有20個(gè)引腳。 1-VSS,系統(tǒng)地;2-VDD,系統(tǒng)電源(+5V);3-VO,顯示對比度調(diào)節(jié);4-RS,數(shù)據(jù)/指令寄存器選擇信號;5-RW,讀/寫模塊數(shù)據(jù)選擇信號;6-E,使能信號端,上升沿(前沿)鎖存選擇信號,下降沿(后沿)讀/寫數(shù)據(jù)或命令:7~14為8位數(shù)據(jù)輸入/輸出總線;15~18為空;19-A,LED背光的電源正極:20-K,LED背光的電源地。
1.2 GDM12864E與80C196KC的接口
單片機(jī)與顯示模塊的接口就是單片機(jī)與顯示模塊的控制/驅(qū)動器ST7920的接口。ST7920與單片機(jī)的連接方式有兩種:直接訪問方式和間接訪問方式。這里采用直接訪問方式,即將LCD顯示模塊的接口作為單片機(jī)的一段片外存儲器,通過對該段存儲單元的存取操作來實(shí)現(xiàn)對液晶顯示模塊的控制。硬件接口如圖1 所示。
在圖1中,單片機(jī)的外部數(shù)據(jù)總線工作在8位方式。AD0~AD7分時(shí)復(fù)用作數(shù)據(jù)總線和地址總線的低8位,作為數(shù)據(jù)線時(shí)直接與液晶顯示模塊的數(shù)據(jù)口連接。單片機(jī)的高位地址線A10接至數(shù)據(jù)/指令寄存器選擇信號端RS,A11接至讀/寫模塊數(shù)據(jù)選擇信號端RW。A10和A11組合成的四種狀態(tài)所對應(yīng)的功能如表 1所示。
E的上升沿(前沿)鎖存所選擇的信號,下降沿(后沿)執(zhí)行讀/寫數(shù)據(jù)或命令。工作時(shí)序如圖2所示。其中,對于控制/驅(qū)動器ST7920,使能信號E的寬度必須大于450ns。當(dāng)晶振頻率選為12MHz時(shí),80C196KC單片機(jī)讀/寫信號WR/RD的寬度是550ns,能夠滿足要求。16MHz晶振不能滿足要求。
1.3 顯示模塊占用地址的分配
這里將LCD顯示模塊作為單片機(jī)的一段外部存儲單元,由接口電路知,LCD占用片外地址范圍1000H~1FFFH。其中,對片外單元 1000H~13FFH只能進(jìn)行寫操作,向LCD模塊發(fā)送指令;對片外單元1400H~17FFH只能進(jìn)行寫操作,向顯示緩沖區(qū)某個(gè)單元寫數(shù)據(jù);對片外單元1800H~1BFFH只能進(jìn)行讀操作,讀取LCD的忙碌標(biāo)志;對片外單元1C00H~1FFFH只能進(jìn)行讀操作,讀取顯示緩沖區(qū)中某個(gè)單元的內(nèi)容。這樣做的好處是程序精簡,從而提高顯示速度。
例如:LDB R1,#08H
STB R1,1000H
完成對關(guān)顯示命令08H的傳送,其中地址1000H更換成段1000H~13FFH中其他單元地址同樣有效。
LDB R1,1800H
將忙碌標(biāo)志讀到R1中。同樣,地址1800H更換成段1800H~1BFFH中其他單元的地址同樣有效。
2 波形顯示的軟件設(shè)計(jì)
在控制/驅(qū)動器ST7920中存在一個(gè)與液晶屏面相對應(yīng)的顯示緩沖區(qū)。利用LCD模塊顯示波形,最關(guān)鍵的就是確定該緩沖區(qū)的存儲單元同液晶屏面上像素的對應(yīng)關(guān)系。有了這個(gè)對應(yīng)關(guān)系后,我們就可以通過將某個(gè)存儲單元中的某一位置為1來實(shí)現(xiàn)在液晶屏上畫出對應(yīng)的一點(diǎn)。該緩沖區(qū)共有64行×16列=1024 個(gè)存儲單元(每個(gè)單元8位),每一單元同液晶屏面上的水平連續(xù)的8個(gè)像素相對應(yīng),顯示緩沖區(qū)中的每個(gè)存儲單元的地址分為水平地址和垂直地址,該地址對應(yīng)到液晶平面上就是連續(xù)8個(gè)像素的水平坐標(biāo)和垂直坐標(biāo)。
在測試儀的軟件設(shè)計(jì)中,每次連續(xù)采集2K個(gè)數(shù)據(jù)存放在RAM中的8000H~87FFH單元內(nèi)。而液晶顯示器每次只能顯示128個(gè)點(diǎn),因此,我們可以通過改變在RAM中的讀數(shù)間隔來控制信號波形的橫向顯示,即每顯示完一個(gè)數(shù)據(jù),RAM地址加 N(N的最大值16)。通過改變N的大小來實(shí)現(xiàn)對信號波形在水平方向上的拉伸或壓縮,以便于觀察。
以顯示水平方向上從左至右第a(a的范圍是1~128)個(gè)點(diǎn)為例。
第一步:從RAM中地址是8000H+(a-1)*N的單元中讀取采樣值k(10位采樣精度)。
第二步:根據(jù)a的值計(jì)算液晶屏上a點(diǎn)在顯示緩沖區(qū)中對應(yīng)的位所在字節(jié)的水平地址x=80H+a/8,其中a/8取商的整數(shù)部分。
第三步:根據(jù)采樣值k計(jì)算a點(diǎn)在顯示緩沖區(qū)中對應(yīng)的位所在字節(jié)的垂直地址y=80H+64*k/1024,其中k/1024取商的整數(shù)部分。
第四步:計(jì)算在上兩步所確定的顯示緩沖字節(jié)中需要存放的內(nèi)容。取a/8的余數(shù)c,將8位二進(jìn)制數(shù)10000000B向右移位c-1(c等于0時(shí)取c為 9)次得到d。為了避免該點(diǎn)所在緩沖字節(jié)中的其他位被改變,需要事先將該緩沖字節(jié)的內(nèi)容讀出來(ST7920有此功能)與d取或后作為最終需要存放的內(nèi)容 e。
第五步:將e存放到二三兩步所確定的緩沖字節(jié)中,點(diǎn)亮a點(diǎn)。
第六步:如果a點(diǎn)與前一點(diǎn)的幅值差距大于1,那么就會造成波形顯示的不連續(xù),影響視覺效果。解決此問題的辦法是:每顯示完一點(diǎn)后,判斷它與前一點(diǎn)的幅值差距f,若f大于1就在兩點(diǎn)間的豎直方向上連續(xù)插入f-1個(gè)點(diǎn)(若硬件允許,插入點(diǎn)的灰度低一些,效果更好)。為達(dá)到幅值差為正和負(fù)時(shí)插入點(diǎn)在水平方向上的對稱,可這樣解決:若當(dāng)前點(diǎn)在前一點(diǎn)的上方就取前一點(diǎn)的水平坐標(biāo)作為插入點(diǎn)的水平坐標(biāo),若當(dāng)前點(diǎn)在前一點(diǎn)的下方,則取當(dāng)前點(diǎn)的水平坐標(biāo)作為插入點(diǎn)的水平坐標(biāo)。
以上就是顯示每個(gè)點(diǎn)所需的步驟,在具體編程時(shí)只需將上面步驟循環(huán)128次即可在液晶屏面上畫出信號波形。由于篇幅有限,這里不再提供具體程序。
3 結(jié)束語
本文設(shè)計(jì)的信號波形顯示方法,在軸承振動信號測試儀的研制中已經(jīng)得到成功驗(yàn)證。該設(shè)計(jì)方法在硬件上有兩大特點(diǎn)。一是將LCD模塊的控制線與單片機(jī)的地址線相連,單片機(jī)輸出地址時(shí)就可完成對LCD模塊的功能選擇,無需單獨(dú)向控制線送數(shù)據(jù)。二是利用讀寫信號產(chǎn)生LCD的使能脈沖。該設(shè)計(jì)方法在軟件上的特點(diǎn)是程序簡單,顯示速度快。這對解決智能型LCD模塊繪圖速度慢的問題很有幫助。這種設(shè)計(jì)方法在繪圖速度上優(yōu)于其他方法,具有很好的實(shí)用價(jià)值。
參考文獻(xiàn)
[1]李維諟,郭強(qiáng),周云仙.液晶顯示應(yīng)用手冊[M].北京:電子工業(yè)出版社,2003.
[2]劉復(fù)華.8XC196KX單片機(jī)及其應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:清華大學(xué)出版社,2002.