多功能波形發(fā)生設(shè)計(jì)方案_第1頁(yè)
多功能波形發(fā)生設(shè)計(jì)方案_第2頁(yè)
多功能波形發(fā)生設(shè)計(jì)方案_第3頁(yè)
多功能波形發(fā)生設(shè)計(jì)方案_第4頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、多功能波形發(fā)生器設(shè)計(jì)- 電氣論文多功能波形發(fā)生器設(shè)計(jì)陳紅,謝勤嵐(中南民族大學(xué)實(shí)驗(yàn)中心,湖北武漢430074 )摘要:設(shè)計(jì)一種多功能波形發(fā)生器,以C8051F040單片機(jī)為控制器,控制波形發(fā)生器MAX038和功放實(shí)現(xiàn)輸出正弦波、方波、三角波。該多功能波形發(fā)生器使用鍵盤(pán)調(diào)整波形頻率,通過(guò)液晶顯示屏顯示頻率, 使用鍵盤(pán)選擇不同的功能模式,實(shí)現(xiàn)外測(cè)電壓的信號(hào)采集、數(shù)據(jù)存儲(chǔ)和波形再現(xiàn);可以實(shí)現(xiàn)USB串口傳輸并將接收到的信號(hào)進(jìn)行波形再現(xiàn)。采集和由串口接收到的數(shù)據(jù)可通過(guò)I2C 總線方式存入數(shù)據(jù)存儲(chǔ)器中,也可以在單片機(jī)內(nèi)部存儲(chǔ)器中存入波形數(shù)據(jù),再將其顯示。關(guān)鍵詞:波形發(fā)生器; MAX038 ; C8051F

2、040 單片機(jī); I2C中圖分類(lèi)號(hào):TN911-34 ;TP937文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1004-373X( 2015 )12-0110-05收稿日期: 2014-12-15基金項(xiàng)目:國(guó)家自然科學(xué)基金( 61178087 )0 引言在現(xiàn)代電子技術(shù)的研究及應(yīng)用領(lǐng)域中,常常需要價(jià)格便宜、簡(jiǎn)單易用、高精度且頻率可調(diào)的信號(hào)源。 而信號(hào)源的核心是波形發(fā)生器,因此設(shè)計(jì)實(shí)用的波形發(fā)生器是很有必要的 1 。波形發(fā)生器可以由晶體管、運(yùn)算放大器等通用器件構(gòu)成,但更多的則是用專(zhuān)門(mén)的函數(shù)信號(hào)發(fā)生器集成電路實(shí)現(xiàn)。早期的波形發(fā)生器集成芯片, 如 L8038 、BA205 、XR2207/2209等,它們的功能較少、精

3、度不高,頻率上限只有 300 kHz ,無(wú)法產(chǎn)生更高頻率的信號(hào),調(diào)節(jié)方式也不夠靈活,頻率和占空比不能獨(dú)立調(diào)節(jié),二者互相影響2 。目前市場(chǎng)上主要的波形發(fā)生芯片有美國(guó)Harris公司的ICL8038 和美國(guó) MAXIM公司的 MAX038 。ICL8038 只能產(chǎn)生 300 kHz 以下的頻段波形,而且頻率調(diào)節(jié)與占空比調(diào)節(jié)不能獨(dú)立進(jìn)行,無(wú)法滿足信號(hào)源頻率的高精度要求。相比而言MAX038芯片有著 ICL8038芯片無(wú)法實(shí)現(xiàn)的優(yōu)點(diǎn)。因此本設(shè)計(jì)使用高精度波形發(fā)生芯片MAX038 ,該芯片電路連接簡(jiǎn)單,只需很少的外部電路就可以產(chǎn)生頻率在0.140 MHz的高精度、高穩(wěn)定度的寬頻帶波形 3 。同時(shí)結(jié)合 S

