引言
隨著電子技術(shù)的迅猛發(fā)展,電子設(shè)備如雨后春筍般出現(xiàn),給人們的生活各個(gè)方面都帶來(lái)了極大的改善。在各個(gè)領(lǐng)域都有函數(shù)信號(hào)發(fā)生器的身影,廣泛應(yīng)用于通信、工業(yè)、農(nóng)業(yè)、醫(yī)學(xué)、科研、無(wú)線電等領(lǐng)域。隨著各個(gè)行業(yè)逐漸提高了對(duì)信號(hào)源的要求[1],信號(hào)發(fā)生器慢慢地難以滿(mǎn)足人們的需求。
優(yōu)質(zhì)的信號(hào)發(fā)生器在實(shí)驗(yàn)研究中有著舉足輕重的地位。在實(shí)驗(yàn)室中,許多實(shí)驗(yàn)都與信號(hào)發(fā)生器緊密相關(guān)。一次實(shí)驗(yàn)?zāi)芊癯晒?,與信號(hào)源的性能有著很大的聯(lián)系。甚至在一些對(duì)信號(hào)源的要求較高的實(shí)驗(yàn)中,只要信號(hào)源有一點(diǎn)誤差,就可能會(huì)導(dǎo)致整個(gè)實(shí)驗(yàn)產(chǎn)生很大的偏差,最終就可能造成這次實(shí)驗(yàn)得到不正確的結(jié)論,甚至導(dǎo)致需要重新開(kāi)始實(shí)驗(yàn)。
因此,穩(wěn)定的函數(shù)信號(hào)發(fā)生器非常符合基本的實(shí)驗(yàn)需求。目前廣泛使用的是由數(shù)字電路構(gòu)成的新型函數(shù)信號(hào)發(fā)生器,此類(lèi)信號(hào)發(fā)生器精度可控,性能較于傳統(tǒng)信號(hào)發(fā)生器更加穩(wěn)定可靠。新型信號(hào)源采用DDS技術(shù),通過(guò)控制電路對(duì)輸出信號(hào)的頻率、幅度等參數(shù)進(jìn)行控制[2]。
隨著集成電路的迅速發(fā)展,單片機(jī)的體積變小,功能增多,單片機(jī)的設(shè)計(jì)成本和生產(chǎn)成本更低,所以其應(yīng)用范圍變得更加廣泛,一般功能的單片機(jī)已經(jīng)能滿(mǎn)足函數(shù)信號(hào)發(fā)生器基本的控制要求。在人機(jī)交互方面,新型信號(hào)發(fā)生器因?yàn)閱纹瑱C(jī)的使用也變得更加簡(jiǎn)單高效。這種價(jià)格便宜、功能齊全、運(yùn)算迅速的新型函數(shù)信號(hào)發(fā)生器,在實(shí)際應(yīng)用中能產(chǎn)生更高的經(jīng)濟(jì)效益。
本文首先介紹了該課題的背景和研究?jī)?nèi)容,接著比較了各方案的優(yōu)劣,提出信號(hào)發(fā)生器的總體設(shè)計(jì)方案,也介紹了DDS芯片的基本工作原理。繼續(xù)依次介紹了系統(tǒng)的硬件電路設(shè)計(jì)和軟件程序設(shè)計(jì)。最后,介紹了成品的調(diào)試過(guò)程和測(cè)試結(jié)果分析,并給出了結(jié)論和改進(jìn)計(jì)劃。
1? 課題背景意義及研究?jī)?nèi)容
1.1 課題背景及研究意義
此次畢業(yè)設(shè)計(jì)的課題是《信號(hào)發(fā)生器的設(shè)計(jì)》,是工程設(shè)計(jì)類(lèi)的課題。
當(dāng)今社會(huì),信息時(shí)代帶來(lái)的全面飛速發(fā)展,強(qiáng)力地推動(dòng)著各個(gè)領(lǐng)域的進(jìn)步,尤其是電子設(shè)備。在實(shí)驗(yàn)中,總是伴隨著參數(shù)測(cè)量的過(guò)程,而參考信號(hào)都由信號(hào)發(fā)生器來(lái)提供,是經(jīng)常使用的儀器。
由于社會(huì)發(fā)展進(jìn)程加快,許多實(shí)驗(yàn)對(duì)信號(hào)發(fā)生器的要求逐漸提高,不僅要求輸出波形有較高的精度,還要求能輸出多種波形,同時(shí)要避免復(fù)雜的操作,并且幅值和頻率及占空比都要可以調(diào)節(jié),還要求相位可調(diào)等功能。新型信號(hào)發(fā)生器既能符合不斷提高的市場(chǎng)需求,還能減小經(jīng)濟(jì)成本。傳統(tǒng)模擬信號(hào)發(fā)生器有著結(jié)構(gòu)簡(jiǎn)單,輸出頻率范圍寬的優(yōu)點(diǎn),但輸出信號(hào)單一,且不穩(wěn)定。當(dāng)對(duì)信號(hào)要求較高時(shí),就需要新型信號(hào)發(fā)生器,傳統(tǒng)模擬信號(hào)發(fā)生器已經(jīng)難以滿(mǎn)足實(shí)驗(yàn)測(cè)試要求。
因此傳統(tǒng)模擬信號(hào)發(fā)生器正在慢慢地退出歷史舞臺(tái)。而新型信號(hào)發(fā)生器具有精度高、穩(wěn)定度高、相位可調(diào)等優(yōu)越的性能,能夠滿(mǎn)足電子實(shí)驗(yàn)的高要求,因此飛速地發(fā)展著。
本次課題所設(shè)計(jì)的信號(hào)發(fā)生器,控制器使用的是單片機(jī),用DDS芯片產(chǎn)生三種頻率可調(diào)的波形信號(hào),加入數(shù)字電位器和運(yùn)算放大器來(lái)調(diào)節(jié)幅度。通過(guò)按鍵來(lái)設(shè)定輸出信號(hào)的相關(guān)參數(shù),并用LCD液晶屏顯示。能以較少的經(jīng)濟(jì)支出,設(shè)計(jì)出滿(mǎn)足基本的實(shí)驗(yàn)測(cè)試要求的信號(hào)發(fā)生器。
1.2 課題研究?jī)?nèi)容
設(shè)計(jì)信號(hào)發(fā)生器,輸出一定頻率范圍的正弦波、三角波和方波。
設(shè)計(jì)要求:
(1)輸出信號(hào)頻率范圍:10Hz-5MHz;
(2)輸出信號(hào)幅值范圍:0-10V;
(3)使用液晶屏顯示信號(hào)種類(lèi)、頻率及幅度。
2 ?設(shè)計(jì)方案選擇
2.1 系統(tǒng)控制芯片選擇
方案一:使用STC89C52單片機(jī)作為控制芯片。該單片機(jī)是8位單片機(jī),操作簡(jiǎn)單,外圍硬件電路也簡(jiǎn)單,高速,功耗低,有較強(qiáng)的抗干擾能力,并且價(jià)格低,因此在市場(chǎng)上被廣泛銷(xiāo)售。編程方式十分靈活,程序可通過(guò)通信串口直接下載,程序調(diào)試也十分方便。能滿(mǎn)足作為主控芯片的要求。
方案二:使用STM32系列微控制器,該系列是ARM Cortex-M內(nèi)核的32位微控制器,外設(shè)功能一流。程序方面,廠家提供了豐富的函數(shù)庫(kù),能勝任更加繁重的工作。相較于52系列單片機(jī),性能更加強(qiáng)大,但是,成本更高,電路設(shè)計(jì)和操作更復(fù)雜,編程的難度也更大,性?xún)r(jià)比也不高。
綜合以上方案,考慮到器件成本和開(kāi)發(fā)難度以及性能問(wèn)題,對(duì)于本課題而言,STC89C52單片機(jī)已經(jīng)能夠滿(mǎn)足作為主控芯片的要求。因此,控制芯片選擇為STC89C52單片機(jī)。
2.2 信號(hào)發(fā)生方式選擇
方案一:由分立元器件搭建而成的函數(shù)信號(hào)發(fā)生器,一般是單信號(hào)發(fā)生器,頻率較低,工作起來(lái)也不穩(wěn)定,且難以調(diào)試。
方案二:由集成芯片構(gòu)成的函數(shù)信號(hào)發(fā)生器,可產(chǎn)生較多類(lèi)型的信號(hào),頻率較高,也易于調(diào)試。例如MAX038芯片,精度好,但是輸出信號(hào)也難以達(dá)到很高的頻率。
方案三:由DDS芯片構(gòu)成的函數(shù)信號(hào)發(fā)生器,可生成多種類(lèi)型的波形信號(hào),通過(guò)程序控制頻率的方式也十分靈活,頻率上限高,產(chǎn)生的波形信號(hào)不失真,有較高的精度,但成本相對(duì)較高。
綜合以上方案,使用DDS芯片來(lái)產(chǎn)生信號(hào)是最好的選擇,用單片機(jī)控制DDS芯片也較為方便,因此選擇DSS芯片來(lái)生成信號(hào)。
2.3 系統(tǒng)整體設(shè)計(jì)方案
綜上所訴,系統(tǒng)整體設(shè)計(jì)方案最終確定為:以STC89C52單片機(jī)為系統(tǒng)主控芯片,使用DDS芯片來(lái)生成信號(hào),以獨(dú)立按鍵和LCD1602液晶顯示屏來(lái)做人機(jī)交互,調(diào)節(jié)信號(hào)頻率和幅度及顯示相關(guān)參數(shù)。整體硬件電路設(shè)計(jì)共5個(gè)模塊:?jiǎn)纹瑱C(jī)最小系統(tǒng)、DDS信號(hào)發(fā)生模塊、電源模塊、功能按鍵模塊、液晶顯示模塊。其中最小系統(tǒng)主要包括STC89C52單片機(jī)、晶振電路、復(fù)位電路和下載口等部分,處理按鍵輸入和發(fā)送控制指令及數(shù)據(jù);DDS信號(hào)發(fā)生模塊有AD9833芯片、有源晶振、數(shù)字電位器、運(yùn)算放大器等部件,能產(chǎn)生設(shè)定頻率和幅度的信號(hào);電源模塊由濾波電容、自鎖開(kāi)關(guān)和LED指示燈組成,能提供5V直流電,供電給各模塊;功能按鍵模塊由5個(gè)獨(dú)立按鍵組成,負(fù)責(zé)調(diào)節(jié)信號(hào)頻率和幅度以及信號(hào)波形種類(lèi);液晶顯示模塊由LCD1602顯示屏和可調(diào)
組成,能顯示相關(guān)的參數(shù)信息。總體系統(tǒng)框圖如圖2-1所示。
3? 系統(tǒng)硬件設(shè)計(jì)
3.1 單片機(jī)最小系統(tǒng)
3.1.1單片機(jī)STC89C52
STC89C52系列單片機(jī)是國(guó)產(chǎn)的單片機(jī),高速,功耗較低,抗干擾能力也很強(qiáng),性能穩(wěn)定,價(jià)格便宜,有著相當(dāng)廣泛的應(yīng)用。
該單片機(jī)共有四組準(zhǔn)雙向I/O口,分別是P1、P2、P3、P4。MCU包含8KB程序存儲(chǔ)器(Flash)、512字節(jié)數(shù)據(jù)存儲(chǔ)器(SRAM)、3個(gè)定時(shí)器/計(jì)數(shù)器、8個(gè)中斷源。
3.1.2單片機(jī)最小系統(tǒng)
單片機(jī)最小系統(tǒng)由單片機(jī)、晶振電路、復(fù)位電路、下載口組成,其中使用的單片機(jī)是STC89C52,該單片機(jī)是8位的,能提供簡(jiǎn)單、靈活、有效的解決途徑給較復(fù)雜的控制應(yīng)用系統(tǒng)。
晶振電路由一個(gè)12MHz晶振和兩個(gè)30pF瓷片電容組成。晶振并聯(lián)在單片機(jī)的18腳與19腳,再分別串聯(lián)一個(gè)瓷片電容接到地端就構(gòu)成了晶振電路。電容的主要作用是使晶振更加容易起振,稱(chēng)為諧振電容[3]。單片機(jī)STC89C52工作所需要的穩(wěn)定時(shí)鐘是由此電路提供的。
MCS-51單片機(jī)通常采用上電復(fù)位和按鍵復(fù)位這兩種復(fù)位方式[4]。復(fù)位電路是由一個(gè)10μF電解電容和一個(gè)4.7KΩ電阻及一個(gè)按鍵組成的。在單片機(jī)的RST復(fù)位引腳串聯(lián)一個(gè)電容至電源端,再串聯(lián)一個(gè)電阻接到地端,接著把一個(gè)按鍵并聯(lián)在電容兩端,這樣復(fù)位電路就連接好了。52單片機(jī)的復(fù)位引腳RST只要能維持24個(gè)時(shí)鐘周期的高電平信號(hào)即可完成復(fù)位。此電路使STC89C52單片機(jī)開(kāi)機(jī)自動(dòng)復(fù)位和按下按鍵手動(dòng)復(fù)位。
3.2 DDS信號(hào)發(fā)生模塊
DDS信號(hào)發(fā)生模塊的組成主要有AD9833芯片和MCP41010數(shù)字電位器以及AD8065運(yùn)算放大器。
3.2.1AD9833芯片介紹
AD9833芯片是一種可通過(guò)程序控制的DDS芯片,需要由外部晶振來(lái)提供工作時(shí)鐘,能夠輸出的波形信號(hào)有正弦波信號(hào)、三角波信號(hào)和方波信號(hào)[5]??赏ㄟ^(guò)程序來(lái)調(diào)節(jié)輸出波形信號(hào)的頻率,十分方便。通過(guò)串行接口將數(shù)據(jù)寫(xiě)入AD9833芯片,該串行接口能與微控制器接口標(biāo)準(zhǔn)兼容[6]。
3.2.2AD9833芯片工作原理
正弦波信號(hào)一般是用幅度來(lái)表示,即 。由于正弦波曲線不是線性的,除非一段一段地生成,否則很難構(gòu)建。但是,正弦波相位角度的變化是線性的。也就是說(shuō),在單位時(shí)間內(nèi),正弦波相位角度的變化量是一個(gè)固定不變的值。角速率跟信號(hào)頻率之間存在一定的數(shù)學(xué)關(guān)系,即 。正弦波波形和相位關(guān)系如圖3-2所示。
已知正弦波的相位變化是線性的[7],在確定了時(shí)間間隔的情況下,就可以確定該時(shí)間間隔內(nèi)的相位變化情況。
由 ,可導(dǎo)出 ,再導(dǎo)出 。再將時(shí)間間隔替換為時(shí)鐘頻率,即 ,最后導(dǎo)出 ,AD9833根據(jù)這個(gè)簡(jiǎn)單公式來(lái)構(gòu)建輸出信號(hào)頻率。
3.2.3AD9833芯片結(jié)構(gòu)與功能
芯片AD9833的內(nèi)部主要包括了電壓調(diào)整器、頻率寄存器和相位寄存器、相位累加器、正弦存儲(chǔ)器(SIN ROM)、數(shù)模轉(zhuǎn)換器(DAC)等電路[8]。AD9833功能框圖如圖3-3所示。
AD9833芯片的主要部件是相位累加器,存在頻率寄存器中的頻率控制字送到相位累加器進(jìn)行處理后,又由相位累加器送到正弦存儲(chǔ)器中[9]。正弦存儲(chǔ)器中儲(chǔ)存了完整的1個(gè)周期內(nèi)的正弦波信號(hào)幅度信息,每一個(gè)信息都與0°-360°相位角度內(nèi)的正弦波信號(hào)的每個(gè)點(diǎn)相對(duì)應(yīng)[10]。正弦存儲(chǔ)器把輸入的相位信息對(duì)應(yīng)轉(zhuǎn)換成正弦波信號(hào)幅度的數(shù)字量,再送到DAC轉(zhuǎn)換成模擬量后輸出。這一過(guò)程經(jīng)過(guò)了 個(gè)MCLK的時(shí)間,正弦存儲(chǔ)器完成了所有相位點(diǎn)的轉(zhuǎn)換,一個(gè)周期的正弦波信號(hào)這樣便產(chǎn)生了。輸出正弦波頻率為: 。其中, 為頻率控制字,由程序計(jì)算得出,其范圍為 。 是外部晶振的頻率值,通常是25 。
AD9833采用10引腳MSOP封裝。引腳配置圖如圖3-4所示。
根據(jù)AD9833芯片的引腳配置,設(shè)計(jì)的AD9833芯片外圍電路如圖3-5所示。
在AD9833外圍電路中,最重要的是防止信號(hào)干擾。
電壓輸入到COMP引腳,為了濾除電壓上的高頻噪聲,串聯(lián)了一個(gè)0.1μF去耦電容,使得AD9833的供電電壓更加穩(wěn)定,以起到保護(hù)芯片的作用。
VDD引腳是芯片模擬和數(shù)字接口部分的正電源。連接一個(gè)0.1μF和一個(gè)10μF的去耦電容[11],兩個(gè)電容配合使用能更好地濾除干擾噪聲。
芯片的數(shù)字部分供電為2.5V。當(dāng)芯片VDD上的電壓達(dá)到2.7V時(shí),芯片中的電壓調(diào)整器將會(huì)產(chǎn)生2.5V的穩(wěn)定電壓供給芯片的數(shù)字電路。本設(shè)計(jì)中,VDD引腳上的電壓為5V,已經(jīng)超過(guò)了2.7V,因此芯片CAP/2.5V引腳不必再額外供電,為了濾除干擾噪聲,只連接了一個(gè)0.1μF和一個(gè)10μF的去耦電容。
芯片的工作時(shí)鐘從MCLK引腳輸入,選用的是25MHz的有源晶振,需要為該有源晶振供電,供電電壓為5V。
芯片的SDATA、SCLK、FSYNC三個(gè)引腳都與數(shù)據(jù)傳輸和控制有關(guān),串行數(shù)據(jù)從SDATA端輸入,串行時(shí)鐘從SCLK端輸入[12],F(xiàn)SYNC是傳輸控制端,分別連接到單片機(jī)的P1口的P1.0、P1.1和P1.2,用單片機(jī)發(fā)送控制數(shù)據(jù)到AD9833芯片中,以產(chǎn)生不同頻率和不同種類(lèi)的波形信號(hào)。
3.2.4DDS模塊整體設(shè)計(jì)
由于AD9833芯片輸出的信號(hào)幅度固定不可調(diào)節(jié),且峰峰值只有600mV。因此在AD9833芯片信號(hào)輸出端連接了一個(gè)數(shù)字電位器MCP41010和一個(gè)運(yùn)算放大器AD8065。運(yùn)放能夠放大輸出信號(hào)的幅度,設(shè)計(jì)為同相比例放大器,放大倍數(shù)由 計(jì)算得出。本設(shè)計(jì)中, 為5.1KΩ, 為820Ω,計(jì)算得出該同相比例放大器的放大倍數(shù)為7.2倍,理論上最終輸出的電壓能達(dá)到4.3V。
通過(guò)單片機(jī)程序控制來(lái)調(diào)節(jié)數(shù)字電位器的抽頭PW到電阻兩端PA和PB的電阻比例來(lái)調(diào)整輸出信號(hào)的幅度。AD9833芯片的后級(jí)電路如圖3-6所示。
3.3 電源模塊
從電源輸入口輸入5V直流供電。自鎖開(kāi)關(guān)控制電源通斷,按下時(shí)導(dǎo)通,彈起時(shí)斷開(kāi)。兩個(gè)電容起到濾波的作用,使供電電壓質(zhì)量更好。電源的工作指示燈用了一個(gè)發(fā)光二極管。電源電路如圖3-7所示。
3.4 功能按鍵模塊
功能按鍵由5個(gè)獨(dú)立按鍵組成。K1為數(shù)值加,K2為數(shù)值減,K3為頻率/幅度調(diào)節(jié)切換,配合K1和K2可分別調(diào)節(jié)頻率或幅度的數(shù)值;K4為步進(jìn)值切換,按下可切換頻率步進(jìn)值;K5為波形切換,按下可切換輸出波形信號(hào)的種類(lèi)。按鍵占用了單片機(jī)P3口的P3.2~P3.6。功能按鍵電路如圖3-8所示。
3.5 液晶顯示模塊
顯示模塊主要用LCD1602液晶屏來(lái)顯示信號(hào)參數(shù)信息,該液晶屏是一種點(diǎn)陣式LCD顯示屏,一般用于字母和數(shù)字的顯示,具有兩行顯示,每行能顯示16個(gè)字符,共有16×2個(gè)字符顯示功能,能顯示較豐富的信息,價(jià)格比較便宜,性?xún)r(jià)比高,因此被廣泛應(yīng)用于單片機(jī)電路中。
LCD1602液晶屏的工作電壓為4.5V~5.5V。LCD1602模塊一共有16個(gè)引腳接口,其中,數(shù)據(jù)/命令選擇端RS,讀/寫(xiě)選擇端R/W和使能端E三個(gè)主要控制端口,分別連接到了單片機(jī)P2口的P2.5、P2.6和P2.7。8位數(shù)據(jù)總線連接到了單片機(jī)的P0口,值得注意的是,當(dāng)單片機(jī)的P0口作為I/O口使用時(shí),必須串聯(lián)一個(gè)上拉電阻,以提高單片機(jī)P0口的驅(qū)動(dòng)能力。第3引腳VO是LCD1602的對(duì)比度調(diào)整端,調(diào)整該引腳上的電壓可以調(diào)節(jié)LCD1602的對(duì)比度,當(dāng)接到VCC時(shí)對(duì)比度最弱,接到GND時(shí)對(duì)比度最高,而對(duì)比度太高就會(huì)產(chǎn)生“鬼影”[13],因此需要將電壓調(diào)整到一個(gè)合適的值。串聯(lián)了一個(gè)10K的可調(diào)電位器進(jìn)行對(duì)比度的調(diào)節(jié),使顯示清晰。液晶顯示電路如圖3-9所示。
4? 系統(tǒng)軟件設(shè)計(jì)
4.1 程序語(yǔ)言及軟件開(kāi)發(fā)環(huán)境
此次課題制作要使用軟件編程,因此需要對(duì)程序語(yǔ)言和開(kāi)發(fā)環(huán)境進(jìn)行選擇。程序語(yǔ)言方面選擇的是C語(yǔ)言,該語(yǔ)言是一門(mén)通用的程序設(shè)計(jì)語(yǔ)言,是面向過(guò)程的語(yǔ)言,兼具了匯編語(yǔ)言和高級(jí)語(yǔ)言的特點(diǎn),更加地接近系統(tǒng)底層,對(duì)于單片機(jī)來(lái)說(shuō),該語(yǔ)言?xún)?yōu)勢(shì)較大,層次鮮明,可以按照模塊化的方式編寫(xiě)程序代碼,模塊化編程可使程序調(diào)試變得便捷。在數(shù)據(jù)處理方面也十分強(qiáng)大,可使用多種數(shù)據(jù)類(lèi)型和豐富的運(yùn)算符,可以輕松構(gòu)建多種不同的數(shù)據(jù)結(jié)構(gòu),通過(guò)指針可以直接尋址和操作硬件,因此C語(yǔ)言非常適合用來(lái)開(kāi)發(fā)單片機(jī)控制程序。
在開(kāi)發(fā)環(huán)境方面,選用的是Keil-C51,是一個(gè)高度集成的開(kāi)發(fā)軟件,集成了代碼編輯器和C語(yǔ)言解釋器,無(wú)需做很多的環(huán)境配置工作,便可以直接使用,進(jìn)行C語(yǔ)言編程。該軟件的使用也并不繁瑣,只需要幾個(gè)簡(jiǎn)單的操作便可以生成hex文件為硬件服務(wù)。同時(shí)自帶的仿真器功能強(qiáng)大,可用于調(diào)試程序代碼。
4.2 系統(tǒng)總體程序流程
總程序設(shè)計(jì)主要分為main主函數(shù),AD9833信號(hào)發(fā)生函數(shù),LCD1602顯示函數(shù)這三個(gè)函數(shù)模塊。系統(tǒng)程序流程圖如圖4-1所示。
整個(gè)系統(tǒng)流程為:電源打開(kāi)后,單片機(jī)將進(jìn)行系統(tǒng)初始化,同時(shí)初始化AD9833芯片與LCD1602顯示屏,此時(shí)DDS模塊將會(huì)產(chǎn)生默認(rèn)設(shè)定的頻率和幅度的波形信號(hào)。然后程序進(jìn)行按鍵掃描,檢測(cè)是否按下了按鍵,如果按下某個(gè)按鍵,單片機(jī)會(huì)進(jìn)行處理,控制LCD1602顯示出按鍵操作,并發(fā)送數(shù)據(jù)和命令給DDS模塊,控制AD9833芯片產(chǎn)生按鍵設(shè)定的頻率和幅度的波形信號(hào)。
5? 系統(tǒng)調(diào)試與測(cè)試
繪制好PCB,完成制板,焊接好電路后,進(jìn)行調(diào)試。
整體系統(tǒng)采用5V直流電源,用移動(dòng)電源給電路板供5V直流電,按下開(kāi)關(guān),觀察到電源指示燈亮起,說(shuō)明電源模塊沒(méi)有問(wèn)題。將萬(wàn)用表的兩表筆搭在單片機(jī)的20腳GND和40腳VCC進(jìn)行測(cè)量,測(cè)得電壓為4.5V;測(cè)量LCD1602的1腳GND和2腳VCC,測(cè)得電壓為4.55V;測(cè)量AD9833模塊的VCC和GND,測(cè)得電壓為4.6V,至此,說(shuō)明電路板各模塊的供電均沒(méi)有問(wèn)題,可以進(jìn)行進(jìn)一步的測(cè)試。
程序的編寫(xiě)使用Keil-C51軟件完成,編譯通過(guò)后,用下載器將單片機(jī)跟電腦連接,通過(guò)STC-ISP燒錄軟件將程序燒錄到單片機(jī)中。進(jìn)行按鍵功能測(cè)試和顯示屏測(cè)試,一開(kāi)始,發(fā)現(xiàn)沒(méi)有字符顯示,按下各按鍵也不能顯示出字符。對(duì)原理圖進(jìn)行檢查后,沒(méi)有發(fā)現(xiàn)電路問(wèn)題。便懷疑是程序問(wèn)題,檢查程序后,原來(lái)是顯示程序的三個(gè)控制端口的定義反了,調(diào)整過(guò)來(lái)后,重新編譯并生成新的hex文件,再下載后繼續(xù)測(cè)試按鍵和顯示屏,成功地顯示出了參數(shù)信息,按下不同按鍵,在顯示屏上也正確地反饋顯示了。至此,說(shuō)明按鍵功能和顯示程序沒(méi)有問(wèn)題。
繼續(xù)進(jìn)行下一步的示波器實(shí)測(cè)輸出信號(hào),主要是測(cè)量信號(hào)的頻率和峰峰值。
測(cè)試儀器:GDS-1102B數(shù)字示波器(100MHz,1GS/s)、TFG6920A函數(shù)信號(hào)發(fā)生器(20MHz)。
電路板上除了最后的運(yùn)放放大信號(hào)輸出外,設(shè)計(jì)還預(yù)留了DDS芯片的原始信號(hào)輸出,以便DDS芯片的測(cè)試。原始信號(hào)的幅度是不可調(diào)節(jié)的,正弦波和三角波的理論峰峰值為600mV,方波的理論峰峰值為5V。
DDS模塊輸出的原始信號(hào),是AD9833芯片直接輸出的沒(méi)有經(jīng)過(guò)后級(jí)運(yùn)算放大器放大的信號(hào)。原始信號(hào)經(jīng)示波器實(shí)測(cè),結(jié)果為:正弦波、三角波的峰峰值約為600mV,方波的峰峰值約為5V,如圖5-1、圖5-2、圖5-3所示。
用示波器實(shí)際測(cè)量了輸出正弦波放大信號(hào)的頻率和正弦波頻率為1KHz時(shí)的幅度,下表整理了測(cè)量結(jié)果,同時(shí)也計(jì)算出了實(shí)測(cè)值與理論值的差值,給出了不同頻率和不同幅值的誤差,實(shí)測(cè)分析結(jié)果如表5-1所示。
表5-1 頻率/幅值實(shí)測(cè)分析 | |||||
理論頻率(Hz) | 實(shí)測(cè)頻率(Hz) | 頻率誤差(Hz) | 理論幅度(V) | 實(shí)測(cè)幅度(V) | 幅度誤差(V) |
10 | 9.960 | 0.04 | 0.1 | 0.088 | 0.012 |
100 | 99.95 | 0.05 | 0.5 | 0.468 | 0.032 |
1000 | 1000 | 0 | 1 | 0.944 | 0.056 |
10000 | 1002000 | 20.00 | 1.5 | 1.42 | 0.08 |
100000 | 100000 | 0 | 2 | 1.88 | 0.12 |
1000000 | 1000000 | 0 | 2.5 | 2.36 | 0.14 |
2000000 | 2004000 | 4000 | 3 | 2.86 | 0.14 |
3000000 | 3026000 | 26000 | 3.5 | 3.34 | 0.16 |
4000000 | 4019000 | 19000 | 4 | 3.8 | 0.2 |
5000000 | 5034000 | 34000 | 4.4 | 4.12 | 0.28 |
測(cè)試結(jié)果分析:
波形信號(hào)輸出不同的頻率時(shí),幅值誤差并不是一定的。隨著輸出的頻率升高,幅度誤差也在變大。總體來(lái)說(shuō),方波信號(hào)的幅度誤差最小,正弦波信號(hào)的幅度誤差比方波稍大,三角波信號(hào)的幅度誤差最大。這與AD9833芯片的結(jié)構(gòu)有關(guān),DDS芯片輸出高頻信號(hào)時(shí)會(huì)導(dǎo)致信號(hào)幅度衰減,并且輸出信號(hào)頻率越高,幅度衰減程度會(huì)越大。
從示波器實(shí)測(cè)信號(hào)波形來(lái)看:輸出正弦波信號(hào)可以達(dá)到很高的頻率,并且信號(hào)質(zhì)量很好,不失真。輸出三角波信號(hào)頻率較高,在頻率為1MHz時(shí),信號(hào)質(zhì)量很好,不失真,在頻率為2MHz時(shí),信號(hào)已經(jīng)失真,波形類(lèi)似于正弦波了。輸出方波信號(hào)頻率相較于其他兩種信號(hào)低些,方波信號(hào)在1MHz頻率以下,信號(hào)質(zhì)量較好,不失真,頻率達(dá)到1MHz時(shí),方波的上升沿和下降沿開(kāi)始產(chǎn)生弧度,不是方方正正的波形了。測(cè)試TFG6920A函數(shù)信號(hào)發(fā)生器輸出的信號(hào),發(fā)現(xiàn)它生成方波信號(hào)的頻率達(dá)1MHz時(shí)也會(huì)失真,在上升沿和下降沿產(chǎn)生弧度。多方面查找資料分析后,這種現(xiàn)象是DDS信號(hào)源的普遍現(xiàn)象,受到DDS內(nèi)部的數(shù)模轉(zhuǎn)換器和波形存儲(chǔ)器的速度限制。在達(dá)到一定頻率時(shí),都難以給生成正常的波形信號(hào),都會(huì)產(chǎn)生一定程度的變形或失真。
部分程序:
#include "reg51.H"
#include "ad9833.h"
#include "LCD1602.h"
#define? MAX_VOLT 44
sbit key1 = P3^2;
sbit key2 = P3^3;
sbit key3 = P3^4;
sbit key4 = P3^5;
sbit key5 = P3^6;
void DelayMs( unsigned int ms)
{
unsigned int i,j;
for (i = 0; i < ms; i++)
for(j=0;j<125;j++);
}
void main()
{
unsigned long FreqData=100000;
unsigned int volt=MAX_VOLT;
unsigned int ratio;
float????? ratioF;
unsigned int AmpData=255;
unsigned char WaveModle=0;
unsigned char SetModle=0;
unsigned long Fstep=100000;
ratio=2550/MAX_VOLT;? //5.7= 255/44; ratio放大10倍了取整數(shù)
ratioF=6.12;//2550*(0.6/5)=306;306/50=6.12;方波增減0.1V幅度對(duì)應(yīng)的數(shù)字電位器調(diào)節(jié)量。
//9833輸出方波5V,正弦波是0.6V,要把方波調(diào)回到0.6V時(shí)需要數(shù)字電位器調(diào)節(jié)量是30.6。
RW_LCD=0;
E_LCD=0;
InitLCD();
DelayMs(100);
DispStrAt("S", 0, 0);DispDecSpaceAt(Fstep, 1, 0, 7);
DispStrAt("sinWave", 9, 0);
AD9833_WaveSeting(FreqData,0,SIN_WAVE,0 );
AD9833_AmpSet(AmpData);
DispDecSpaceAt(FreqData, 0, 1, 7);DispStrAt("HZ", 7, 1);
DispStrAt("am?? V", 10, 1);
DispDecShiftAt(volt, 12, 1, 1);
while(1)
{
DelayMs(50);
if(key1==0)? //頻率+ 幅度+
{
if(SetModle==1)
{
FreqData=FreqData+Fstep;
AD9833_WaveSeting(FreqData,0,WaveModle,0 );
DispDecSpaceAt(FreqData, 0, 1, 7);DispStrAt("HZ", 7, 1);
}
else? if(SetModle==0)
{
if(WaveModle==1)? //方波幅度模式
{
if(volt<50)
volt=volt+1;
else
volt=0;
AmpData=volt*ratioF/10;
AD9833_AmpSet(AmpData);
}
else? //正弦,三角波幅度模式
{
if(volt<MAX_VOLT)
volt=volt+1;
else
volt=0;
AmpData=volt*ratio/10;
AD9833_AmpSet(AmpData);
}
DispDecShiftAt(volt, 12, 1, 1);
}
while(key1==0);
}
else if(key2==0)? //頻率-? 幅度-
{
if(SetModle==1)
{
if(FreqData>Fstep)
FreqData=FreqData-Fstep;
AD9833_WaveSeting(FreqData,0,WaveModle,0 );
DispDecSpaceAt(FreqData, 0, 1, 7);DispStrAt("HZ", 7, 1);
}
else if(SetModle==0)
{
if(volt>0)
volt=volt-1;
else
{
if(WaveModle==1)volt=50;
else? volt=MAX_VOLT;
}
if(WaveModle==1) ?????? //方波幅度模式
{
AmpData=volt*ratioF/10;
AD9833_AmpSet(AmpData);
}
else? //正弦,三角波幅度模式
{
AmpData=volt*ratio/10;
AD9833_AmpSet(AmpData);
}
DispDecShiftAt(volt, 12, 1, 1);
}
while(key2==0);
}
需要完整的資料可在我的資源里下載,也可以加入我的紛傳圈子,里面有資源壓縮包的百度網(wǎng)盤(pán)下載地址及提取碼。
紛傳點(diǎn)擊用微信打開(kāi)即可,過(guò)程有點(diǎn)繁瑣請(qǐng)見(jiàn)諒。