張機大連電子學校
信號發(fā)生器的設計
張機
大連電子學校
本文介紹了以單片機STC89C52為核心,基于數(shù)字頻率合成技術(shù)實現(xiàn)的信號發(fā)生器。該發(fā)生器有兩路正弦波、一路矩形波、鋸齒波和三角波輸出,信號的波形、幅值、頻率等參數(shù)可以通過按鍵設置,并在液晶顯示屏上實時顯示。
信號發(fā)生器;數(shù)字頻率合成技術(shù);單片機
1.數(shù)字頻率合成技術(shù)
數(shù)字頻率合成器由相位累加器、波形存儲器、D/A轉(zhuǎn)換器、濾波器等組成。它利用采樣定理將理想輸出波形進行量化處理,幅值以二進制形式存儲在ROM或RAM中,作為波形存儲器的查詢數(shù)據(jù)表。其中,相位累加器由加法器和相位寄存器構(gòu)成,二者位數(shù)相同[1]。由晶體振蕩器產(chǎn)生的時鐘信號使各部分電路同步工作。假設相位寄存器的初始值為θ,當一個時鐘信號到來時,相位累加器中的加法器將該初始值與頻率控制字K(設置)相加,結(jié)果保存在相位寄存器中。該數(shù)據(jù)有兩個用途,一是作為波形存儲器的查詢地址,得到該相位地址所對應波形的幅值數(shù)據(jù)。每當時鐘信號輸入時,相位寄存器就會輸出一個步進為Δθ的相位數(shù)據(jù)。二是把結(jié)果反饋到累加器輸入端。當輸入下一個時鐘信號時,可以將該結(jié)果與頻率控制字K相加。相位累加器在時鐘信號的作用下不停地重復上述步驟,直到存滿相位寄存器存儲空間發(fā)生溢出為止,則溢出頻率為數(shù)字頻率合成輸出信號的頻率。通過相位累加器輸出的波形存儲器的相位地址,可以得到所需波形離散的幅值編碼數(shù)據(jù),經(jīng)過D/A轉(zhuǎn)換器可以得到所設置波形對應的系列階梯波,再經(jīng)過低通濾波器得到所需波形[2]。
2.基于數(shù)字頻率合成技術(shù)的信號發(fā)生器設計
使用單片機控制數(shù)字頻率合成電路,輔助濾波、幅值調(diào)節(jié)等外圍電路,即可設計滿足要求的信號發(fā)生器,其優(yōu)點是產(chǎn)生的信號頻率分辨率高,精度高,信號質(zhì)量好。
3.系統(tǒng)總體結(jié)構(gòu)設計
信號發(fā)生器包括單片機控制、按鍵模塊、液晶顯示、信號波形產(chǎn)生、程控放大等五部分電路。其中,單片機控制部分是信號發(fā)生器系統(tǒng)的核心部分,用來控制液晶顯示、按鍵輸入模塊、信號波形產(chǎn)生以及程控放大等模塊。通過對單片機編程,控制按鍵輸入各種波形參數(shù)來控制其它電路。單片機可以將按鍵輸入的頻率控制字K寫到頻率合成器中,控制頻率合成器產(chǎn)生1Hz~10MHz頻率范圍的正弦波,然后輸入到程控放大器中獲得頻率和幅值均可調(diào)的正弦波。將正弦波輸入到高速比較器同相輸入端,通過電位器調(diào)節(jié)輸出電壓大小,即可得到占空比可調(diào)的矩形波。
1.單片機最小系統(tǒng)電路設計
單片機最小系統(tǒng)包括STC89C52單片機、時鐘電路和復位電路。時鐘電路選用12MHz的無源晶振,為單片機提供工作時間基準。當需要復位時,按下S1按鍵,復位端輸入高電平,并保持兩個機器周期,即可完成單片機的復位和初始化。
2.單元電路設計
(1)正弦波形產(chǎn)生電路
正弦波產(chǎn)生電路要求頻率從1~10MHz可以任意設定,分辨率為1Hz,并且幅值連續(xù)可調(diào),選擇頻率合成AD9850 IC即可以實現(xiàn)。AD9850與STC89C52單片機接口可以采用串行或并行方式,為了節(jié)省I/O端口,本設計采用串行方式。通過單片機控制頻率合成電路和程控放大電路,即可產(chǎn)生頻率為1Hz~10MHz的可調(diào)正弦波,且幅值在0.5V~3V區(qū)間內(nèi)連續(xù)可調(diào)。
(2)矩形波產(chǎn)生電路
頻率合成器產(chǎn)生的正弦波經(jīng)過高速比較器就可以得到矩形波,本設計中的AD9850內(nèi)部就含有高速比較器。將正弦波輸入到AD9850的高速比較器同相輸入端,10kΩ電位器的兩端與電源正端和地相連,中心抽頭接至AD9850高速比較器反相輸入端,調(diào)節(jié)電位器輸出電壓,就可以得到占空比可調(diào)的矩形波。
(3)三角波和鋸齒波產(chǎn)生電路
對單片機產(chǎn)生的數(shù)字信號進行數(shù)模轉(zhuǎn)換就可以得到三角波和鋸齒波,其中,數(shù)模轉(zhuǎn)換采用數(shù)字集成電路DAC0832。通過單片機程序控制,在DAC0832輸出端即可得到三角波和鋸齒波。該電路也可以用來產(chǎn)生占空比可調(diào)的矩形波。
(4)液晶顯示電路
選用LCD液晶顯示屏顯示設置的參數(shù)。通過單片機控制,顯示屏可以顯示設置的波形、頻率、幅值和占空比。本設計中選用LCD1602液晶顯示屏,它可以顯示2行16列32個字符。其中,第一行顯示波形和幅值信息,第二行顯示頻率和占空比。當選擇正弦波、三角波或者鋸齒波時,占空比一欄中顯示“——”。通過按鍵控制,可以切換設置參數(shù)。每次數(shù)據(jù)顯示時,要對液晶顯示電路進行初始化。
(5)按鍵電路
設計中另設4個按鍵S2、S3、S4、S5。S2用于控制波形、幅值、頻率和占空比設置界面;S3用于控制四種波形切換和幅值、頻率、占空比的設置;S4用于控制幅值、頻率、占空比進行數(shù)值加;S5用于控制幅值、頻率、占空比進行數(shù)值減。通過以上4個按鍵實現(xiàn)正弦波、方波、三角波和鋸齒波切換、正弦波頻率和幅值可調(diào)、方波占空比可調(diào)。
(6)電源電路
電源模塊包含整流、濾波和穩(wěn)壓三個部分,選擇了三端集成穩(wěn)壓電源LM7805和M7905。其中,LM7905穩(wěn)壓集成電路的極限輸入電壓是-35V,最低輸入電壓-8V,輸出電壓為-5V;LM7805最高輸入極限電壓36V,最低輸入電壓7V,輸出電壓+5V。設計中選用220/10V交流變壓器。
采用C語言對單片機進行編程。編程軟件使用Keil uVision4。程序設計流程圖和編程代碼略。
1.軟件控制系統(tǒng)總體設計
為了實現(xiàn)信號發(fā)生器的設計要求,在硬件設計完成的基礎上,要對軟件進行設計。軟件設計包括對按鍵模塊、LCD1602液晶顯示、AD9850控制程序和DAC0832控制程序設計。程序設計中,首先要對單片機進行程序初始化,對設計系統(tǒng)中各控制端口進行預設值,液晶屏顯示相關波形、頻率、幅值、占空比等信息。
2.按鍵模塊程序設計
為了判斷是否有按鍵按下,單片機定時器T0采用循環(huán)掃描按鍵檢測方式。若有按鍵按下時,就進行相應的參數(shù)設置,以實現(xiàn)所需的波形、頻率、幅值等參數(shù)設置。如上所述,不同按鍵對應不同的參數(shù)設置功能。每次檢測到有按鍵按下時,需要調(diào)用延時子程序,去抖動。
3.液晶顯示模塊程序設計
首先,要調(diào)用液晶自定義字庫,并設置好DDRAM地址。然后,根據(jù)程序中的數(shù)據(jù)設置,在第一行顯示數(shù)據(jù)首地址并設置循環(huán)量。在循環(huán)過程中不斷地取字符代碼直到終止;第二行的顯示過程同第一行。兩行顯示完畢后子程序結(jié)束。
[1]吳海超,邢斯瑞.基于AD9850的嵌入式信號源設計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2009,16:47-59.
[2]劉焱坤.基于STC89C52RC單片機跑步計時器設計[J].電子世界,2016,5:111.