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