MSP430控制的基于DDS的波形發(fā)生器設(shè)計(jì)_第1頁
MSP430控制的基于DDS的波形發(fā)生器設(shè)計(jì)_第2頁
MSP430控制的基于DDS的波形發(fā)生器設(shè)計(jì)_第3頁
MSP430控制的基于DDS的波形發(fā)生器設(shè)計(jì)_第4頁
MSP430控制的基于DDS的波形發(fā)生器設(shè)計(jì)_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

華中科技大學(xué)電子與信息工程系2011年TI杯電子設(shè)計(jì)大賽項(xiàng)目總結(jié)報(bào)告題目:MSP430控制的基于DDS的波形發(fā)生器設(shè)計(jì)組長:何永天(提高0801班U200814111)組員:李戀陽(提高0801班U200812892)袁園(提高0802班U200813900)楊春風(fēng)(電信0804班U200812791)吳文彬(電信0806班U200812863)指導(dǎo)老師:陳林日期:2011.7.8

目錄1 設(shè)計(jì)目標(biāo) 41.1 基本功能 41.2 擴(kuò)展功能 42 團(tuán)隊(duì)組成 53 系統(tǒng)設(shè)計(jì)方案 53.1 幾種初步方案 53.1.1 方案一 53.1.2 方案二 63.1.3 方案的比較 63.2 器件選型 73.2.1 單片機(jī) 73.2.2 數(shù)模轉(zhuǎn)換DAC 73.2.3 壓控增益放大器 73.2.4 運(yùn)算放大器 84 系統(tǒng)硬件設(shè)計(jì)與實(shí)現(xiàn) 84.1 系統(tǒng)框圖 84.2 系統(tǒng)電路圖 94.3 器件清單 94.4 模塊分析 104.4.1 DDS 104.4.2 幅度控制 114.4.3 放大穩(wěn)壓 134.4.4 自選波形 144.4.5 鍵盤 144.4.6 LCD顯示 155 系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn) 165.1 總體設(shè)計(jì)框圖 165.2 初始化 175.3 DDS 185.4 LCD顯示 195.5 DAC 215.6 鍵盤 226 系統(tǒng)測試與結(jié)果 266.1 總體方案選擇 266.1.1 原方案 266.1.2 遇到的障礙: 276.1.3 改進(jìn)方案: 276.2 硬件電路測試 276.2.1 VCA810壓控放大器 276.2.2 OPA1632 286.2.3 級(jí)聯(lián) 286.2.4 關(guān)于換備選方案 286.3 系統(tǒng)聯(lián)調(diào)結(jié)果 286.3.1 三角波、正弦波、方波測試結(jié)果 286.3.2 擴(kuò)展波形的測試結(jié)果 326.3.3 擴(kuò)展掃頻功能的測試結(jié)果 337 結(jié)束語 337.1 目標(biāo)完成情況 337.2 感想 338 參考文獻(xiàn) 349 附錄 349.1 電路圖 349.2 源碼清單 35設(shè)計(jì)目標(biāo)設(shè)計(jì)并制作一個(gè)波形發(fā)生器,該波形發(fā)生器能產(chǎn)生正弦波、方波、三角波和由用戶編輯的特定波形,并根據(jù)用戶輸入選擇產(chǎn)生指定類型與參數(shù)的波形,同時(shí)在必要的輔助輸出顯示設(shè)備上顯示產(chǎn)生波形的類型與參數(shù)?;竟δ芫哂挟a(chǎn)生正弦波、方波、三角波三種周期性波形的功能;輸出波形的頻率范圍為100Hz-20KHz(非正弦波頻率按10次諧波計(jì)算);重復(fù)頻率可調(diào),頻率步進(jìn)間隔≤100Hz。輸出波形幅度范圍0-5V(峰峰值),可按步進(jìn)0.1V(峰峰值)調(diào)整。由外界按鍵輸入選擇產(chǎn)生波形的種類、頻率與峰峰值;界面顯示輸出波形的類型、重復(fù)頻率(周期)和幅度。擴(kuò)展功能輸出波形頻率范圍擴(kuò)展至100Hz-200KHz。用鍵盤或其它輸入裝置產(chǎn)生任意波形。增加穩(wěn)幅輸出功能,當(dāng)負(fù)載變化時(shí),輸出電壓幅度變化不大于±3%(負(fù)載電阻變化范圍:100Ω)。可產(chǎn)生單次或多次(1000次以下)特定波形(如產(chǎn)生1個(gè)半周期三角波輸出)。具有掉電存儲(chǔ)功能,可存儲(chǔ)掉電前用戶編輯的波形和設(shè)置。其它(如增加頻譜分析、失真度分析、頻率擴(kuò)展大于200KHz、掃描輸出等功能)。團(tuán)隊(duì)組成我們的工作分為以下模塊(詳細(xì)分工在個(gè)人報(bào)告中敘述)前期:收集資料、方案設(shè)計(jì)、器件選型硬件部分:電路參數(shù)設(shè)計(jì)、proteus制圖及硬件仿真、各單級(jí)調(diào)試、PCB布線、通用版布線、電路焊接、排查焊接錯(cuò)誤軟件部分:LCD模塊、鍵盤掃描模塊、DDS模塊、調(diào)頻、掃頻、模塊間接口設(shè)計(jì)與實(shí)現(xiàn)、自選波形模塊(DA部分)、軟件聯(lián)調(diào)后期:硬件級(jí)聯(lián)調(diào)試、軟件聯(lián)調(diào)報(bào)告書寫、文檔排版、幻燈片演示、視頻制作、答辯展示系統(tǒng)設(shè)計(jì)方案幾種初步方案方案一由MSP43F149單片機(jī)產(chǎn)生三角波、正弦波和方波,并且控制波形之間的轉(zhuǎn)換,以及波信號(hào)的頻率和幅度。用LCD液晶顯示模塊顯示波形的種類和相關(guān)參數(shù)。單片機(jī)輸出數(shù)字信號(hào),通過DAC進(jìn)行數(shù)模轉(zhuǎn)換。采用低通濾波器濾除DAC轉(zhuǎn)換過程中形成的高頻小鋸齒波,運(yùn)算放大器進(jìn)行放大,電壓跟隨器穩(wěn)幅,最后送入示波器顯示信號(hào)。方案二用DDS(直接數(shù)字合成DirectDigitalSynthesis)芯片產(chǎn)生三角波、正弦波和方波,并用MSP430單片機(jī)送控制字給DDS以控制波形之間的轉(zhuǎn)換,以及波信號(hào)的頻率,通過TI公司的VCA810壓控放大器芯片進(jìn)行調(diào)幅。然后通過濾波器濾除高頻噪聲,通過放大電路對信號(hào)進(jìn)行放大,之后通過緩沖對信號(hào)進(jìn)行穩(wěn)幅,最后送入示波器顯示信號(hào),用單片機(jī)產(chǎn)生任意波形和其他擴(kuò)展功能。方案的比較方案一的基本思路是用單片機(jī)發(fā)出指令輸出相應(yīng)的數(shù)字量,然后通過DA產(chǎn)生要求的模擬量,但是存在一個(gè)致命的問題,那就是本次的頻率基本要求為100Hz-20KHz,擴(kuò)展要求是100-200KHz,但是通常的MSP430系列單片機(jī)的晶振一般為8M左右,指令周期是機(jī)器周期,可達(dá)1/8ms,所以對生成方波來說還可以,而要合成三角波或正弦波則存在很多問題,程序?qū)崿F(xiàn)難度很大,所以我們最終放棄了這個(gè)方案。方案二的基本思路是走兩條路,使用DDS芯片產(chǎn)生三種基本波形,用單片機(jī)實(shí)現(xiàn)任意波形以及控制和顯示等功能,容易對功能進(jìn)行擴(kuò)充,且外圍電路簡單,系統(tǒng)可靠性較高,編程實(shí)現(xiàn)較為簡單,整個(gè)系統(tǒng)成本較低,我們最終選擇了這個(gè)方案。信號(hào)初步產(chǎn)生之后都要經(jīng)過濾波、放大、緩沖輸出等電路,各個(gè)方案下的設(shè)計(jì)大同小異,主要還是需要穩(wěn)定可靠,帶寬很寬。器件選型單片機(jī)選用MSP430F5438單片機(jī),因?yàn)樵诜N類和數(shù)量繁多的單片機(jī)中,TI的MSP430系列頗具特色,并具有良好的性能。數(shù)模轉(zhuǎn)換DAC按照設(shè)計(jì)好的方案,擴(kuò)展功能中的任選波形用DA來實(shí)現(xiàn),有2種方法:外接DAC0832或者自帶的DAC5571。自帶的DAC5571優(yōu)點(diǎn):使用較簡單(因?yàn)橛型暾膖est代碼和文檔,而且已經(jīng)集成在5438的開發(fā)板上);缺點(diǎn):速度上不去(因?yàn)?438自帶的操作DA用來產(chǎn)生任選波形的代碼要放在main中,但main函數(shù)比較龐大,影響了任選波形的頻率)外接DAC0832優(yōu)點(diǎn):可以自己去設(shè)計(jì)DA的驅(qū)動(dòng)函數(shù),產(chǎn)生的任選波形的頻率較高;缺點(diǎn):設(shè)計(jì)和搭電路較復(fù)雜(0832的輸出端還要加運(yùn)放來將電流輸出轉(zhuǎn)換成電壓輸出)我們選擇第一種自帶DA壓控增益放大器比較兩個(gè)選擇:VCA810和VCA822。具體來說,我們比較它們的增益帶寬積,輸出(驅(qū)動(dòng))電流,及我們對芯片的熟悉程度。最后決定選擇VCA810,利用DAC產(chǎn)生控制電壓改變放大器的增益??刂齐妷汉头糯笃髟鲆娉删€性,方便實(shí)現(xiàn)精確的增益控制。VCA810的最小增益步進(jìn)僅取決于DAC的位數(shù),可以實(shí)現(xiàn)增益微調(diào),為閉環(huán)改善放大器的性能提供方便。運(yùn)算放大器主要考慮因素有增益帶寬積,輸出驅(qū)動(dòng)電流(表明帶負(fù)載的能力),噪聲電壓,電路復(fù)雜程度,對芯片的熟悉程度和價(jià)格,對于常用的幾個(gè)比較結(jié)果如下:OPA1632:增益帶寬積:180MHZ;輸出驅(qū)動(dòng)電流:150mAOPA551:帶寬:3MHZ;,增益帶寬積:3MHZ;輸出驅(qū)動(dòng)電流:200mAOPA552:帶寬:12MHZ,增益帶寬積:3MHZ;輸出驅(qū)動(dòng)電流:200mANE5532:小信號(hào)帶寬:10MHZ,輸出驅(qū)動(dòng)電流:60mATHS4031:增益帶寬積:100MHZ,輸出驅(qū)動(dòng)電流:90mATHS4521:帶寬:145MHZ,輸出驅(qū)動(dòng)電流:100mAuA741:增益帶寬積:1MHZ,輸出驅(qū)動(dòng)電流:25mA綜合考慮,opa1632各項(xiàng)性能比其他芯片要好很多,因此決定選用opa1632系統(tǒng)硬件設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng)框圖由MSP430單片機(jī)通過3個(gè)SPI接口控制AD9833產(chǎn)生各種頻率的正弦波、三角波、方波,經(jīng)放大整形電路后輸出,并通過獨(dú)立的按鍵切換輸出的波形,也可改變頻率和幅度以及頻率和幅度變化的步進(jìn)(通過軟硬件的配合)。通過TFT液晶模塊和獨(dú)立按鍵進(jìn)行人機(jī)交互。系統(tǒng)上電后檢查啟動(dòng)按鍵是否按下,當(dāng)啟動(dòng)按下被按下時(shí),啟動(dòng)各個(gè)模塊,與此同時(shí)檢查被按下的按鍵值。當(dāng)檢查到不同的按鍵被按下時(shí),由MSP430通過SPI控制AD9833進(jìn)行相應(yīng)的改變。系統(tǒng)電路圖其中DDS模塊較為復(fù)雜,上圖只是外部接口。其詳細(xì)電路設(shè)計(jì)如下圖所示:器件清單msp430f5438開發(fā)板(1個(gè))VCA810壓控增益放大器(1個(gè))OPA1632放大器(3個(gè))AD9833(1個(gè))UA741放大器(1個(gè))電阻,電容,導(dǎo)線若干模塊分析DDSAD9833介紹AD9833是ADI公司的一款低功耗的DDS器件,能夠輸出正弦波、三角波、方波。AD9833無需外接元件,輸出頻率和相位可通過軟件編程設(shè)置,易于調(diào)節(jié)。其頻率寄存器為28位,主頻時(shí)鐘為25MHz時(shí),其精度為0.1Hz;主頻時(shí)鐘為lMHz時(shí).精度可達(dá)0.004Hz.AD9833內(nèi)部有5個(gè)可編程寄存器:1個(gè)16位控制寄存器,用于設(shè)置器件_T作模式;2個(gè)28位頻率寄存器和2個(gè)12位相位寄存器,分別用于設(shè)置器件輸出正弦波的頻率和相位。它的SIN-ROM查詢表把輸入的地址相位信息映射成正弦波幅值的數(shù)字量信號(hào),驅(qū)動(dòng)D/A轉(zhuǎn)換器輸出模擬量。輸出正弦波頻率為:f式中:FREQREG為頻率控制字,由頻率寄存器FREQOREG或FREQlREG的值給定,其范圍為0≤MfMCLK從單片機(jī)輸入控制字AD9833模塊有3根串行接口線,分別是FSYNC、SCLK和SDATA,與SPI、QSPI、MI-CROWIRE和DSP接口標(biāo)準(zhǔn)兼容,在串口時(shí)鐘SCLK的作用下,數(shù)據(jù)是以16位的方式加載到設(shè)備上,F(xiàn)SYNC引腳是使能引腳,電平觸發(fā)方式,低電平有效。進(jìn)行串行數(shù)據(jù)傳輸時(shí),F(xiàn)SYNC引腳置低,在16個(gè)SCLK的下降沿?cái)?shù)據(jù)通過SDATA引腳被送到AD9833的輸入移位寄存器。因此,此處我們通過3個(gè)100Ω的電阻進(jìn)行限流,并將這3個(gè)引腳接到單片機(jī)MSP430F5438的P9.4、P9.3和P9.2腳,通過單片機(jī)來控制AD9833。下圖是SCI串行數(shù)據(jù)通信的時(shí)序圖:從VoutOPBITENBitMODEBitDIV2BitVOUTPin00X正弦波01X三角波100DAC數(shù)據(jù)的MSB/2101DAC數(shù)據(jù)的MSB其中MSB/2和MSB對應(yīng)為方波,且MSB/2為MSB頻率的一半。即正弦波,三角波,方波對應(yīng)的頻率控制字分別為:0x2000,,0x2002,0x2028(MSB方波),0x2020(MSB/2方波)。完整工作流程簡介雖然MSP430單片機(jī)具有硬件SPI總線功能,但是一次只能傳輸8位數(shù)據(jù)位,而AD9833在接收數(shù)據(jù)時(shí)是16位數(shù)據(jù)位,因此,需要用軟件模擬SPI總線;AD9833在接收16位數(shù)據(jù)時(shí)是高位在前,低位在后;先發(fā)送控制寄存器字然后發(fā)送想要的頻率字;發(fā)送數(shù)據(jù)前必須把FSYNC置成低電平,發(fā)送完以后把FSYNC置成高電平;當(dāng)對AD9833初始化時(shí),為了避免DAC產(chǎn)生虛假輸出,RESET必須置為1,直到配置完畢,需要輸出時(shí)才將RESET置為0。RESET為0后的8~9個(gè)MCLK時(shí)鐘周期就可在DAC的輸出端觀察到波形。在+5V的電源電壓下DDS的輸出峰峰值為:0.6V,但測試后發(fā)現(xiàn)三角波和正弦波的輸出峰峰值在0.68V左右,而方波的輸出峰峰值超過6V,這也成為后面處理的一個(gè)考慮的比較多的問題幅度控制我們考慮了如下四種方案:由數(shù)控電位器組成的電阻分壓網(wǎng)絡(luò)控制幅度。采用峰值檢波器獲得輸出端的電壓幅值,經(jīng)A/D采樣后得到輸出端當(dāng)前的電壓幅值,然后就得到了輸出當(dāng)前的電壓幅值,然后通過與預(yù)設(shè)的輸出幅值比較就可以知道輸出下降的情況。并由單片機(jī)控制放大器增加放大倍數(shù),直至輸出幅值調(diào)整到預(yù)期值。采用一級(jí)D/A轉(zhuǎn)換實(shí)現(xiàn)。直接將DDFS產(chǎn)生的信號(hào)作為參考電壓輸入到D/A中,這樣D/A就成為一個(gè)數(shù)控可變增益放大器,通過改變D/A的轉(zhuǎn)換數(shù)據(jù)就可以控制輸出幅度。數(shù)模轉(zhuǎn)換和幅度控制部分采用雙D/A技術(shù),由單片機(jī)控制,第一級(jí)D/A的輸出波形作為第二級(jí)D/A的基準(zhǔn)電壓源,以此來控制信號(hào)發(fā)生器的輸出電壓幅度。最后經(jīng)分析和試驗(yàn),方案四電路簡單、通過軟件控制、可控性強(qiáng),故采用這種方案。VCA810介紹本實(shí)驗(yàn)中,調(diào)幅部分我們選用TI公司的VCA810芯片,VCA810是一個(gè)寬帶、連續(xù)變化、電壓控制增益放大器。它提供了一個(gè)對差分輸入單端輸出轉(zhuǎn)換與高阻抗輸入用來改變增益控制的增益線性范圍為-40dB到+40dB在dB/V。供給電壓±5V、VCA810增益控制電壓在0V時(shí)為-40dB,在-2V為+40dB。增加地面控制電壓將衰減信號(hào)>80dB。信號(hào)帶寬和壓擺率保持在整個(gè)增益調(diào)節(jié)范圍內(nèi)保持恒定。這40db/V增益控制在±1.5db(最高誤差范圍±0.9db),讓應(yīng)用程序在一個(gè)AGC增益控制電壓精確到作為接收信號(hào)強(qiáng)度指示器(RSSI)的使用精度為±1.5db。通過調(diào)節(jié)控制電壓(Vc)來控制壓控增益放大器VCA810的放大增益,從而控制正確的輸出。VCA810作為壓控增益的主要部分,其增益與控制電壓的關(guān)系為:G=-40(其中,Vc表示控制電壓,可見,VCA810的增益與其控制電壓成線性關(guān)系,只要用單片機(jī)控制D/A輸出一線性變化的控制電壓給Vc,便可得到線性變化的電壓增益輸出理論上VCA810可調(diào)的放大倍數(shù)為1/100~100,實(shí)際上由于DDS輸出的正弦波和三角波幅度為680mV,方波的幅度為6.8V左右,而且VCA的工作電壓只有-5V~+5V,所以放大倍數(shù)不可能為100倍,差不多達(dá)到7、8倍,但是縮小則可以到1/100。為了確保調(diào)節(jié)的精確,我們采用VCA810的縮小功能,提供給它的參考電壓為0~-1V。經(jīng)過這一級(jí)縮小后,再送入后級(jí)放大。uA741反相模塊由于我們采用的MSP430單片機(jī)自帶DA模塊,所以沒有外接DA,利用單片機(jī)給DA寫控制字,使DA輸出幅值可變的電壓作為VCA810的參考電壓。從DA輸出的電壓幅度值范圍為0~3.3V,而VCA810要求的參考電壓為0~-1V,所以需要反相和縮小,利用簡單的uA741實(shí)現(xiàn),電路如下:放大穩(wěn)壓OPA1632介紹設(shè)計(jì)運(yùn)算放大器時(shí),我們考慮了許多不同型號(hào)的運(yùn)放,功能各異,主要考慮增益帶寬積,輸出驅(qū)動(dòng)電流(表明帶負(fù)載的能力),噪聲電壓,(電路復(fù)雜程度,芯片熟悉程度,價(jià)格)等等。TI公司的OPA1632是音頻運(yùn)算放大器,性能比較好。增益帶寬積為180MHZ,輸出驅(qū)動(dòng)電流為150mA??梢怨ぷ髟谳^高頻率下而不出現(xiàn)失真,且驅(qū)動(dòng)能力較好。功能實(shí)現(xiàn)該實(shí)驗(yàn)中,我們主要用OPA1632設(shè)計(jì)放大電路和電壓跟隨器。放大電路主要分為同相比例放大器和反相比例放大器兩種。反相比例放大器同相比例放大器反相放大電路有如下特點(diǎn):運(yùn)放兩個(gè)輸入端電壓相等并等于0,故沒有共模輸入信號(hào),這樣對運(yùn)放的共模抑制比沒有特殊要求。vN=vP,而vP=0,反相端N沒有真正接地,故稱虛地點(diǎn)。電路在深度負(fù)反饋條件下,電路的輸入電阻為R1,輸出電阻近似為零。輸入輸出關(guān)系:V同相比例運(yùn)算電路的特點(diǎn)如下:輸入電阻很高,輸出電阻很低。由于vN=vP=vS,電路不存在虛地,且運(yùn)放存在共模輸入信號(hào),因此要求運(yùn)放有較高的共模抑制比。輸入輸出關(guān)系:V由于實(shí)際放大倍數(shù)比理論值低,所以我們設(shè)計(jì)Rf=100千歐,R1=5.1千歐,放大倍數(shù)約為21倍。自選波形實(shí)現(xiàn)自選波形有兩種不同的理解和方法:手動(dòng)描波形,由硬件接收,然后描點(diǎn)顯示出來;寫好一組波形,存在flash內(nèi)部,通過按鍵選擇我們實(shí)現(xiàn)的是第二種,首先用MATLAB描出想要產(chǎn)生的任意波形,然后取出大量的點(diǎn)寫入代碼中,將波形描繪出來。按照設(shè)計(jì)好的方案,擴(kuò)展功能中的任選波形用DA來實(shí)現(xiàn),有2種方法:外接DAC0832或者自帶的DAC5571。自帶的DAC5571優(yōu)點(diǎn):使用較簡單(因?yàn)橛型暾膖est代碼和文檔,而且已經(jīng)集成在5438的開發(fā)板上);缺點(diǎn):速度上不去(因?yàn)?438自帶的操作DA用來產(chǎn)生任選波形的代碼要放在main中,但main函數(shù)比較龐大,影響了任選波形的頻率)外接DAC0832優(yōu)點(diǎn):可以自己去設(shè)計(jì)DA的驅(qū)動(dòng)函數(shù),產(chǎn)生的任選波形的頻率較高;缺點(diǎn):設(shè)計(jì)和搭電路較復(fù)雜(0832的輸出端還要加運(yùn)放來將電流輸出轉(zhuǎn)換成電壓輸出)綜上考慮,我們選擇使用自帶的DAC處理。鍵盤本實(shí)驗(yàn)中,我們通過按鍵實(shí)現(xiàn)波形切換和調(diào)頻、調(diào)幅。通過開關(guān)實(shí)現(xiàn)波形的切換比較簡單只需通過輸出波形后不斷返回到檢測開關(guān)的子程序中,判斷是否有別的開關(guān)撥動(dòng),如果有別的開關(guān)撥動(dòng)則執(zhí)行別的程序,否則輸出原來的波形,不過如果要能夠識(shí)別別的開關(guān)發(fā)生變化,必須將此開關(guān)關(guān)掉否則會(huì)識(shí)別不了別的鍵按下。當(dāng)然開關(guān)的調(diào)頻和調(diào)幅的實(shí)現(xiàn)也一樣,不過首先先輸出一個(gè)波形,然后再檢測開關(guān)是否需要調(diào)頻或者調(diào)幅,如果需要?jiǎng)t轉(zhuǎn)入到相應(yīng)的程序中,最后再重新輸出波形。下面是我們設(shè)計(jì)的按鍵對應(yīng)控制的功能:LCD顯示我們使用的是BW-DK5438開發(fā)板自帶的TFT液晶屏,用SPI的SCK端來驅(qū)動(dòng)液晶的寫信號(hào),當(dāng)全屏刷新、區(qū)域填充時(shí),刷新速度可達(dá)10Mpps,因此可以流暢的運(yùn)行。下圖是TFT液晶接口示意圖:系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)總體設(shè)計(jì)框圖初始化功能介紹由于初始化代碼由開發(fā)板自帶,且并不很多實(shí)際內(nèi)容,故僅列出初始化流程,省略具體代碼。核心代碼 主函數(shù)中主要功能包括初始化、掃頻功能實(shí)現(xiàn)、自選波形功能實(shí)現(xiàn)以及鍵盤掃描。偽代碼如下:Init();//初始化函數(shù) while(1)//主函數(shù)循環(huán) { __delay_cycles(2048000);//鍵盤掃描延遲 if(掃描使能)//掃頻功能函數(shù) { FreqCoeff=(FreqCoeff+1)%99;//當(dāng)前檔位下頻率系數(shù)遞增 DDS輸出;LCD顯示; }elseif(Mode==3)//自選波形函數(shù) { while(ReadKey()==0xFF)//當(dāng)無鍵盤按下時(shí),執(zhí)行自選波形DAC循環(huán)輸出 { 自選波形DAC繪制;}} ScanKey();//掃描鍵盤}DDS功能介紹主要是對AD933進(jìn)行SPI模擬與單片機(jī)進(jìn)行連接,再根據(jù)按鍵輸入的數(shù)據(jù)分別轉(zhuǎn)換成正弦波、三角波和方波進(jìn)行輸出的程序。其中轉(zhuǎn)換的格式固定,但是AD9833輸出頻率時(shí)是先低位后高位,區(qū)別于SPI模擬時(shí)單片機(jī)給AD9833數(shù)據(jù)時(shí)是先高位后低位。FSYNC為使能,低電平可傳數(shù)據(jù),剛開始必須為高電平,SCLK為時(shí)鐘,在下降沿對應(yīng)數(shù)據(jù),SDATE為傳數(shù)據(jù)(頻率控制字),16位,但可能單片機(jī)輸出一次性為8位,必須先高8位后低8位給AD9833的SDATA核心代碼:voiddds(void){//WDTCTL=WDTPW+WDTHOLD;//Stopwatchdogtimerunsignedlongfreq_value;//不是頻率!是計(jì)算出的頻率控制字AD9833_SPI_PORT_Init();output_init();switch(FreqStep)//根據(jù)頻率計(jì)算頻率控制字{case0:freq_value=(unsignedlong)(FreqCoeff*0x400*1.05);break;case1:{if(FreqCoeff==7)freq_value=(unsignedlong)(0x11800*1.05);elseif(FreqCoeff==8)freq_value=(unsignedlong)(0x13000*1.05*1.05);elseif(FreqCoeff==9)freq_value=(unsignedlong)(0x15800*1.05*1.05);elsefreq_value=(unsignedlong)(FreqCoeff*0x2800*1.05);}break;case2:freq_value=(unsignedlong)(FreqCoeff*0x19000*1.05);break;case3:freq_value=(unsignedlong)(FreqCoeff*0xFA000*1.05);break;default:freq_value=0;break;}switch(Mode)//不同Mode調(diào)用不同output函數(shù){case0:output_square(freq_value);//Mode=0對應(yīng)方波break;case1://Mode=1對應(yīng)三角波output_triangle(freq_value);break;case2://Mode=2對應(yīng)三角波output_sinusoid(freq_value);break;default:output_sinusoid(0x00005000);}LCD顯示功能介紹完成液晶初始化、顯示功能。由于TFT性能優(yōu)良、尺寸大,且開發(fā)板自帶TFT液晶驅(qū)動(dòng)程序以及相應(yīng)顯示函數(shù),則在編寫過程中,主要內(nèi)容是通過調(diào)用繪制函數(shù),將按鍵輸入的信息顯示在TFTLCD上,從而實(shí)現(xiàn)人機(jī)交互。在LCD上,我們設(shè)計(jì)了一個(gè)圖形化的顯示界面,它可以實(shí)時(shí)的反應(yīng)波形狀態(tài)、頻率、幅值等等信息。下面是該界面的詳細(xì)說明,上面標(biāo)示出了各元素的具體坐標(biāo):核心代碼voidInitInterface(void)///////////初始化{//清屏Clear_LCD(Color_BK);TA0CCR1=220;DrawRectFill(0,0,240,320,WINDOW_BK_COLOR);//繪制背景DrawRectFill(0,0,240,30,STATUS_BK_COLOR);//標(biāo)題欄Color_BK=STATUS_BK_COLOR;Color=STATUS_COLOR;PutString24M(60,3,"波形發(fā)生器");//標(biāo)題字DrawRectFill(20,60,205,30,WINDOW_COLOR);//波形窗口題Color_BK=WINDOW_COLOR;Color=WINDOW_BK_COLOR;PutString24M(70,63,"波形信息");Color=WINDOW_COLOR;Color_BK=WINDOW_BK_COLOR;DrawRect(20,90,205,125,WINDOW_COLOR);PutString24M(25,105,"波形:");Mode=2;DrawMode();//初始化波形為正弦波PutString24M(25,140,"頻率:");FreqStep=0;FreqCoeff=10;DrawFreq();//初始化頻率為100HzPutString24M(25,175,"峰-峰值:");Vpp=6;DrawVpp();//初始化峰峰值為0.6VDrawRectFill(0,290,240,30,STATUS_BK_COLOR);}其他繪制函數(shù)及關(guān)鍵代碼:voidDrawMode(void);—繪制波形模式 PutString24M(90,105,"方波");voidDrawFreqStep(void);—繪制頻率檔位switch(FreqStep)//判斷FreqStep取值,在LCD中繪制檔位提示符{case0:PutString24M(130,255,"x100Hz");//100Hz檔Break;……}voidDrawFreq(void);—繪制頻率unsignedcharstr[10];//用于存儲(chǔ)字符型頻率值floatfreq_f;//浮點(diǎn)型頻率值switch(FreqStep){case0:freq_f=100*FreqCoeff*0.1;//100Hz檔位時(shí),頻率=頻率系數(shù)(1-99)*0.1*100,單位Hzbreak;……//其余檔位同上,省略}sprintf((char*)str,"%3.1f",freq_f);//浮點(diǎn)型數(shù)據(jù)到字符串型轉(zhuǎn)換DrawRectFill(90,140,70,30,WINDOW_BK_COLOR);//繪制背景覆蓋數(shù)據(jù),以防疊加至當(dāng)前值PutString24M(90,140,str);//繪制當(dāng)前頻率值if(FreqStep==0)PutString24M(170,140,"Hz");//通過判斷FreqStep取值,確定繪制的單位為“Hz”或“kHz”elsePutString24M(170,140,"kHz");voidDrawVpp(void);—繪制峰峰值unsignedcharstr[10];//用于存儲(chǔ)字符型峰峰值floatVpp_f;//浮點(diǎn)型峰峰值Vpp_f=0.1*Vpp;//峰峰值=峰峰值系數(shù)(0-50)*0.1sprintf((char*)str,"%3.1f",Vpp_f);//浮點(diǎn)型數(shù)據(jù)到字符型數(shù)據(jù)轉(zhuǎn)換PutString24M(130,175,str);//繪制當(dāng)前峰峰值PutString24M(170,175,"V");//繪制單位“V”DAC功能介紹DAC在本次設(shè)計(jì)中完成兩個(gè)功能:一、通過改變輸入的數(shù)字信號(hào),輸出自選波形;二、輸出壓控放大器參考電壓,從而改變放大器的增益。核心代碼////////////////////初始化#defineSDA5571BIT6//DAC5571數(shù)據(jù)#defineSCK5571BIT7//DAC5571時(shí)鐘#defineSCL_HP9OUT|=SCK5571#defineSCL_LP9OUT&=~SCK5571#defineSDA_HP9OUT|=SDA5571#defineSDA_LP9OUT&=~SDA5571//完成IIC的起始條件操作voidstart(void){SCL_H;//時(shí)鐘信號(hào)置高SDA_H;//數(shù)據(jù)線置高delay();//延遲SDA_L;//數(shù)據(jù)線置低delay();//延遲SCL_L;//時(shí)鐘信號(hào)置低delay();//延遲}///////////////////核心功能實(shí)現(xiàn)if(Mode==3)//當(dāng)自選波形模式{while(ReadKey()==0xFF)//當(dāng)沒有鍵盤按下時(shí){Write_DAC(voltage++);//遞增輸出鋸齒波}}鍵盤功能介紹//P6引腳定義#define KPR0 BIT0//鍵盤0行#define KPR1 BIT1//鍵盤1行#define KPR2 BIT2//鍵盤2行#define KPR3 BIT3//鍵盤3行#defineKPC0 BIT4//鍵盤0列#define KPC1 BIT5//鍵盤1列#define KPC2 BIT6//鍵盤2列#define KPC3BIT7//鍵盤3列由鍵盤接口圖以及引腳定義可以看出,P6端口的8條I/O端口線被分成4條行線P6.0~P6.3和4條列線P6.4~P6.7。按鍵的兩端分別接在行線和列線上,行線與列線的每個(gè)交界處均有一個(gè)按鍵。如果有按鍵被按下,則與之相連的行線與列線被接通。要想檢測是否有按鍵被按下,先使4條行線輸出低電平,讀列線P6.4~P6.7。因?yàn)樗辛芯€都經(jīng)上拉電阻接到VCC,如果沒有按鍵被按下,列線讀進(jìn)來的都是高電平1;如果有按鍵被按下,則列線讀進(jìn)來的電平應(yīng)與行線輸出的一致,為低電平0.據(jù)此可以判斷是否有按鍵按下。對于行列掃描式鍵盤,常采用掃描的辦法識(shí)別鍵碼。如果4條行線沒有輸出低電平,那么就可以根據(jù)讀列線的值來判斷這一行是否有鍵被按下了。核心代碼#defineKEY_PORT_INP6IN#defineKEY_PORT_OUTP6OUT#defineKEY_PORT_DIRP6DIR#defineKEY_PORT_RENP6REN#defineROW_IN_COL_OUTP6DIR=KPC0+KPC1+KPC2+KPC3;\P6OUT=~(KPC0+KPC1+KPC2+KPC3);\__delay_cycles(20)//鍵盤列輸出行輸入#defineCLO_IN_ROW_OUTP6DIR=KPR0+KPR1+KPR2+KPR3;\P6OUT=~(KPR0+KPR1+KPR2+KPR3);\__delay_cycles(20)//鍵盤行輸出列輸入unsignedcharReadKey(void){unsignedcharcolumn,row,key;//分別表示行、列線讀取值、返回鍵值unsignedcharKey;//儲(chǔ)存鍵值對應(yīng)的8位鍵盤掃描值,對應(yīng)關(guān)系見下圖ROW_IN_COL_OUT;//鍵盤列輸出行輸入row=KEY_PORT_IN&(KPR0+KPR1+KPR2+KPR3);//讀取P6端口并屏蔽高4位輸出值即行線值if(row!=(KPR0+KPR1+KPR2+KPR3))//若行線沒有輸出低電平,說明有按鍵按下{CLO_IN_ROW_OUT;//鍵盤行輸出列輸入column=KEY_PORT_IN&(KPC0+KPC1+KPC2+KPC3);//讀取P6并屏蔽低4位即列線值ROW_IN_COL_OUT;//鍵盤列輸出行輸入Key=row+column;//行列線值相加,則高低4位的不同取值可以表示不同的鍵值_NOP();switch(Key)//通過判斷鍵值做出對應(yīng)的響應(yīng){case0xE7:key=1;break;case0xD7:key=2;break; ……//其他鍵值省略default:key=0xFF;}}elsekey=0xFF;//若沒有鍵盤輸出,則返回鍵值0xFFKEY_PORT_DIR=0xFF;//鍵盤8個(gè)IO口均設(shè)置為輸出KEY_PORT_OUT=0x00;//輸出低電平returnkey;//返回邏輯鍵值}下圖是8位鍵值與邏輯值對應(yīng)關(guān)系:各按鍵功能代碼按鍵1:模式選擇按鍵后Mode值循環(huán)模4遞增,在方波、三角波、正弦波、自選波形中單向切換。通過改變?nèi)肿兞縈ode值,可以傳遞給LCD模塊輸出正確的波形模式顯示在屏幕上,并通過調(diào)用DDS模塊的函數(shù)輸出正確的控制字給DDS從而輸出正確波形。Mode=(Mode+1)%4;//0-方波,1-三角波,2-正弦波,3-自選波形DrawMode();//繪制修改后的波形模式dds();//dds輸出修改后的波形按鍵2:頻率檔位選擇按鍵后FreqStep值循環(huán)模4遞增,在100Hz、1kHz、10kHz、100kHz四個(gè)檔位中單向切換,通過改變?nèi)肿兞縁reqStep值,確定頻率檔位的選擇。在切換檔位后初始化頻率系數(shù)FreqCoeff=50,即將頻率值置為該檔位下的中間值,方便使用。同按鍵“1”,將改變后的檔位值輸出在LCD上,并調(diào)用DDS函數(shù)輸出正確波形。FreqStep=(FreqStep+1)%4;//0-100Hz,1-1kHz,2-10kHz,3-100kHzDrawFreqStep();//繪制頻率檔位值FreqCoeff=50;//初始化系數(shù)為50,便于調(diào)試和使用DrawFreq();//繪制修改后的頻率值dds();//dds輸出修改后的波形按鍵3:掃頻按鍵可使掃頻使能信號(hào)在0,1中切換,通過判斷是否為可以掃頻的三種基本波形,改變掃頻使能信號(hào),在主函數(shù)中可以確定當(dāng)前是否處于掃頻狀態(tài),實(shí)現(xiàn)掃頻功能。在LCD顯示的過程中,需要注意通過清屏消除“掃頻”字樣。//判斷是否處于三種基本波形模式下,若不是則無掃頻功能if(Mode==0||Mode==1||Mode==2){if(FreqScanEn==0)//若掃頻使能為低{FreqScanEn=1;//通過按鍵,修改使能信號(hào)為高PutString24M(160,105,"-掃頻");//繪制掃頻模式至TFT}else//若掃頻使能為高{FreqScanEn=0;//通過按鍵,修改使能信號(hào)為低//繪制底色,消除TFT顯示的掃頻字樣DrawRectFill(160,105,60,30,WINDOW_BK_COLOR);}}按鍵4、7:頻率增減按鍵可使頻率系數(shù)FreqCoeff在1-99中遞增或遞減,該數(shù)值表示在當(dāng)前頻率檔位中,頻率步進(jìn)的系數(shù),由于頻率步進(jìn)設(shè)計(jì)為檔位的0.1倍,故當(dāng)前頻率值的計(jì)算公式為:頻率值=FreqCoeff*0.1*FreqStep 由于FreqStep、FreqCoeff兩個(gè)全局變量可以唯一確定當(dāng)前頻率值,輸出給LCD模塊可以在屏幕上可以正確顯示,并輸出正確控制字給DDS模塊。//當(dāng)系數(shù)小于99時(shí),按鍵遞增//當(dāng)系數(shù)大于1時(shí),按鍵遞減if(FreqCoeff<99)FreqCoeff++;if(FreqCoeff>1)FreqCoeff--;DrawFreq();DrawFreq();dds();dds();按鍵5、8:幅度細(xì)調(diào)由于峰峰值的改變是通過開發(fā)板自帶的DAC輸出控制電壓來改變壓控放大器的放大倍數(shù)來實(shí)現(xiàn),而8位DAC輸出電壓值由輸入8位數(shù)字值(voltage)控制,當(dāng)按下“5”、“8”按鍵后,voltage以1為步進(jìn)增減,即可以最小分辨率調(diào)節(jié)輸出波形的峰峰值。voltage++;voltage--;Write_DAC(voltage);Write_DAC(voltage);按鍵6、9:幅度粗調(diào)為了實(shí)現(xiàn)峰峰值以0.1V步進(jìn)增減,設(shè)計(jì)步進(jìn)按鈕。按鍵后全局變量Vpp相應(yīng)變化,輸出給LCD顯示。讀取v1[51]數(shù)組中相應(yīng)輸出值,使DAC輸出正確的壓控電壓,達(dá)到幅度控制的目的。if(Vpp<50)Vpp++;if(Vpp>0)Vpp--;DrawVpp();DrawVpp();voltage=v1[Vpp];voltage=v1[Vpp];Draw(voltage);Draw(voltage);Write_DAC(voltage);Write_DAC(voltage); 實(shí)際聯(lián)調(diào)中,由于DDS方波輸出電壓與三角波、正弦波輸出電壓值有很大的區(qū)別,可以在讀取數(shù)組值時(shí),判斷當(dāng)前模式,進(jìn)行對應(yīng)的修改。修改后代碼: If(Mode==0){//方波時(shí) …… Voltage=v2[Vpp]; ……}elseif(Mode==1||Mode==2){//三角波、正弦波時(shí) …… Voltage=v1[Vpp] ……}系統(tǒng)測試與結(jié)果總體方案選擇原方案我們原定由MSP430F149單片機(jī)作為波形發(fā)生器的主控制器。因?yàn)樵诜N類和數(shù)量繁多的單片機(jī)中,TI的MSP430系列頗具特色,并具有良好的性能。我們原計(jì)劃采用MSP430F149控制DDS輸出高頻率的正弦波、方波和三角波。輸出的數(shù)字波形通過DAC0832轉(zhuǎn)換為模擬波形。模擬波形經(jīng)過濾波、放大、穩(wěn)幅電路后,就可以輸出到示波器觀察。輸入采用4×4鍵盤中斷控制。這樣可以最大限度的避免占用CPU機(jī)時(shí)。輸出采用LED循環(huán)顯示頻率和幅度,以及用字符表示當(dāng)前波形。下圖是原方案系統(tǒng)框圖:遇到的障礙:但是隨著工作的深入,我們遇到了很多障礙和預(yù)想不到的困難。比如LED顯示的效果并不好,特別是和LCD比較起來明顯很粗糙。所以我們決定改用LCD顯示。然而這樣又帶來了新的問題,149不能直接相連LCD去控制,它需要很復(fù)雜的外圍驅(qū)動(dòng)電路和軟件控制。我們在經(jīng)過很長時(shí)間的嘗試之后還是沒能成功。再加上其他很多編程時(shí)遇到的細(xì)節(jié)問題,經(jīng)過討論決定使用430開發(fā)板。改進(jìn)方案:考慮到上面的問題,我們購買了一塊開發(fā)板,它使用的是比430F149更先進(jìn)的核心芯片430F5438。工作原理是430產(chǎn)生DDS的控制字,讓后者輸出正弦波、三角波或是方波。波形經(jīng)過放大穩(wěn)幅后輸出。其實(shí)也可以直接通過查表法讓430產(chǎn)生各種波形,但430系列是以其低功耗見長,數(shù)MHz的主頻雖然并不低,但還不足以產(chǎn)生百kHz以上的正弦波形。為了達(dá)到盡可能高的輸出頻率,我們這樣做,而是僅僅把430用作控制用途。為了控制幅度,我們決定使用一個(gè)壓控調(diào)幅器件。用430輸出振幅相應(yīng)的數(shù)字信號(hào)通過DA轉(zhuǎn)換為模擬信號(hào),輸入到VCA中控制需要波形的幅度。硬件電路測試VCA810壓控放大器首先,在連接VCA810壓控放大器的時(shí)候,按照Datasheet上面的電路連接,如下圖:由于參考電壓Vc應(yīng)為負(fù),調(diào)試階段Vc的輸入我用的是-5V的電壓分壓??墒遣ㄐ螏缀鯖]有輸出,而且沒有任何改變放大倍數(shù)的跡象。這塊芯片的電路調(diào)了一整天,后來發(fā)現(xiàn)Rc不能連,因?yàn)闀?huì)和我設(shè)計(jì)的分壓器并聯(lián),使得電壓非常低,去掉之后波形的沖擊消失。但是仍然不可調(diào)放大倍數(shù),后來將RL由并聯(lián)改成串聯(lián),串上一個(gè)100歐的電阻,結(jié)果輸出波形正常。Datasheet上的VCA810可調(diào)放大倍數(shù)范圍是1/100~100,由于實(shí)際上芯片只有正負(fù)5V的電壓,而輸入的正弦波和三角波的幅度有680mV,方波的幅度有6.8V,所以實(shí)際上不可能達(dá)到100倍,實(shí)際上只有七八倍左右,而縮小可以達(dá)到1/100。我們需要精確的調(diào)幅,所以這一級(jí)只用它的縮小。我們從DA送給它的參考電壓為0~-1V。OPA1632在調(diào)試由OPA1632搭的放大電路時(shí),基本上很順利,只是實(shí)際的放大倍數(shù)小于理論的放大倍數(shù)。但是在調(diào)試由OPA1632搭的電壓跟隨器時(shí),偶爾會(huì)出現(xiàn)自激和干擾,加上輸出對地的電容時(shí),輸出就很好了。級(jí)聯(lián)DDS和VCA810及OPA1632級(jí)聯(lián)時(shí),出現(xiàn)各種問題,要不就是失真,要不就是頻率上不去。最開始,我試過在DDS和VCA810之間加上一級(jí)電壓跟隨器,因?yàn)镈DS的帶負(fù)載能力不強(qiáng),它輸出的正弦波和三角波本來有680mV,加上后級(jí)電路時(shí),馬上衰減到100mV左右。而電壓跟隨器的帶負(fù)載能力很強(qiáng),接上這一級(jí)之后輸出電壓就不變了。但是后來我們發(fā)現(xiàn)VCA810的輸入最大只能有5V,而DDS接電壓跟隨出來的方波幅度有6.8V,因此不能直接接VCA,我考慮接衰減電路,但是后來覺得去掉電壓跟隨器,直接利用由于帶負(fù)載能力不強(qiáng)的因素產(chǎn)生的衰減電壓,輸入到VCA中。事實(shí)表明這個(gè)方法很管用。VCA810和OPA1632之間級(jí)聯(lián)的時(shí)候也是有些問題,后來接了一個(gè)耦合電容在兩極之間,濾除直流成分,效果比較好。由于DDS衰減,我開始嘗試接兩級(jí)放大,在帶負(fù)載的時(shí)候出現(xiàn)強(qiáng)烈的干擾,考慮到放大器有同相和反相兩種,同相容易引起電磁干擾,我把第二級(jí)放大電路改為反相放大,而第一級(jí)仍然為同相放大器,結(jié)果很好。關(guān)于換備選方案由于最后一天我們的AD9833因?yàn)檎`操作燒了,所以不得不啟用臨時(shí)方案,臨時(shí)方案的性能沒有原來的好,后面也不需要兩級(jí)放大了,我就直接接一級(jí)放大,然后接電壓跟隨器輸出。但是這個(gè)備選方案的頻率有點(diǎn)達(dá)不到200Khz。其他功能都很好。系統(tǒng)聯(lián)調(diào)結(jié)果三角波、正弦波、方波測試結(jié)果經(jīng)過測試輸出波形的頻率范圍為10Hz-200KHz,完成了系統(tǒng)的基本要求100Hz-20kHz(非正弦波頻率按10次諧波計(jì)算)和擴(kuò)展功能要求;重復(fù)頻率可調(diào),頻率步進(jìn)間隔設(shè)為四檔:10Hz、100Hz、1KHz和10KHz,調(diào)節(jié)初始值分別為500Hz、5KHz、50KHz、500KHz,滿足了頻率步進(jìn)小于等于100Hz的基本要求,并可以實(shí)現(xiàn)頻率的快速調(diào)節(jié)。綜上所述,本系統(tǒng)完成了正弦波的基本要求并達(dá)到了擴(kuò)展頻率要求。具體的測試過程如下所示:圖中CH2接的是整個(gè)模塊電路處理后最終波形。下圖為頻率20KHz的時(shí)候的輸出波形,可以看到波形沒有失真,輸出比較理想。輸入波形峰峰值為100mV左右,輸出峰峰值為5V左右的波形如下,符合設(shè)計(jì)標(biāo)準(zhǔn)。三角波:正弦波:方波:下面三圖為頻率200KHz的時(shí)候的輸出波形,可以看到波形基本沒有失真,輸出比較理想。輸入波形峰峰值為100mV左右,輸出峰峰值為1-2V左右的波形如下,符合設(shè)計(jì)標(biāo)準(zhǔn)。三角波:正弦波:方波:擴(kuò)展波形的測試結(jié)果除了基本的波形設(shè)計(jì)以外,我們還設(shè)計(jì)了一個(gè)自己較為常用的鋸齒波形,如下。擴(kuò)展掃頻功能的測試結(jié)果可以實(shí)現(xiàn)從10Hz到500KHz的大范圍掃頻功能,其基本測試情況滿足要求(附件中有掃頻功能的視頻)結(jié)束語目標(biāo)完成情況基本要求中:能夠產(chǎn)生正弦波、方波、三角波三種周期性波形;輸出波形的頻率范圍為100Hz-20KHz(非正弦波頻率按10次諧波計(jì)算);重復(fù)頻率可調(diào),頻率步進(jìn)間隔≤100Hz(我們最小步進(jìn)可以達(dá)到10Hz);輸出波形幅度范圍0-5V(峰峰值),可按步進(jìn)0.1V(峰峰值)調(diào)整(我們可以微調(diào)(步進(jìn)<0.1V)和粗調(diào)(步進(jìn)0.1V峰峰值));可由外界按鍵輸入選擇產(chǎn)生波形的種類、頻率與峰峰值;通過LCD界面顯示輸出波形的類型、重復(fù)頻率(周期)和幅度。發(fā)揮部分中:輸出波形頻率范圍擴(kuò)展至100Hz-200KHz;用鍵盤產(chǎn)生任意波形(事先存儲(chǔ)在msp430的flash中的波形);增加穩(wěn)幅輸出功能,當(dāng)負(fù)載變化時(shí),輸出電壓幅度變化不大于±3%(負(fù)載電阻變化范圍:100Ω)(我們是在200Ω的基礎(chǔ)上變化100Ω的范圍);方波,三角波,正弦波的掃描輸出功能。感想這學(xué)期的硬件課程設(shè)計(jì)是以TI杯的形式進(jìn)行的,我們選擇了波形發(fā)生器這個(gè)題目。相比較另一個(gè)題目溫度巡檢,波形發(fā)生器更加需要硬件電路的設(shè)計(jì)和調(diào)試,而溫度巡檢則增多的是編程。既然做的是硬件課程設(shè)計(jì),所以經(jīng)過協(xié)商,我們選擇波形發(fā)生器這個(gè)命題。

