示波器是最常用的電子測量儀器之一,它能把肉眼看不見的電信號(hào)變換成看得見的圖像。為了攜帶方便,我曾經(jīng)做過一臺(tái)簡易數(shù)字示波器(見圖22.2),材料成本只有150元左右,這臺(tái)數(shù)字示波器的設(shè)計(jì)思想是:簡單實(shí)用,價(jià)格低廉,容易制作。 主要性能指標(biāo): 最高采樣率:20MSa/s 模擬帶寬:4MHz 輸入阻抗:1MΩ 垂直靈敏度:0.01V/div~5V/div(按1-2-5方式遞進(jìn),共9擋) 水平掃描速度:1.5μs/div~6ms/div(按1-2-5方式遞進(jìn),共12擋) 垂直分辨率:8位 顯示屏:2.4 英寸 TFT320×240(驅(qū)動(dòng)控制芯片:ILI9325) 測量時(shí)能同時(shí)顯示信號(hào)的頻率、電壓峰峰值,具有信號(hào)保持(HOLD)功能。 圖22.2 自制的簡易數(shù)字示波器 電路工作原理圖22.3 數(shù)字示波器結(jié)構(gòu)框圖 我們知道,模擬示波器是用陰極射線示波管(CRT)顯示被測信號(hào)波形的,而數(shù)字示波器是采用LCM(LCD顯示模塊,含LCD及顯示驅(qū)動(dòng)控制芯片)顯示被測信號(hào)波形。因?yàn)長CM的每一個(gè)顯示像素都對(duì)應(yīng)一個(gè)地址,地址要用數(shù)據(jù)表示,每一個(gè)像素的顏色也是用數(shù)據(jù)表示的。因此電路向LCM發(fā)送的是數(shù)據(jù)編碼信號(hào),這就決定了它和模擬示波器的電路結(jié)構(gòu)不一樣。 本文介紹的數(shù)字示波器的結(jié)構(gòu)框圖如圖22.3所示。它由垂直輸入電路、A/D轉(zhuǎn)換電路、數(shù)字信號(hào)處理與控制電路、液晶屏顯示電路、電源電路等部分組成。 圖22.4 數(shù)字示波器電路原理圖 輸入的電壓信號(hào)經(jīng)垂直輸入電路放大,以提高示波器的靈敏度和動(dòng)態(tài)范圍。對(duì)輸出的信號(hào)取樣后由 A/D 轉(zhuǎn)換器實(shí)現(xiàn)數(shù)字化,模擬信號(hào)變成了數(shù)字形式存入存儲(chǔ)器,微處理器對(duì)存儲(chǔ)器中的數(shù)據(jù)根據(jù)需要進(jìn)行處理,最終在顯示屏上顯示測量波形和相關(guān)的參數(shù),這就是數(shù)字存儲(chǔ)示波器的工作過程。 數(shù)字示波器的電路原理圖如圖22.4所示,下面分別對(duì)各單元電路進(jìn)行介紹。 表22.1 垂直靈敏度和K1~K5的對(duì)應(yīng)關(guān)系 1. 垂直輸入電路 垂直輸入電路由雙運(yùn)算放大器LM6172和衰減電路等部分組成。對(duì)其有兩個(gè)基本的要求:一是對(duì)放大倍數(shù)的控制,二是要有滿足設(shè)計(jì)要求的足夠的帶寬。 示波器輸入信號(hào)電壓的動(dòng)態(tài)范圍很大,為了將輸入信號(hào)電壓調(diào)節(jié)到A/D轉(zhuǎn)換電路的最佳采樣范圍,以便得到最合理的顯示波形,在信號(hào)電壓較小時(shí)要進(jìn)行放大,在信號(hào)過大時(shí)要進(jìn)行衰減。 示波器輸入信號(hào)的頻率范圍也很寬,為了使垂直輸入電路有較平坦的頻率特性曲線,即對(duì)不同頻率的信號(hào)放大電路的增益基本保持一致。為此選用了高速雙運(yùn)放LM6172,其帶寬為100MHz,并在衰減電路中加了頻率補(bǔ)償電容。 電阻R1、R2、R3和繼電器K1、K2、K3等組成衰減電路,衰減系數(shù)分3擋:1:1、1:10、1:100,由K1、K2、K3控制。第一級(jí)運(yùn)算放大器接成電壓跟隨器的模式,主要起到緩沖的作用,提高輸入阻抗,降低輸出阻抗。第二級(jí)運(yùn)算放大器接成電壓串聯(lián)負(fù)反饋電路的模式,其中電阻R6、R7、R8和繼電器K4、K5等組成3擋增益調(diào)節(jié)電路,放大器的增益由K4、K5控制。當(dāng)觸點(diǎn)K4閉合時(shí)增益為(R6+R9)/R6;當(dāng)觸點(diǎn)K4開啟、K5閉合時(shí)增益為(R6+R7+R9)/(R6+R7);當(dāng)觸點(diǎn)K4、K5均開啟時(shí)增益為(R6+R7+R8+R9)/(R6+R7+R8)。按電路圖中各電阻的取值,對(duì)應(yīng)本級(jí)3擋的增益分別為25、12.5、5。 繼電器K1~K5工作狀態(tài)受單片機(jī)控制,所以垂直輸入電路是一個(gè)程控放大器。垂直靈敏度和K1~K5工作狀態(tài)的對(duì)應(yīng)關(guān)系見表22.1(1表示閉合,0表示斷開)。 2. A/D 轉(zhuǎn)換電路 我們知道,A/D轉(zhuǎn)換電路的作用就是將模擬信號(hào)數(shù)字化。一般把實(shí)現(xiàn)連續(xù)信號(hào)到離散信號(hào)的過程叫采樣。連續(xù)信號(hào)經(jīng)過采樣和量化后才能被單片機(jī)處理。通過測量等時(shí)間間隔波形的電壓幅值,并把該電壓值轉(zhuǎn)化為用二進(jìn)制代碼表示的數(shù)字信息,這就是數(shù)字示波器的采樣,采樣的工作過程見圖22.5。采樣的時(shí)間間隔越小,重建出來的波形就越接近原始信號(hào)。采樣率就是每秒采樣的次數(shù),例如,示波器的采樣率是10MSa/s,即每秒采樣10M次,則表示每 0.1μs進(jìn)行一次采樣。采樣率是數(shù)字示波器最重要的一項(xiàng)指標(biāo)。 根據(jù)Nyquist采樣定理,當(dāng)對(duì)一個(gè)最高頻率為f的模擬信號(hào)進(jìn)行采樣時(shí),采樣率必須大于f的兩倍以上才能確保從采樣值完全重構(gòu)原來的信號(hào)。對(duì)于正弦波,每個(gè)周期至少需要兩次以上的采樣才能保證根據(jù)采樣數(shù)據(jù)恢復(fù)原始波形。在數(shù)字示波器中,為了減小顯示波形的失真,采樣率至少要取被測信號(hào)頻率的5~8倍。本文介紹的數(shù)字示波器采樣率取被測信號(hào)頻率的5倍,因?yàn)樽罡卟蓸勇蕿?0MSa/s,所以當(dāng)被測信號(hào)的帶寬在4MHz以內(nèi)時(shí)有比較好的測量結(jié)果。 采樣率的提高受制于A/D轉(zhuǎn)換芯片的工作速度,本文電路中使用的單片機(jī)ATmega16內(nèi)部雖然也有A/D轉(zhuǎn)換器,但其工作頻率太低,不能滿足數(shù)字示波器的采樣要求。因此我們用了一片高速A/D轉(zhuǎn)換芯片ADS830E,其最高采樣率可達(dá)60MSa/s。ADS830E的轉(zhuǎn)換精度為8位二進(jìn)制數(shù),即垂直分辨率為256,因?yàn)檫x用的LCM的分辨率為320×240,對(duì)應(yīng)垂直分辨率為240,所以ADS830E完全能滿足分辨率的使用要求。 ADS830E的IN(17腳)是供采樣的模擬信號(hào)的輸入端,CLK(10腳)是采樣時(shí)鐘信號(hào)輸入端。每輸入一個(gè)時(shí)鐘脈沖就進(jìn)行一次A/D轉(zhuǎn)換,轉(zhuǎn)換后的8位二進(jìn)制數(shù)據(jù)由D0~D7輸出。ADS830E的輸入電壓幅度可以通過11腳進(jìn)行控制,當(dāng)11腳接高電平時(shí),ADS830E的輸入電壓范圍是1.5~3.5V;當(dāng)11腳接低電平時(shí),輸入電壓范圍是2~3V。這里選用1.5~3.5V的輸入電壓范圍,中點(diǎn)電壓為2.5V,中點(diǎn)電壓由電位器RP進(jìn)行調(diào)節(jié)。當(dāng)IN輸入電壓為1.5V時(shí),D0~D7輸出的轉(zhuǎn)換數(shù)據(jù)是0x00,當(dāng)IN輸入電壓為3.5V時(shí),D0~D7輸出的轉(zhuǎn)換數(shù)據(jù)是0xff,即255。 圖22.5 采樣的工作過程 3. 數(shù)字信號(hào)處理與控制電路 數(shù)字信號(hào)處理與控制電路由單片機(jī)ATmega16、FIFO(先進(jìn)先出)存儲(chǔ)器IDT7205、4個(gè)2輸入與非門74HC00等組成。 單片機(jī)ATmega16在電路中的主要作用是:(1)對(duì)A/D轉(zhuǎn)換后的數(shù)字信號(hào)進(jìn)行處理,轉(zhuǎn)換成LCM能接受的數(shù)據(jù)格式,輸出給它顯示;(2)產(chǎn)生ADS830E、IDT7205工作所需要的時(shí)鐘脈沖信號(hào);(3)通過按鍵對(duì)示波器參數(shù)進(jìn)行控制調(diào)節(jié),輸出繼電器的控制信號(hào)。 圖22.6 倍頻電路及各點(diǎn)的脈沖 FIFO存儲(chǔ)器IDT7205是一個(gè)雙端口的存儲(chǔ)緩沖芯片,具有控制端、標(biāo)志端、擴(kuò)展端和8192×9的內(nèi)部RAM陣列,12ns的高速存取時(shí)間。內(nèi)部讀、寫指針在先進(jìn)先出的基礎(chǔ)上可進(jìn)行數(shù)據(jù)的自動(dòng)寫入和讀出。當(dāng)有數(shù)據(jù)輸入到數(shù)據(jù)輸入端口D0~D8時(shí),可由控制端Wclk來控制數(shù)據(jù)的寫入。為了防止數(shù)據(jù)的寫溢出,可用標(biāo)志端滿FF、半滿HF來標(biāo)明數(shù)據(jù)的寫入情況,寫入時(shí)由內(nèi)部寫指針安排其寫入的位置。由于內(nèi)部RAM陣列的特殊設(shè)計(jì),先存入的數(shù)據(jù)將被先讀出。如果需要數(shù)據(jù)外讀,則可由控制端Rclk來控制數(shù)據(jù)的讀出。RST為復(fù)位端。Wclk、Rclk、RST均由單片機(jī)ATmega16提供控制脈沖。數(shù)據(jù)輸出端口Q0~Q8是三態(tài)的,在無讀信號(hào)時(shí)呈高阻態(tài)。輸入數(shù)據(jù)位D0~D8和輸出數(shù)據(jù)位Q0~Q8均為9位,這里輸入和輸出均只使用了8位,即只使用了D0~D7和Q0~Q7。 讀到這里,有的讀者可能會(huì)問:把ADS830E輸出端口D0~D7輸出的數(shù)據(jù)直接輸入ATmega16的PA端口不就行了嗎,為什么還要在中間加上一個(gè)IDT7205?這是因?yàn)锳DS830E工作速度比ATmega16快得多,即ATmega16讀取數(shù)據(jù)的速度比ADS830E輸出數(shù)據(jù)的速度慢,如果直接相連ATmega16就拖了ADS830E的后腿。加上IDT7205后就起到了緩沖的作用,ADS830E轉(zhuǎn)換的結(jié)果先存在IDT7205內(nèi),等到ATmega16需要時(shí),再從IDT7205中讀出來。 ADS830E的采樣時(shí)鐘與IDT7205的寫信號(hào)時(shí)鐘是同一個(gè)時(shí)鐘源,以確保兩者同步。時(shí)鐘脈沖信號(hào)由ATmega16使用內(nèi)部定時(shí)器產(chǎn)生,由于ATmega16外接晶體的頻率為20MHz,所以產(chǎn)生的時(shí)鐘信號(hào)最高頻率只能達(dá)到10MHz,為了使采樣率達(dá)到20MSa/s,使用了74HC00等構(gòu)成的倍頻電路。若ATmega16 PD7端輸出的脈沖信號(hào)頻率為f,則74HC00的F4輸出的脈沖信號(hào)頻率為2f,倍頻電路的工作過程和各點(diǎn)脈沖信號(hào)時(shí)序關(guān)系如圖22.6所示。 K1~K5是干簧繼電器,干簧繼電器特點(diǎn)是吸合和釋放時(shí)噪聲很小,功耗低。因其吸合電流較小,所以可直接用ATmega16的輸出端口驅(qū)動(dòng)。 SB1~SB5是示波器調(diào)節(jié)按鈕。SB1、SB2是水平掃描速度調(diào)節(jié)按鈕,按SB1時(shí)μs/div的值增加(水平掃描速度減小),按SB2時(shí)μs/div的值減小(水平掃描速度增加);SB3、SB4是垂直靈敏度調(diào)節(jié)按鈕,按SB3時(shí)V/div的值增加(垂直靈敏度減小),按SB4時(shí)V/div的值減小(垂直靈敏度增加);SB5是波形保持(HOLD)按鈕,按一下測量波形被凍結(jié)保持,同時(shí)在顯示屏上顯示字符“HOLD”,再按一下又恢復(fù)到正常測試狀態(tài)。所有調(diào)節(jié)參數(shù)均顯示在液晶屏上,調(diào)節(jié)好的參數(shù)將自動(dòng)保存到ATmega16的EEPROM中,下次開機(jī)時(shí)有關(guān)參數(shù)將預(yù)設(shè)在上次關(guān)機(jī)前的設(shè)定值上。 4. 顯示電路 LCM采用2.4英寸TFT彩色液晶屏,分辨率為320像素×240像素,驅(qū)動(dòng)控制芯片為ILI9325,該芯片傳遞數(shù)據(jù)8/16接口位兼容,使用8位接口時(shí)能夠節(jié)省單片機(jī)的輸出端口,在8位接口工作狀態(tài)時(shí)16位數(shù)據(jù)分兩次傳遞,速度稍慢。數(shù)據(jù)端口D0~D15中的高8位D8~D15為8位接口使用的端口。8/16接口位的選擇由端口IM0控制,IM0接高電平時(shí)為8位接口工作狀態(tài),IM0接低電平時(shí)為16位接口工作狀態(tài)。 電路中ILI9325的工作電壓是3V,ATmega16的工作電壓是5V,兩者高電平不一致,通信端口相連時(shí)要進(jìn)行電平轉(zhuǎn)換,因?yàn)檫@里只需要ATmega16向ILI9325單向傳遞數(shù)據(jù),所以只需要將5V向3V電平轉(zhuǎn)換,不需要將3V電平向5V電平轉(zhuǎn)換,就不必使用專用的電平轉(zhuǎn)換芯片,只要用電阻分壓電路將5V高電平轉(zhuǎn)換成3V高電平就行了。電路中R14~R35組成電阻分壓電路,連接端口有8個(gè)數(shù)據(jù)端口和3個(gè)控制端口。 5. 電源電路 這個(gè)數(shù)字示波器使用了交流電源,提供+5V、?5V、+3V三種直流電壓。 程序設(shè)計(jì)設(shè)計(jì)好電路只是為數(shù)字示波器奠定基礎(chǔ),更重要的是單片機(jī)程序的設(shè)計(jì)。實(shí)際上在設(shè)計(jì)硬件時(shí)既要考慮到功能,也要考慮到程序設(shè)計(jì)的需要。比如對(duì)單片機(jī)的選型,主要考慮功能、工作速度、端口的數(shù)量、程序存儲(chǔ)器Flash的容量、RAM的容量、有沒有EEPROM等。綜合考慮后選用AVR單片機(jī)ATmega16,它的程序存儲(chǔ)器Flash為16KB,RAM為1KB,使用時(shí)將16MHz的時(shí)鐘頻率超頻到20MHz,經(jīng)過對(duì)其資源合理分配,完全可以滿足設(shè)計(jì)要求。 程序的開發(fā)環(huán)境為ICC-AVR V6.31A,使用 C語言編寫。程序采用了分時(shí)控制、順序調(diào)度的工作方式,沒有使用任何中斷程序,程序流程圖如圖22.7所示。 圖22.7 程序流程圖 下面對(duì)主要部分進(jìn)行分別介紹。 1. 垂直靈敏度控制 按鈕SB3、SB4用來調(diào)節(jié)垂直靈敏度,按動(dòng)后通過鍵盤掃描程序可以增加或減小程序中變量Key_ver的值,Key_ver取值范圍為1~9,分別對(duì)應(yīng)9擋垂直靈敏度,通過Key_ver的取值控制繼電器K1~K5的工作狀態(tài),從而得到相應(yīng)的靈敏度。 以K1為例,K1接ATmega16的PB0端口,有關(guān)宏定義為: #define K1_ON PORTB &=~(1< #define K1_OFF PORTB |= (1< 因此,K1_ON表示PB0輸出低電平,K1閉合,觸點(diǎn)接通;K1_OFF表示PB0輸出高電平,K1釋放,觸點(diǎn)斷開。 2. 水平掃描速度控制 水平掃描速度控制是通過改變A/D轉(zhuǎn)換電路的采樣率來實(shí)現(xiàn)的,按動(dòng)SB1、SB2可以改變程序中變量Key_hor的值,Key_hor取值范圍為1~12,分別對(duì)應(yīng)12擋水平掃描速度。 A/D轉(zhuǎn)換電路所需的采樣時(shí)鐘脈沖用ATmega16的8位定時(shí)器/計(jì)數(shù)器2-T/C2產(chǎn)生,選擇CTC工作模式。其工作參數(shù)主要由控制寄存器TCCR2、計(jì)數(shù)寄存器TCNT2、輸出比較寄存器OCR2決定。TCCR2中的位CS22、CS21、CS20的取值確定T/C2的時(shí)鐘源的分頻系數(shù),OCR2中的數(shù)據(jù)用于同TCNT2中的計(jì)數(shù)值進(jìn)行連續(xù)的匹配比較,一旦TCNT2計(jì)數(shù)值與OCR2的數(shù)據(jù)相等,單片機(jī)端口OC2的輸出電平即取反,這樣即可輸出脈沖信號(hào)。脈沖信號(hào)的頻率f由時(shí)鐘源的分頻系數(shù)和OCR2的預(yù)置值決定,計(jì)算公式為f=時(shí)鐘源頻率/(2×(1+OCR2)),OC2輸出的脈沖信號(hào)經(jīng)倍頻后作為采樣時(shí)鐘信號(hào),相關(guān)參數(shù)之間的關(guān)系見表22.2。 只要對(duì)寄存器TCCR2、OCR2的值進(jìn)行設(shè)置,就可以獲得我們所需頻率的采樣時(shí)鐘信號(hào)。 3. 數(shù)據(jù)的存儲(chǔ)和讀取 ADS830E的采樣數(shù)據(jù)存入IDT7205后達(dá)到一定數(shù)量就停止采樣,再將IDT7205存儲(chǔ)的數(shù)據(jù)讀入ATmega16,程序中用一個(gè)數(shù)組RAM[650]來存儲(chǔ)讀取的數(shù)據(jù),存儲(chǔ)容量為650,即一次讀取650個(gè)采樣數(shù)據(jù)。 仔細(xì)看了電路圖的讀者可能會(huì)發(fā)現(xiàn),IDT7205的滿FF端口并沒有使用,為什么不用呢?這是因?yàn)锳Tmega16的RAM容量只有1KB,只能分配約650個(gè)存儲(chǔ)單元用來存儲(chǔ)從IDT7205讀取的數(shù)據(jù),IDT7205存多了數(shù)據(jù)也沒有用,ATmega16不能全部存儲(chǔ),多余的數(shù)據(jù)就丟棄了,還不如少讀點(diǎn)數(shù)據(jù)節(jié)省時(shí)間,提高顯示波形的刷新頻率。這在采樣時(shí)鐘頻率較低時(shí)效果尤為明顯,因?yàn)椴蓸訒r(shí)鐘頻率越低,采集一個(gè)數(shù)據(jù)所花的時(shí)間越長。以采樣時(shí)鐘頻率5kHz為例,如果要將IDT7205存滿8192個(gè)數(shù)據(jù),所需要的時(shí)間為8192/5000≈1.6s, 顯示波形1.6s以上才能刷新一次,這顯然是不行的。如果存滿700個(gè)就結(jié)束,則所需要的時(shí)間為700/5000=0.14s,刷新速度提高了很多。 從上面的分析可以看出,F(xiàn)IFO存儲(chǔ)器其實(shí)使用IDT7202就夠了,IDT7202有1024個(gè)存儲(chǔ)單元。不過筆者只買到了DIP封裝的IDT7205,雖然有點(diǎn)大材小用,但為以后數(shù)字示波器升級(jí)提供了空間。FIFO存儲(chǔ)器存儲(chǔ)數(shù)據(jù)的容量稱為數(shù)字示波器的存儲(chǔ)深度,也稱記錄長度,存儲(chǔ)深度也是數(shù)字示波器的一個(gè)重要技術(shù)指標(biāo),適當(dāng)存儲(chǔ)深度便于對(duì)顯示波形進(jìn)行分析和處理。 不使用FF端口是如何控制IDT7205存儲(chǔ)數(shù)量的呢?我在IDT7205存儲(chǔ)數(shù)據(jù)時(shí)根據(jù)不同的采樣時(shí)鐘頻率設(shè)置了不同的延時(shí)時(shí)間,在此時(shí)間內(nèi)能存入多于700個(gè)數(shù)據(jù)即可。延時(shí)結(jié)束后即將IDT7205的存儲(chǔ)數(shù)據(jù)讀入ATmega16。 表22.2 相關(guān)參數(shù)之間的關(guān)系 由于ADS830E每次重新進(jìn)入工作狀態(tài)要有一個(gè)穩(wěn)定的過程,開始采樣的幾個(gè)數(shù)據(jù)精度不高,因此在讀取IDT7205數(shù)據(jù)時(shí)先空讀50個(gè)數(shù)據(jù),將這些數(shù)據(jù)丟棄,然后再將后面的數(shù)據(jù)讀入ATmega16。 圖22.8 顯示區(qū)域 4. 數(shù)據(jù)計(jì)算處理 數(shù)據(jù)計(jì)算處理工作主要包括同步觸發(fā)信號(hào)檢測、信號(hào)電壓峰峰值測量、信號(hào)頻率測量。這部分程序設(shè)計(jì)的思路是: 先在650個(gè)數(shù)據(jù)的前350個(gè)數(shù)據(jù)中以顯示屏的垂直中點(diǎn)對(duì)應(yīng)數(shù)據(jù)120為基準(zhǔn),找到同步觸發(fā)信號(hào)。之所以在前350個(gè)數(shù)據(jù)中找同步觸發(fā)信號(hào),是為保留后面至少有300個(gè)數(shù)據(jù)供顯示波形用。找到同步觸發(fā)信號(hào)后,則把對(duì)應(yīng)該點(diǎn)數(shù)據(jù)為起點(diǎn)的連續(xù)300個(gè)數(shù)據(jù)作為顯示數(shù)據(jù)。 然后找到650個(gè)數(shù)據(jù)中的最大值和最小值,求最大值和最小值的算術(shù)平均數(shù),即可得到中點(diǎn)電壓值,檢測信號(hào)相鄰兩次向上穿過中點(diǎn)的時(shí)間差即可計(jì)算出信號(hào)的周期。 5. LCM的控制與顯示 TFT-LCD顯示屏的分辨率為320像素×240像素。顯示屏的每一個(gè)像素都對(duì)應(yīng)著驅(qū)動(dòng)控制芯片ILI9325內(nèi)部存儲(chǔ)器唯一的一個(gè)地址(x,y),x為橫坐標(biāo),尋址范圍為0~319;y為縱坐標(biāo),尋址范圍為0~239。在像素對(duì)應(yīng)地址寫入16位顏色數(shù)據(jù)就可以顯示相應(yīng)的顏色,如果某一點(diǎn)要清除,只要對(duì)該像素對(duì)應(yīng)的地址寫入背景色就可以了。由于這里ILI9325采用8位接口工作模式,因此傳遞16位數(shù)要分兩次進(jìn)行。 因?yàn)閿?shù)字示波器既要顯示被測信號(hào)的波形,也要顯示有關(guān)的測量數(shù)據(jù),如電壓峰峰值、頻率、水平掃描速度、垂直靈敏度等,所以必須對(duì)顯示區(qū)域進(jìn)行合理的劃分,并對(duì)顏色進(jìn)行規(guī)劃設(shè)置,分配好的顯示區(qū)域如圖22.8所示。圖中用來顯示波形的區(qū)域?yàn)橹虚g的300×200。在這個(gè)區(qū)域畫了刻度線,將水平方向分成10格,垂直方向分成8格。其余區(qū)域用來顯示各種數(shù)據(jù)。 對(duì)ILI9325最基本的操作有兩種:發(fā)送命令和發(fā)送數(shù)據(jù)。無論是顯示屏的初始化,還是設(shè)置顯示地址和顯示顏色,都要用到這兩種基本操作。 顯示被測信號(hào)波形的過程是:先清除上一幀顯示波形,然后畫刻度線(刻度線每次都要重畫,因?yàn)橛行┖惋@示波形交叉的點(diǎn)也被清除了),最后畫新的一幀信號(hào)波形,同時(shí)備份數(shù)據(jù)作下一次清除用。顯示信號(hào)波形時(shí),存儲(chǔ)器地址(x,y)中的x代表水平掃描信號(hào)所處的位置,y代表信號(hào)電壓的大小。每次刷新信號(hào)波形時(shí),信號(hào)電壓峰峰值和信號(hào)頻率顯示數(shù)據(jù)也同時(shí)刷新一次。水平掃描速度和垂直靈敏度的數(shù)據(jù)只有在重新調(diào)整后才刷新。 表22.3 主要元器件清單 元器件選擇主要元器件的清單見表22.3。 經(jīng)過試驗(yàn),我發(fā)現(xiàn)在工作電壓為5V時(shí),單片機(jī)ATmega16和ATmega16L在時(shí)鐘頻率為20MHz下均能正常工作。因此,如果你手頭只有ATmega16L也可以使用。 IDT7205如果使用PLCC封裝的芯片,請(qǐng)注意引腳編號(hào)不同。 干簧繼電器也可以選用其他型號(hào)的,只要工作電壓是5V,閉合電流小于20mA即可。 機(jī)箱我選用的是成品塑料機(jī)箱,你也可以用其他樣式的,或者自己用有機(jī)玻璃DIY。 顯示屏和ADS830E的兩塊轉(zhuǎn)接板是必須要用的,不然無法在萬能板上安裝,可以設(shè)法和元器件一起采購。 圖22.9 緩沖區(qū)對(duì)比圖 圖22.10 開關(guān)單獨(dú)安裝在小的萬能板上 顯示屏的品牌很多,你很難買到和我一樣的品牌。但有一點(diǎn)要注意,驅(qū)動(dòng)控制芯片一定要是ILI9325的,如果不是,你就要修改程序了,不同的芯片即使是同一系列,驅(qū)動(dòng)程序也往往不兼容。即使驅(qū)動(dòng)芯片一樣,不同品牌的顯示屏引腳編號(hào)也可能不一致,接線時(shí)要仔細(xì)對(duì)照。另外有一點(diǎn)提醒一下:我買的顯示屏的4個(gè)背光二極管是并聯(lián)的,我是把它們公共的陽極串接一個(gè)電阻(不知道模塊內(nèi)部有沒有限流電阻,還是外接一個(gè)電阻保險(xiǎn))接到+5V電源,如果你買的顯示屏的背光二極管是串聯(lián)的,要求的工作電壓就高了,接到+5V是不能發(fā)光的,可串連一個(gè)100Ω(電阻的取值使發(fā)光二極管工作電流不超過20mA為宜)接到LM7805的輸入端,此處的電壓約有10V,可以滿足驅(qū)動(dòng)要求。 安裝安裝前先將目標(biāo)文件dso.hex寫入單片機(jī)ATmega16,特別提醒一下:用編程器將目標(biāo)文件調(diào)入時(shí)要選擇“緩沖區(qū)預(yù)先填充00”選項(xiàng),否則在顯示屏顯示字符時(shí)會(huì)出現(xiàn)色塊。如果你用下載線寫入文件,則往往不提供該選項(xiàng)給你選,會(huì)直接把緩沖區(qū)都填入了FF,見圖22.9上半部分,這時(shí)你可以手工編輯一下,把方框中的FF全部改為00,結(jié)果見圖22.9下半部分。 5個(gè)按鈕開關(guān)單獨(dú)安裝在小的萬能板上,見圖22.10。其余的元件除顯示屏直接固定在機(jī)箱面板上外,都安裝在大的萬能板上。接線時(shí)注意同一單元要一點(diǎn)接地,數(shù)字地和模擬地要分開。三端穩(wěn)壓器LM7805要加一個(gè)小的散熱片。 機(jī)箱的面板根據(jù)顯示屏的大小、按鈕開關(guān)和BNC插座的安裝位置開孔,面板上的標(biāo)記可打印在一張紙上,再用1~2mm的透明有機(jī)玻璃做一塊尺寸一樣的面板(對(duì)應(yīng)顯示屏的位置不開窗口,正好做防護(hù)屏),再把打印好的紙夾在兩層中間,用螺絲固定好后,面板就做好了。 按鈕開關(guān)電路板是直接用4個(gè)螺絲固定在面板上的,顯示屏可用熱熔玻璃膠固定,把顯示屏在窗口擺正位置后,在4個(gè)角用熱熔玻璃膠固定一下就可以了。 安裝好的示波器內(nèi)部結(jié)構(gòu)見圖22.11。 圖22.11 安裝完成的內(nèi)部結(jié)構(gòu) 調(diào)試如果安裝時(shí)沒有接線錯(cuò)誤,元器件沒有質(zhì)量問題,調(diào)試還是比較容易的。 調(diào)試分4步進(jìn)行。 (1)各單元先不接電源,測量電源部分輸出電壓是否正常,正常后再接通各部分的電源。 圖22.12 水平掃描線與中線未重合 圖22.13 補(bǔ)償電容與方波波形的關(guān)系 圖22.14 調(diào)試好的示波器的使用效果 (2)檢查顯示屏工作是否正常,接通電源,顯示屏初始化后先是全屏顯示白色閃亮一下,然后顯示刻度線和相關(guān)數(shù)據(jù)。如果開機(jī)后顯示屏沒有反應(yīng),先檢查單片機(jī)有沒有正常工作,如按動(dòng)K3、K4繼電器的工作狀態(tài)應(yīng)該有所改變。如正常再查顯示屏的連線和供電是否正常,直至顯示正常才能進(jìn)入下一步。 (3)將示波器輸入端信號(hào)線短接,調(diào)節(jié)電位器RP,使其中點(diǎn)電壓為2.44V(注意不是1.5~3.5V的中點(diǎn)電壓2.5V,因?yàn)轱@示屏垂直方向中點(diǎn)的值是120,120是2.44V電壓經(jīng)A/D轉(zhuǎn)換后對(duì)應(yīng)的值,對(duì)應(yīng)2.5V電壓的A/D轉(zhuǎn)換值是255/2),這時(shí)候可以看到一條水平掃描線出現(xiàn)在水平中線附近,見圖22.12,仔細(xì)調(diào)節(jié)RP,使得其和水平中線重合。 (4)對(duì)衰減器的頻率補(bǔ)償電容進(jìn)行調(diào)整,將垂直靈敏度調(diào)到0.5V/div,輸入 200kHz、幅度1V的方波,改變電容C2的容量,使示波器顯示的方波波形最好;再將垂直靈敏度調(diào)到1V/div,輸入200kHz、幅度2V的方波,改變電容C3的容量,使示波器顯示的方波波形最好。頻率補(bǔ)償電容與方波波形的關(guān)系見圖22.13。 裝配調(diào)試好的數(shù)字示波器的使用效果見圖22.14。 |
|