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