之所以選擇MSP430,是為了符合TI杯的宗旨。并且在隨后的工作中,隨著不斷的查找相關(guān)用戶手冊、數(shù)據(jù)手冊,我們確實(shí)被TI公司豐富的產(chǎn)品型號(hào)和配套的嚴(yán)謹(jǐn)資料所折服。此外,TI讓我們可以極其方便的申請樣片,這大大方便了我們的工作同時(shí)也節(jié)約不少經(jīng)費(fèi)。這種經(jīng)營方式也讓我們大開眼界。硬件課設(shè)和我們之前做的注重理論的項(xiàng)目完全不同,趣味性強(qiáng),不僅鍛煉能力,而且可以學(xué)到很多東西。在與老師和同學(xué)的交流過程當(dāng)中,互動(dòng)學(xué)習(xí),將知識(shí)融會(huì)貫通,這是我們所有組員共享的一筆非常寶貴的財(cái)富。

回憶這些廢寢忘食的日子,有苦也有歡樂。在開始階段基礎(chǔ)知識(shí)的不足成為一個(gè)非常大的問題。在很多基礎(chǔ)問題上走了不少彎路。等到漸漸步入正軌的時(shí)候,時(shí)間又所剩無幾。再加上因?yàn)榧夹g(shù)生疏,調(diào)試時(shí)因?yàn)閭€(gè)人的誤操作燒壞過不少芯片,造成工作無法順利繼續(xù)的情況也時(shí)有發(fā)生。每當(dāng)這時(shí),我們的工作氣氛不可避免地會(huì)很壓抑,然后經(jīng)過緊張的補(bǔ)救、尋求幫助之后,直到解決之時(shí),才終于喘了一口氣。而由此而來的幸福感,不親身經(jīng)歷過也是無從得知的。

