陳紅++謝勤嵐



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