4、ilicon Labs公司的 C8051F040 單片機(jī),使其可以滿足多任務(wù)、實(shí)時(shí)性要求。1 波形發(fā)生器總體設(shè)計(jì)采用 C8051F040單片機(jī)為核心,設(shè)計(jì)制作可以調(diào)節(jié)頻率的多功能波形信號(hào)發(fā)生器 4 。芯片 MAX038產(chǎn)生信號(hào)的頻率可以通過(guò)調(diào)整電流和外接電容的大小來(lái)控制,因此本設(shè)計(jì)主要采用控制電流的方法來(lái)控制MAX038所產(chǎn)生的頻率。該信號(hào)發(fā)生器能同時(shí)產(chǎn)生3 路輸出可調(diào)的正弦波、 方波和三角波, 并且占空比可以連續(xù)調(diào)節(jié)。系統(tǒng)可以檢測(cè)外部電路模擬信號(hào),通過(guò)一個(gè)電壓跟隨器對(duì)檢測(cè)的信號(hào)進(jìn)行緩沖和隔離后,再經(jīng)過(guò)單片機(jī)C8051F040內(nèi)集成的 A/D將信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)并存入 AT24C02 中。當(dāng)需

5、要輸出時(shí)再通過(guò)D/A 轉(zhuǎn)換,轉(zhuǎn)換成模擬信號(hào), 由D/A0端口輸出,經(jīng) MAX038芯片產(chǎn)生波形, 并由液晶顯示器1602顯示其頻率。也可以通過(guò)USB 串口接受從電腦中下載的數(shù)據(jù),并存入AT24C02 中,同樣可以再通過(guò)D/A轉(zhuǎn)換,轉(zhuǎn)換成模擬信號(hào),由D/A0端口輸出,經(jīng)MAX038產(chǎn)生波形,通過(guò)液晶顯示器顯示頻率5 。系統(tǒng)可以通過(guò)4 4鍵盤(pán)輸入頻率值,從而達(dá)到直接控制MAX038產(chǎn)生波形的目的,并能夠用1602 液晶顯示器顯示波形的頻率。 系統(tǒng)還可以在單片機(jī)中存入波形信號(hào),然后通過(guò)功率放大器, 直接產(chǎn)生波形。波形發(fā)生器框圖如圖1 所示。2 波形發(fā)生器硬件設(shè)計(jì)2.1 波形發(fā)生模塊將 C8051F0

6、40 單片機(jī)的 D/A0 端口通過(guò)一個(gè)電阻直接與芯片 MAX038的 IN 管腳相連,通過(guò)控制 D/A0 端口的電壓值的變化來(lái)控制 IN 管腳的電流產(chǎn)生變化,從而達(dá)到控制波形頻率的目的。 本信號(hào)發(fā)生器通過(guò) 3 路 MAX038 芯片能同時(shí)產(chǎn)生 3 路輸出可調(diào)的正弦波、方波、三角波波形,輸出的波形穩(wěn)定性好、精度高,占空比可以連續(xù)調(diào)節(jié)。 信號(hào)輸出部分再采用低損耗電流反饋型寬帶運(yùn)放MAX477作電壓放大,很好地解決了帶寬和帶負(fù)載能力的要求。MAX038所產(chǎn)生的波形的頻率是由COSC 引腳的電容量和IN 引腳的電流所決定的。假設(shè)C8051F040單片機(jī)的 D/A0端口的輸出電壓為VIN ,D/A0端口

7、與 IN 管腳相連的電阻大小為RIN , COSC 引腳所接的電容的大小為CF,則 MAX038所產(chǎn)生的波形的頻率(單位:MHz )為:當(dāng)在 FADJ 引腳施加一個(gè)2.范4V圍的電壓時(shí),可使輸出頻率有70%的變化,此時(shí)可以實(shí)現(xiàn)對(duì)頻率進(jìn)行精確的調(diào)整4 。MAX038所產(chǎn)生的波形的占空比是由DADJ 引腳的電壓變化來(lái)控制的,當(dāng) DADJ 引腳的電壓在V2.4范圍內(nèi)變化時(shí),輸出波形的占空比將在15% 85% 之間變化。MAX038產(chǎn)生的正弦波、方波或三角波,具體的輸出波形由地址A0和 A1 的輸入數(shù)據(jù)進(jìn)行設(shè)置,如表 2 所示(其中 X 表示無(wú)關(guān))。波形發(fā)生器能同時(shí) 3 路輸出 3 種波形,所以將 3

