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