陳紅++謝勤嵐
摘 要: 設(shè)計一種多功能波形發(fā)生器,以C8051F040單片機為控制器,控制波形發(fā)生器MAX038和功放實現(xiàn)輸出正弦波、方波、三角波。該多功能波形發(fā)生器使用鍵盤調(diào)整波形頻率,通過液晶顯示屏顯示頻率,使用鍵盤選擇不同的功能模式,實現(xiàn)外測電壓的信號采集、數(shù)據(jù)存儲和波形再現(xiàn);可以實現(xiàn)USB串口傳輸并將接收到的信號進行波形再現(xiàn)。采集和由串口接收到的數(shù)據(jù)可通過I2C總線方式存入數(shù)據(jù)存儲器中,也可以在單片機內(nèi)部存儲器中存入波形數(shù)據(jù),再將其顯示。
關(guān)鍵詞: 波形發(fā)生器; MAX038; C8051F040單片機; I2C
中圖分類號: TN911?34; TP937 文獻標識碼: A 文章編號: 1004?373X(2015)12?0110?05
0 引 言
在現(xiàn)代電子技術(shù)的研究及應(yīng)用領(lǐng)域中,常常需要價格便宜、簡單易用、高精度且頻率可調(diào)的信號源。而信號源的核心是波形發(fā)生器,因此設(shè)計實用的波形發(fā)生器是很有必要的[1]。
波形發(fā)生器可以由晶體管、運算放大器等通用器件構(gòu)成,但更多的則是用專門的函數(shù)信號發(fā)生器集成電路實現(xiàn)。早期的波形發(fā)生器集成芯片,如L8038、BA205、XR2207/2209等,它們的功能較少、精度不高,頻率上限只有300 kHz,無法產(chǎn)生更高頻率的信號,調(diào)節(jié)方式也不夠靈活,頻率和占空比不能獨立調(diào)節(jié),二者互相影響[2]。目前市場上主要的波形發(fā)生芯片有美國Harris公司的ICL8038和美國MAXIM公司的MAX038。ICL8038只能產(chǎn)生300 kHz以下的頻段波形,而且頻率調(diào)節(jié)與占空比調(diào)節(jié)不能獨立進行,無法滿足信號源頻率的高精度要求。相比而言MAX038芯片有著ICL8038芯片無法實現(xiàn)的優(yōu)點。因此本設(shè)計使用高精度波形發(fā)生芯片MAX038,該芯片電路連接簡單,只需很少的外部電路就可以產(chǎn)生頻率在0.1~40 MHz的高精度、高穩(wěn)定度的寬頻帶波形[3]。同時結(jié)合Silicon Labs公司的C8051F040單片機,使其可以滿足多任務(wù)、實時性要求。
1 波形發(fā)生器總體設(shè)計
采用 C8051F040單片機為核心,設(shè)計制作可以調(diào)節(jié)頻率的多功能波形信號發(fā)生器[4]。芯片MAX038產(chǎn)生信號的頻率可以通過調(diào)整電流和外接電容的大小來控制,因此本設(shè)計主要采用控制電流的方法來控制MAX038所產(chǎn)生的頻率。該信號發(fā)生器能同時產(chǎn)生3路輸出可調(diào)的正弦波、方波和三角波,并且占空比可以連續(xù)調(diào)節(jié)。
系統(tǒng)可以檢測外部電路模擬信號,通過一個電壓跟隨器對檢測的信號進行緩沖和隔離后,再經(jīng)過單片機C8051F040內(nèi)集成的A/D將信號轉(zhuǎn)換為數(shù)字信號并存入AT24C02中。當需要輸出時再通過D/A轉(zhuǎn)換,轉(zhuǎn)換成模擬信號,由D/A0端口輸出,經(jīng)MAX038芯片產(chǎn)生波形,并由液晶顯示器1602顯示其頻率。也可以通過USB串口接受從電腦中下載的數(shù)據(jù),并存入AT24C02中,同樣可以再通過D/A轉(zhuǎn)換,轉(zhuǎn)換成模擬信號,由D/A0端口輸出,經(jīng)MAX038產(chǎn)生波形,通過液晶顯示器顯示頻率[5]。系統(tǒng)可以通過4×4鍵盤輸入頻率值,從而達到直接控制MAX038產(chǎn)生波形的目的,并能夠用1602液晶顯示器顯示波形的頻率。系統(tǒng)還可以在單片機中存入波形信號,然后通過功率放大器,直接產(chǎn)生波形。波形發(fā)生器框圖如圖1所示。
2 波形發(fā)生器硬件設(shè)計
2.1 波形發(fā)生模塊
將C8051F040單片機的D/A0端口通過一個電阻直接與芯片MAX038的IN管腳相連,通過控制D/A0端口的電壓值的變化來控制IN管腳的電流產(chǎn)生變化,從而達到控制波形頻率的目的。本信號發(fā)生器通過3路MAX038芯片能同時產(chǎn)生3路輸出可調(diào)的正弦波、方波、三角波波形,輸出的波形穩(wěn)定性好、精度高,占空比可以連續(xù)調(diào)節(jié)。信號輸出部分再采用低損耗電流反饋型寬帶運放MAX477作電壓放大,很好地解決了帶寬和帶負載能力的要求。
MAX038所產(chǎn)生的波形的頻率是由COSC引腳的電容量和IN引腳的電流所決定的。假設(shè)C8051F040單片機的D/A0端口的輸出電壓為VIN,D/A0端口與IN管腳相連的電阻大小為RIN,COSC引腳所接的電容的大小為CF,則MAX038所產(chǎn)生的波形的頻率(單位:MHz)為:
[fo=VINRINCF] (1)
當在FADJ引腳施加一個±2.4 V范圍的電壓時,可使輸出頻率有±70%的變化,此時可以實現(xiàn)對頻率進行精確的調(diào)整[4]。
MAX038所產(chǎn)生的波形的占空比是由DADJ引腳的電壓變化來控制的,當DADJ引腳的電壓在±2.4 V范圍內(nèi)變化時,輸出波形的占空比將在15%~85%之間變化。
MAX038產(chǎn)生的正弦波、方波或三角波,具體的輸出波形由地址A0和A1的輸入數(shù)據(jù)進行設(shè)置,如表2所示(其中X表示無關(guān))。波形發(fā)生器能同時3路輸出3種波形,所以將3路MAX038的輸出波形的選擇地址分別設(shè)置成為表1所示的3種固定狀態(tài)。
2.2 功放模塊
波形發(fā)生器對輸出波形具有一定的功率要求,因此要對MAX038的輸出信號進行功率放大。MAX477是MAXIM公司開發(fā)的一款低噪聲、低微分增益和階段誤差、高轉(zhuǎn)換速率、高精度、高輸出電流的高頻運算放大器,其-3 dB 帶寬可達到300 MHz,最小輸出電流為100 mA。因此選用MAX477對輸出信號進行功率放大。圖3為功放模塊的原理圖,通過調(diào)節(jié)反饋電阻值可以改變輸出電壓的放大倍數(shù),其中電壓最大可放大10 倍左右,整個系統(tǒng)的輸出功率可達到數(shù)瓦。
2.3 USB接口模塊
采用CH372芯片來接收由串口傳來的數(shù)據(jù)。CH372是一個USB總線的通用設(shè)備接口芯片,遵守USB1.1協(xié)議。在本地端,CH372具有8位數(shù)據(jù)總線和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到單片機、DSP等控制器的系統(tǒng)總線上。
2.4 數(shù)據(jù)存儲
數(shù)據(jù)存儲主要用于存儲外測電壓的信號數(shù)據(jù)以及從USB串口接收到的數(shù)據(jù),采用的存儲芯片為AT24C02。AT24C02的特點是支持I2C總線數(shù)據(jù)傳送協(xié)議,相應(yīng)的存儲器電路如圖4所示。采用由主器件控制傳送數(shù)據(jù)的模式,通過器件地址輸入端A0、A1和A2可以實現(xiàn)將最多8個AT24C02器件連接到總線上。
2.5 鍵盤模塊
為了減少I/O口的占用,波形發(fā)生器的鍵盤采用矩陣式鍵盤。圖5為鍵盤原理圖。
2.6 液晶顯示模塊
波形發(fā)生器采用1602液晶顯示屏。1602液晶顯示屏具有外接電路簡單,操作方便等特點,能夠同時顯示16×2,即32個字符。1602液晶顯示器具體電路如圖6所示。
3 軟件設(shè)計
3.1 軟件總設(shè)計與總流程圖
系統(tǒng)采用C8051F040單片機。C8051F040 單片機是完全集成的混合信號片上系統(tǒng)型MCU,具有64 個數(shù)字I/O 引腳,片內(nèi)集成了一個CAN 2.0B 控制器,并集成有ADC和 DAC。其中ADC為真正12 位、100 KSPS的ADC,并帶有PGA 和 8 通道模擬多路開關(guān);DAC有兩組,為12 位DAC,且具有可編程數(shù)據(jù)更新方式[6]。程序采用C語言編寫,操作C8051F040對外圍器件進行控制[7],總流程圖如圖7所示。
3.2 波形發(fā)生程序
產(chǎn)生波形時對MAX038的控制只需控制其IN腳所輸入的電流。該電流應(yīng)由C8051F040提供,而電流是一個模擬量。因此,在這里需要用到C8051F040中的D/A轉(zhuǎn)換器,將數(shù)字量轉(zhuǎn)換成模擬量。
C8051F040中的D/A轉(zhuǎn)換器有兩組,每組D/A轉(zhuǎn)換器的輸出擺幅均為0 V到VREE?1LSB,對應(yīng)的輸入碼范圍是0x000~0xFFF。由于三路MAX038所輸出的信號為同一頻率,所以在此將只用到第一組D/A轉(zhuǎn)換器。
輸入給D/A轉(zhuǎn)換器的數(shù)據(jù)來源有3種:第一種是從鍵盤獲得的需要產(chǎn)生的波形的頻率;第二種是單片機內(nèi)部存儲的波形數(shù)據(jù);第三種是來自于外部信號存儲于AT24C02存儲器中的波形數(shù)據(jù)。本程序均可將其完好的轉(zhuǎn)換成模擬信號。