8、 路 MAX038 的輸出波形的選擇地址分別設(shè)置成為表 1 所示的 3 種固定狀態(tài)。圖 2 為 MAX038的基本電路連接(此圖中A0 和 A1選擇為輸出矩形波)。2.2 功放模塊波形發(fā)生器對(duì)輸出波形具有一定的功率要求,因此要對(duì)MAX038的輸出信號(hào)進(jìn)行功率放大。 MAX477是 MAXIM公司開(kāi)發(fā)的一款低噪聲、 低微分增益和階段誤差、高轉(zhuǎn)換速率、高精度、高輸出電流的高頻運(yùn)算放大器, 其-3 dB帶寬可達(dá)到 300 MHz ,最小輸出電流為100 mA 。因此選用 MAX477對(duì)輸出信號(hào)進(jìn)行功率放大。 圖 3 為功放模塊的原理圖, 通過(guò)調(diào)節(jié)反饋電阻值可以改變輸出電壓的放大倍數(shù), 其中電壓最大可

9、放大10 倍左右,整個(gè)系統(tǒng)的輸出功率可達(dá)到數(shù)瓦。2.3 USB 接口模塊采用 CH372芯片來(lái)接收由串口傳來(lái)的數(shù)據(jù)。 CH372是一個(gè) USB 總線的通用設(shè)備接口芯片,遵守USB1.1 協(xié)議。在本地端, CH372具有 8 位數(shù)據(jù)總線和讀、寫(xiě)、片選控制線以及中斷輸出,可以方便地掛接到單片機(jī)、DSP 等控制器的系統(tǒng)總線上。2.4 數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)主要用于存儲(chǔ)外測(cè)電壓的信號(hào)數(shù)據(jù)以及從USB 串口接收到的數(shù)據(jù),采用的存儲(chǔ)芯片為AT24C02 。AT24C02 的特點(diǎn)是支持 I2C 總線數(shù)據(jù)傳送協(xié)議,相應(yīng)的存儲(chǔ)器電路如圖4 所示。采用由主器件控制傳送數(shù)據(jù)的模式,通過(guò)器件地址輸入端A0 、A1 和 A2

10、 可以實(shí)現(xiàn)將最多8 個(gè) AT24C02 器件連接到總線上。2.5 鍵盤(pán)模塊為了減少 I/O 口的占用,波形發(fā)生器的鍵盤(pán)采用矩陣式鍵盤(pán)。圖5 為鍵盤(pán)原理圖。2.6 液晶顯示模塊波形發(fā)生器采用1602 液晶顯示屏。 1602液晶顯示屏具有外接電路簡(jiǎn)單,操作方便等特點(diǎn),能夠同時(shí)顯示16 2 ,即32 個(gè)字符。 1602液晶顯示器具體電路如圖 6 所示。3 軟件設(shè)計(jì)3.1 軟件總設(shè)計(jì)與總流程圖系統(tǒng)采用 C8051F040單片機(jī)。 C8051F040單片機(jī)是完全集成的混合信號(hào)片上系統(tǒng)型MCU ,具有 64 個(gè)數(shù)字 I/O引腳,片內(nèi)集成了一個(gè)CAN 2.0B控制器,并集成有 ADC 和 DAC 。其中 A

11、DC 為真正 12 位、100 KSPS 的 ADC ,并帶有 PGA 和 8 通道模擬多路開(kāi)關(guān); DAC 有兩組,為 12 位 DAC ,且具有可編程數(shù)據(jù)更新方式 6 。程序采用 C 語(yǔ)言編寫(xiě),操作 C8051F040對(duì)外圍器件進(jìn)行控制 7 ,總流程圖如圖7 所示。3.2 波形發(fā)生程序產(chǎn)生波形時(shí)對(duì) MAX038的控制只需控制其IN 腳所輸入的電流。 該電流應(yīng)由 C8051F040提供,而電流是一個(gè)模擬量。因此,在這里需要用到C8051F040中的 D/A 轉(zhuǎn)換器,將數(shù)字量轉(zhuǎn)換成模擬量。C8051F040中的 D/A轉(zhuǎn)換器有兩組,每組D/A轉(zhuǎn)換器的輸出擺幅均為 0 V 到 VREE-1LSB,