快樂至上,享受過程,而不是結(jié)果。認(rèn)真對待每一個(gè)實(shí)驗(yàn),珍惜每一分一秒,學(xué)到最多的知識(shí)和方法,鍛煉自己的能力,這個(gè)是我們在本次課設(shè)上學(xué)到的最重要的東西,也是以后都將受益匪淺的!

參考文獻(xiàn)[1]Datasheet:MSP430F5438、AD9833、VCA810、OPA1632、UA741等[2]洪利等編著《MSP430單片機(jī)原理與應(yīng)用實(shí)例詳解》北京航空航天大學(xué)出版社ISBN:978-7-5124-0122-82010年7月[3]周靈彬任等編著《基于Proteus的電路與PCB設(shè)計(jì)》電子工業(yè)出版社ISBN:978-7-121-11614-82010年10月附錄電路圖總體電路圖:其中,DDS部分電路圖是:源碼清單voidmain(void){WDTCTL=WDTPW+WDTHOLD;//關(guān)閉看門狗//AD9833_SPI_PORT_Init();//output_init();Init();LCD_Init();Clear_LCD(Color_BK);_EINT();InitInterface();Init_I2C();voltage=0;while(1){__delay_cycles(2048000);if(FreqScanEn==1&&(Mode==0||Mode==1||Mode==2))//掃頻{FreqCoeff=(FreqCoeff+1)%99;dds();DrawFreq();}ScanKey();}}///////////////////////////////////////////////////////////////////////////////////////////////////////////externvoidInit_LCD(void);externunsignedintColor;//前景顏色externunsignedintColor_BK;//背景顏色voidInit_Port(void);voidInit_CLK(void);voidInit_Timer0_A5(void);voidInit_KeyPad(void);voidInitInterface(void);///////////////////////////////////////////////////////////////////////////////////////////////////////////#pragmavector=TIMER0_A0_VECTOR__interruptvoidTimer0_A0(void){P7OUT^=BUZZER;}//系統(tǒng)初始化voidInit(void){Init_CLK();Init_Port();Init_KeyPad();Init_Timer0_A5();}voidInit_KeyPad(void){KEY_PORT_REN=0xFF;KEY_PORT_OUT=0x00;}//***************************************************************************////Init_Port(void):設(shè)置IO端口////***************************************************************************//voidInit_Port(void){//P5DIR|=POWER;//主電源MAIN_POWER_ON;}//***************************************************************************////////函數(shù):Init_CLK(void)////功能:初始化主時(shí)鐘:MCLK=XT2////////***************************************************************************//voidInit_CLK(void){WDTCTL=WDTPW+WDTHOLD;//關(guān)看門狗P5SEL|=0x0C;//端口功能選擇振蕩器UCSCTL6&=~XT2OFF;//振蕩器使能UCSCTL3|=SELREF_2;//FLLref=REFOUCSCTL4|=SELA_2;//ACLK=REFO,SMCLK=DCO,MCLK=DCOP7SEL|=0x03;//端口選擇外部低頻晶振XT1//UCSCTL6&=~XT1OFF;//使能外部晶振UCSCTL6|=XCAP_3;//設(shè)置內(nèi)部負(fù)載電容UCSCTL3|=SELREF_2;//DCOref=REFO//UCSCTL4|=SELA_0;//ACLK=XT1__bis_SR_register(SCG0);//關(guān)閉FLL控制回路UCSCTL0=0x0000;//設(shè)置DCOx,MODxUCSCTL1=DCORSEL_7;//設(shè)置DCO振蕩范圍UCSCTL2=FLLD__1+FLL_FACTOR;//Fdco=(FLL_FACTOR+1)×FLLRef=(649+1)*32768=21.2992MHz__bic_SR_register(SCG0);//打開FLL控制回路__delay_cycles(1024000);do{UCSCTL7&=~(XT2OFFG+XT1LFOFFG+XT1HFOFFG+DCOFFG);//清除XT2,XT1,DCO錯(cuò)誤標(biāo)志SFRIFG1&=~OFIFG;}while(SFRIFG1&OFIFG);//檢測振蕩器錯(cuò)誤標(biāo)志UCSCTL6|=XT2DRIVE0+XT2DRIVE1;//XT2驅(qū)動(dòng)模式24~32MHzUCSCTL4|=SELS_5+SELM_5;//SMCLK=MCLK=XT2}//***************************************************************************////Init_TimerA0(void):設(shè)置TimerA0////************************************************************************

溫馨提示

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

評論

0/150

提交評論