點(diǎn)陣液晶顯示器在便攜式頻率特性測(cè)試儀中的應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
頻率特性測(cè)試儀又稱為掃頻儀,或頻率響應(yīng)分析儀,它利用矩形具有內(nèi)刻度的示波管作為顯示器,來直接顯示被測(cè)電路的幅頻特性曲線。但由于示波管的使用,使得整個(gè)儀器在外形上顯得龐大,笨重,如BT-3GII型的掃頻儀重量達(dá)到10kg,不方便移動(dòng)式測(cè)量。為此,本設(shè)計(jì)針對(duì)其顯示部分,將示波管用LCD代替。適用于便攜式儀器儀表中。
硬件設(shè)計(jì)
本設(shè)計(jì)所選的液晶顯示器是深圳天馬微電子公司的TM320240 EFG,它是一款內(nèi)藏SED1335控制器的點(diǎn)陣式圖形液晶顯示模塊。LCD控制器選用的是EPSON公司的SED1335,內(nèi)部擁有一個(gè)160種5×7 點(diǎn)陣字符的字符發(fā)生器,能分區(qū)管理64K的顯示存儲(chǔ)器,并同時(shí)能管理自定義字符發(fā)生器。模塊TM320240EFG的對(duì)外接口實(shí)質(zhì)上就是控制器 SED1335與MCU的接口。在單片機(jī)的選型上,考慮到系統(tǒng)功能與電路的簡(jiǎn)潔,采用Atmel 公司推出的AVR單片機(jī)AT90S8535,內(nèi)嵌8路10位ADC,可直接輸入模擬電壓信號(hào)。
AT90S8535與TM320240EFG接口采用間接訪問方式進(jìn)行連接。單片機(jī)通過控制SED1335完成對(duì)圖形液晶模塊的控制。所謂間接訪問方式,就是把TM320240EFG作為終端接在AT90S8535的某個(gè)并行I/O接口上,AT90S8535通過對(duì)該I/O接口的操作,間接地實(shí)現(xiàn)對(duì) TM320240EFG的控制。間接訪問方式的接口電路與時(shí)序無關(guān)。
在電路中,AT90S8535使用8位并行PC口作為數(shù)據(jù)線與模塊的數(shù)據(jù)線DB0~DB7連接,另外還需要一個(gè)3位并行接口作為時(shí)序控制信號(hào)線/RD, /WR和A0。把PB口中的PB0作為寫信號(hào)接至TM320240 EFG的寫控制信號(hào)/WR上;PD口中的PD3作為讀信號(hào)接至TM320240EFG的讀控制信號(hào)/RD上;PD4作為數(shù)據(jù)類型選擇信號(hào)與模塊的A0連接。由于這些并行接口在MCU系統(tǒng)中有自己的專用地址,所以TM320240EFG的片選信號(hào) /CS可以不使用,直接接地選通。液晶驅(qū)動(dòng)電源VEE取值為-20V,利用單片DC-DC轉(zhuǎn)換器MC34063從邏輯電源轉(zhuǎn)換生成負(fù)電源。電路中LCD電源控制端V0用來調(diào)節(jié)顯示屏灰度,電位器R3作為調(diào)節(jié)液晶顯示對(duì)比度使用。[!--empirenews.page--]
ADC的0通道輸入經(jīng)過檢波后的采樣信號(hào),帶寬為10KHz ,經(jīng)RC濾波去除交流分量。5.1V穩(wěn)壓管起保護(hù)作用,高于5.1V的輸入信號(hào)被限幅在5.1V之內(nèi)。該輸入波形的X軸方向掃描頻率為50Hz,周期為 20ms,12ms工作期,8ms消隱期。外部中斷管腳INT0輸入50Hz的方波,作為同步脈沖。MCU的晶振選為6M。
屏幕規(guī)劃
該液晶屏為320×240點(diǎn)陣,將坐標(biāo)原點(diǎn)(0,0)定在整個(gè)液晶屏的左上角,向右為X坐標(biāo),向下為Y坐標(biāo)。為美觀起見,四周邊框留出空白區(qū)域,實(shí)際顯示曲線的區(qū)域?yàn)閄方向從第24點(diǎn)到264點(diǎn),共240個(gè)點(diǎn)距,30字節(jié);Y方向從第16點(diǎn)到208點(diǎn),共192個(gè)點(diǎn)距, 24字節(jié)。為方便觀測(cè),在顯示區(qū)內(nèi)繪制坐標(biāo)軸,用虛線等間距地將橫向分作10小格,豎向分作8小格。
在進(jìn)行圖形顯示時(shí),起初我們采用的是單層顯示方法,但由于要求實(shí)時(shí)顯示,必須考慮屏幕的刷新問題。由于此液晶屏屬多點(diǎn)陣,刷新滿屏需花費(fèi)很長(zhǎng)一段時(shí)間,刷新完后還要在屏幕上重新繪制出坐標(biāo)軸,增加了MCU的操作負(fù)擔(dān),而且頻繁的滿屏刷新還會(huì)引起屏幕的閃爍現(xiàn)象發(fā)生。因此采取的解決方法為:顯示時(shí)分作兩層顯示,第一層為文本屬性,第二層為圖形屬性。將不需刷新的坐標(biāo)軸、漢字顯示在文本層,首地址$0000。將實(shí)時(shí)動(dòng)態(tài)更新的幅頻特性曲線顯示在圖形層,首地址 $1000,并通過兩層的邏輯“或”操作進(jìn)行合成顯示,以達(dá)到圖文并茂的顯示效果。這樣,在刷新時(shí),文本層上的坐標(biāo)軸和漢字可以保持不變,所需刷新的僅為圖形層上的曲線。實(shí)際測(cè)試結(jié)果表明,分層顯示的設(shè)計(jì)思路是正確的。
軟件設(shè)計(jì)
繪制曲線在軟件設(shè)計(jì)上關(guān)鍵是畫點(diǎn)和消點(diǎn)的程序。
ADC采用單次轉(zhuǎn)換模式,總的轉(zhuǎn)換周期數(shù)為14,總的轉(zhuǎn)換時(shí)間70~280ms,預(yù)分頻器的分頻因子選為32,故ADC時(shí)鐘頻率為6M/32= 187.5KHz。所以每一次的轉(zhuǎn)換時(shí)間是14/187.5K=74.666ms,此ADC轉(zhuǎn)換時(shí)間是在6M的晶體振蕩頻率下最快的采樣時(shí)間。若選小于 32的分頻因子,則總的轉(zhuǎn)換時(shí)間太快,將小于70ms,不能實(shí)現(xiàn)。考慮到實(shí)際需要,ADC轉(zhuǎn)換時(shí)間越快越適宜,故不采用64以上分頻。
用ox來記錄X方向字節(jié)數(shù),初始值為$00,隨點(diǎn)的右移從1到30遞增。當(dāng)ox=30時(shí),說明X方向已到達(dá)有效顯示區(qū)的尾部。code記錄點(diǎn)在字節(jié)中所處位置,畫奇數(shù)點(diǎn)時(shí)code從$80開始右移,畫偶數(shù)點(diǎn)時(shí)code從$40開始右移,每次移動(dòng)2位,移完一字節(jié)后,ox加1。
ADC能轉(zhuǎn)換的最大量程電壓是電路基準(zhǔn)電壓Vre
f的值,這里調(diào)節(jié)的是4V。1V占48個(gè)點(diǎn)距。某一時(shí)刻,輸入信號(hào)Z V(Z≤4),則其在屏幕上Y向的位置是208-Z×48。MCU內(nèi)嵌的ADC為10位精度,采樣結(jié)果轉(zhuǎn)化成點(diǎn)的高度的計(jì)算表達(dá)式為:
208-(AD值)×(4/1024)×48=208-(AD值)×3/16 (1)
考慮到輸入信號(hào)的掃描時(shí)間和MCU的AD轉(zhuǎn)換時(shí)間,整個(gè)屏幕在X方向要顯示240點(diǎn),只能采取隔列掃描的方法,分兩幀畫完全屏,第一幀畫奇數(shù)點(diǎn),第二幀畫偶數(shù)點(diǎn)。先在工作期12ms內(nèi)采樣數(shù)據(jù),進(jìn)行120次AD轉(zhuǎn)換,將其轉(zhuǎn)換結(jié)果按順序存入片內(nèi)SRAM中,所以需要100ms啟動(dòng)ADC一次。同時(shí),把信號(hào)的消隱期8ms加以利用,在整個(gè)20ms周期內(nèi)畫120個(gè)奇數(shù)點(diǎn),20ms/120=166.666ms,我們?cè)O(shè)定每隔161.333ms畫一個(gè)點(diǎn)。畫點(diǎn)的具體方法為:從SRAM中取出AD值,將每組的AD采樣結(jié)果用式(1)進(jìn)行計(jì)算,轉(zhuǎn)化成Y方向坐標(biāo),得到點(diǎn)的高度值,送入寄存器oy中。由于屏幕上一橫行是320個(gè)點(diǎn),即40字節(jié),顯示區(qū)距離左邊框?yàn)?字節(jié),可計(jì)算出該點(diǎn)的地址,結(jié)果存于寄存器r7: r6中,表達(dá)式為:
r7: r6 = oy*40+3+$1000+ox (2)
接著再確定該點(diǎn)在此字節(jié)中的位數(shù),調(diào)用繪點(diǎn)程序即可。畫完一屏的奇數(shù)點(diǎn)后,等待下一個(gè)同步脈沖到來,然后,在同樣的掃描時(shí)間內(nèi),用同樣的方法繪制出120 個(gè)偶數(shù)點(diǎn)。這樣,全屏顯示的時(shí)間僅為40ms,人的肉眼觀測(cè)到的是一條連續(xù)的曲線,不會(huì)出現(xiàn)隔列的效果。另外,考慮到屏幕的刷新問題,每次畫點(diǎn)前,都要在此列先消點(diǎn)。消點(diǎn)和畫點(diǎn)的方法類似,程序中用ox1和code1與畫點(diǎn)加以區(qū)別,這里不再累述。
程序中用寄存器r25作標(biāo)志狀態(tài)寄存器,各標(biāo)志位說明如下:
r25(3):兩幀畫完全屏。 r25(3)=0,第一幀畫奇數(shù)點(diǎn);r25(3)=1,第二幀畫偶數(shù)點(diǎn);
r25(4) :在T/C1中斷里置位 r25(4)=1,表明顯示時(shí)間已到,可以進(jìn)行畫點(diǎn)顯示;
r25(5) :在ADC轉(zhuǎn)換結(jié)束中斷里置位 r25(5) =1,表明ADC轉(zhuǎn)換結(jié)束,已采樣到數(shù)據(jù)并存入SRAM中。[!--empirenews.page--]
整個(gè)程序應(yīng)用4個(gè)中斷。20ms同步脈沖上升沿觸發(fā)外部中斷EXT_INT0,在中斷服務(wù)程序中,清r25(4,5)=0,并使能兩定時(shí)器T/C0和 T/C1。采用T/C0定時(shí)中斷,每100us中斷一次,在中斷服務(wù)程序中,啟動(dòng)AD轉(zhuǎn)換。同時(shí)采用T/C1輸出比較匹配A中斷,每161.333 us中斷一次,置位畫點(diǎn)時(shí)間到達(dá)的標(biāo)志。ADC轉(zhuǎn)換結(jié)束中斷,在中斷服務(wù)程序中讀取采樣值A(chǔ)D,置位r25(5)。 復(fù)位時(shí)間問題
在整個(gè)設(shè)計(jì)過程中,程序調(diào)試用的是AVR單片機(jī)的在線仿真器ICE 200。但將調(diào)試好的程序經(jīng)編譯后燒到片子里,液晶屏卻不能正常顯示了。查找原因,主要是單片機(jī)和液晶屏的復(fù)位時(shí)間相差太大引起的。對(duì)于 AT90S8535來說,超過50ns的低電平就會(huì)引起系統(tǒng)復(fù)位;而LCD的控制器SED1335,復(fù)位需要1ms以上的復(fù)位電平。所以需在程序的初始化部分,加一定的延時(shí),以使LCD正常工作?;剡^頭來再思考一下在線仿真能通過的原因。仿真器上電和液晶屏上電同步,在調(diào)試環(huán)境里,下載程序所花時(shí)間較長(zhǎng),能夠滿足LCD的復(fù)位時(shí)間要求,故在程序運(yùn)行以后,可使LCD正常顯示。
目前,兼顧功能和價(jià)格兩方
面,大量中、高檔儀器儀表已經(jīng)廣泛使用LCD 作為其顯示輸出設(shè)備。本文將點(diǎn)陣式圖形液晶顯示模塊和AVR單片機(jī)AT90S8535相結(jié)合,使頻率特性測(cè)試儀的顯示輸出由原來的示波管改為液晶屏,符合現(xiàn)階段傳統(tǒng)儀器向智能儀器轉(zhuǎn)型的發(fā)展趨勢(shì),很有市場(chǎng)競(jìng)爭(zhēng)力。