12、對(duì)應(yīng)的輸入碼范圍是 0x0000xFFF 。由于三路 MAX038所輸出的信號(hào)為同一頻率,所以在此將只用到第一組D/A 轉(zhuǎn)換器。輸入給 D/A 轉(zhuǎn)換器的數(shù)據(jù)來(lái)源有3 種:第一種是從鍵盤(pán)獲得的需要產(chǎn)生的波形的頻率; 第二種是單片機(jī)內(nèi)部存儲(chǔ)的波形數(shù)據(jù);第三種是來(lái)自于外部信號(hào)存儲(chǔ)于 AT24C02 存儲(chǔ)器中的波形數(shù)據(jù)。本程序均可將其完好的轉(zhuǎn)換成模擬信號(hào)。3.3 外測(cè)電壓采集程序外測(cè)電壓為模擬量,要將其進(jìn)行存儲(chǔ)與處理,應(yīng)當(dāng)對(duì)其進(jìn)行數(shù)字化,在此就需要用到 A/D轉(zhuǎn)化器。 C8051F040中的 12 位 A/D轉(zhuǎn)換器中需要轉(zhuǎn)換的12 b 數(shù)據(jù)存儲(chǔ)于 2 B 存儲(chǔ)器中, 2 B 存儲(chǔ)器分別為高字節(jié)存儲(chǔ)器A

13、DC0H 和低字節(jié)存儲(chǔ)器 ADC0L 。3.4 USB 串口程序串口程序是由寫(xiě)入命令與讀出數(shù)據(jù)來(lái)組成的。在此將根據(jù)CH372芯片的寫(xiě)入、讀出時(shí)序圖來(lái)編寫(xiě)具體程序。命令寫(xiě)入程序的步驟如下:(1 )將 A0 置 1,使芯片可以寫(xiě)命令;(2 )將命令值寫(xiě)到P3 端口,用空函數(shù)延時(shí)一次;(3 )將 WR 拉到低電平 0 ,用空函數(shù)延時(shí)一次;(4 )將 WR 拉到高電平 1 ,用空函數(shù)延時(shí)一次。以下為命令寫(xiě)入程序的代碼:void wr_cmd_ch372( uchar cmd )a0=1 ; / 將 A0 置 1P3=cmd ; / 將命令值寫(xiě)到P3 端口nop (); / 空函數(shù)wr_ch372=0;

14、 / 將 WR 拉到低電平 0nop ();wr_ch372=1; / 將 WR 拉到高電平 1nop ();數(shù)據(jù)讀出程序的步驟如下:(1 )將 A0 置 0,使芯片可以讀取數(shù)據(jù),用空函數(shù)延時(shí)一次;(2 )將 RD 拉為低電平 0,用空函數(shù)延時(shí)一次;(3 )讀出 P3 端口的數(shù)據(jù),用空函數(shù)延時(shí)一次;(4 )將 RD 拉為高電平 0,用空函數(shù)延時(shí)一次;(5 )把接收到的數(shù)據(jù)返回給主程序。以下為數(shù)據(jù)寫(xiě)入程序的代碼:int rd_dat_ch372()int dat ;a0=0 ; / 將 A0 置 0nop ();rd_ch372=0 ; / 將 RD 拉為低電平 0nop ();dat=P3 ;

15、 / 讀出 P3 端口的數(shù)據(jù)nop ();rd_ch372=1 ; / 將 RD 拉為高電平 0nop ();return dat; / 把接收到的數(shù)據(jù)返回給主程序當(dāng)選擇 USB 串口傳輸模式后,應(yīng)先將中斷打開(kāi),以獲取CH372 的中斷請(qǐng)求。進(jìn)入中斷時(shí)應(yīng)向CH372 寫(xiě)入 GET_STATUS 命令,命令代碼為0x22 ,作用是獲取 CH372 的中斷狀態(tài)并通知CH372 取消中斷請(qǐng)求,否則單片機(jī)會(huì)不停的響應(yīng) CH372的中斷命令。然后再向CH372中寫(xiě)入 RD_USB_DATA 命令,命令代碼是 0x28 ,作用是從當(dāng)前 USB 中斷的端點(diǎn)緩沖區(qū)中讀取數(shù)據(jù)塊并釋放當(dāng)前緩沖區(qū)。3.5 存儲(chǔ)程序

16、從外測(cè)電壓采集到的數(shù)據(jù)以及從USB 串口接收的數(shù)據(jù)都必須存儲(chǔ)到數(shù)據(jù)存儲(chǔ)器當(dāng)中。 本多功能波形發(fā)生器的數(shù)據(jù)存儲(chǔ)器采用AT24C02芯片,存儲(chǔ)方法采用 I2C 總線方式存儲(chǔ)。 I2C 總線在傳送數(shù)據(jù)過(guò)程中共有3 種類(lèi)型信號(hào)是: 開(kāi)始信號(hào)、結(jié)束信號(hào)和應(yīng)答信號(hào)。開(kāi)始信號(hào): SCL 為高電平時(shí), SDA 由高電平向低電平跳變,開(kāi)始傳送數(shù)據(jù)。存儲(chǔ)程序開(kāi)始代碼如下:void star ( t )sda=1 ;nop ();scl=1 ;nop ();sda=0 ;nop ();結(jié)束信號(hào): SCL 為高電平時(shí), SDA 由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。存儲(chǔ)程序結(jié)束偽代碼如下:void stop()sda=

17、0 ;nop ();scl=1 ;nop ();sda=1 ;nop ();應(yīng)答信號(hào):接收數(shù)據(jù)的器件在接收到8 b數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的器件發(fā)出低電平脈沖,表示已收到數(shù)據(jù)。 若未收到低電平脈沖, 為保證程序的正常運(yùn)行,將在一段時(shí)間后認(rèn)定器件已經(jīng)收到數(shù)據(jù)。CPU 向受控單元發(fā)出一個(gè)信號(hào)后,等待受控單元發(fā)出一個(gè)應(yīng)答信號(hào),CPU 接收到應(yīng)答信號(hào)后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號(hào)的判斷。應(yīng)答信號(hào)的代碼如下:void respons()uchar i ;scl=1 ;nop ();while (sda=1 )i250 )i+ ;scl=0 ;nop ();3.6 矩陣鍵盤(pán)確定矩陣式鍵盤(pán)上何鍵被按下時(shí)采用

18、“行掃描法”。在實(shí)際應(yīng)用中,由于電壓存在抖動(dòng)現(xiàn)象, 所以在程序設(shè)計(jì)時(shí)要設(shè)計(jì)一個(gè)消抖程序。由于抖動(dòng)現(xiàn)象為小概率事件,所以檢測(cè)兩次便可消除抖動(dòng)現(xiàn)象的影響。在檢測(cè)完后,還要有一個(gè)松手程序,用于檢測(cè)是否已經(jīng)松手,否則按下一次將會(huì)產(chǎn)生很多鍵盤(pán)信號(hào)。第一行鍵盤(pán)掃描的代碼如下:uchar keyscan()P1=0x7f ;temp=P1 ;i( f temp!=0x7f)delay ( 5 );P1=0x7f ;temp=P1 ;i( f temp!=0x7f)temp=temp0xf0;switch (temp )case 0x77 :num=1 ;break ;case 0x7b : num=2 ;b

19、reak ;case 0x7d : num=3 ;break ;case 0x7e :num=4 ;break ;P1=0x7f ;temp=P1 ;while ( temp!=0x7f)P1=0x7f ;temp=P1 ;return num;3.7 液晶顯示程序由于波形發(fā)生器的顯示部分只用于寫(xiě),故只考慮寫(xiě)入部分的程序。在此主要依據(jù) 1602 的時(shí)序圖來(lái)完成對(duì)液晶顯示的程序編寫(xiě)。液晶顯示程序分為寫(xiě)入數(shù)據(jù)與寫(xiě)入命令兩部分,且寫(xiě)入方法大體相同。寫(xiě)入數(shù)據(jù)的程序步驟為:(1 )將數(shù)據(jù) / 命令選擇端 RS 設(shè)置成為高電平,即為寫(xiě)入數(shù)據(jù);(2 )將數(shù)據(jù)寫(xiě)入輸入P0 端口,然后延時(shí)5 ms ;(3 )將使能信號(hào)置為高,再次延時(shí)5 ms ;(4 )將使能信號(hào)置為低。液晶顯示程序代碼為:void write_data(uchar dat )rs=1 ; / 令選擇端 RS 設(shè)置成為高電平P0=dat ; / 將數(shù)據(jù)寫(xiě)入輸入 P0 端口delay ( 5 );en=1 ; / 將使能信號(hào)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論