王泓婷 金寶聲 陳昊
摘 要:該文利用單片機AT89C52和DAC0832模塊設(shè)計可以同時產(chǎn)生三角波、方波和正弦波的信號發(fā)生器。在單片機的輸出端口接DAC0832進(jìn)行D/A轉(zhuǎn)換,再通過運算放大器進(jìn)行波形調(diào)整,最后輸出波形接在波形顯示器上顯示。
關(guān)鍵詞:多路信號發(fā)生器 單片機 DAC0832
中圖分類號:TN911 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-098X(2015)03(c)-0044-01
1 系統(tǒng)總體設(shè)計
該文設(shè)計的信號發(fā)生器將數(shù)字信號以波形的形式顯示出來,系統(tǒng)主要包括三大模塊:AT89C52主控模塊、DAC0832數(shù)模轉(zhuǎn)換模塊和系統(tǒng)顯示模塊。AT89C52作為系統(tǒng)的控制中樞,依次決定三路波形信號的選通。通過由按鍵進(jìn)行波形的選擇從而更換頻率,DAC0832進(jìn)行數(shù)據(jù)鎖存,將數(shù)字信號轉(zhuǎn)換成模擬信號,然后經(jīng)由放大電路將波形信號在顯示器上顯示出來[1]。
2 波形設(shè)計
單片機不能產(chǎn)生平滑的正弦波,而是通過對正弦波的上的每個點取樣再用數(shù)模轉(zhuǎn)換模塊(DAC)輸出的,所以要輸出正弦波,首先要知道它在某個時刻它的值是多少,于是就要有相應(yīng)的正弦波表[2]。一般的DAC都是0N的輸出,所以還要把表中的值映射到0N的整數(shù)空間中,用的方法如是(1-1):
Y=sin(x)*N/2+N/2 (1-1)
然后再對Y取整。DAC0832數(shù)據(jù)端口給出的數(shù)據(jù)范圍是0~255,一共256個。前0~127表示是X軸上方的電壓值(也可能是下方),128~255是X軸下方的電壓值。因此我們可以得到數(shù)據(jù)端口的數(shù)值的具體量,即式(1-2):
value=128*SIN(360*X/255/360*2*3.14)+128 (1-2)
三角波產(chǎn)生原理:當(dāng)電壓隨時間線性增加到一定時間又線性降低時,就形成了三角波。單片機可以輸出的數(shù)最小為0,最大為255。當(dāng)輸出的值從00000000B線性增加到11111111B,然后從11111111B減小到00000000B時,就可以產(chǎn)生三角波。
方波產(chǎn)生原理:當(dāng)單片機輸出從00000000B直接增加到11111111B時,輸出的電壓就從低電平變到高電平了。單片機的執(zhí)行速度很快,于是我們可以將高電平和低電平各保持一段時間,這樣就形成了方波。
3 頻率設(shè)計
設(shè)計通過定時器來控制波形的頻率,通過輸出兩點之間的延時功能來實現(xiàn)調(diào)頻的功能。例如當(dāng)單片機的晶振頻率為24MHZ時,單片機的機器周期為0.5us。對于正弦波,如果需要產(chǎn)生10Hz的正弦波,由于正弦波的取點個數(shù)為256個,所以每個點需要的時間為1/10/256秒,選用定時器/計數(shù)器T0的方式1來實現(xiàn),則計數(shù)器初值X為:
X=65536(1/10/256*/0.5) (1-3)
4 波形輸出
波形要求:正弦波,輸出電壓值為-5V—+5V,初始頻率為10Hz,頻率最大值為100Hz,頻率調(diào)節(jié)步進(jìn)值為10Hz。三角波,輸出電壓值為-5V—+5V,初始頻率為50Hz,頻率最大值為500Hz,頻率調(diào)節(jié)步進(jìn)值為50Hz。方波,輸出電壓值為-5V—+5V,初始頻率為200Hz,頻率最大值為2KHZ,頻率調(diào)節(jié)的步進(jìn)值為200Hz。波形輸出時,各種波形的起點,不一定是0,可以是不同值,三個信號的起點也可以分別指定。
圖1為基于AT89C52單片機的信號發(fā)生器效果圖,其中方波頻率為200Hz,三角波頻率為150Hz,正弦波頻率為40Hz。
5 結(jié)論
將AT89C52單片機和DAC0832模塊結(jié)合,設(shè)計三角波、方波和正弦波的信號發(fā)生器。通過對AT89C52單片機和DAC0832的分析,設(shè)計D/A轉(zhuǎn)換電路和按鍵電路,通過軟件設(shè)計波形產(chǎn)生程序,最終所設(shè)計的信號發(fā)生器可以產(chǎn)生三角波、方波和正弦波三種波形。
參考文獻(xiàn)
[1] 張占強,孟克其勞.基于Proteus的多波形信號發(fā)生器仿真設(shè)計[J].電子測量技術(shù),2013,36(3):15-19.
[2] 陳輝,陳梅,杜靜,等.基于AT89C51單片機波形發(fā)生器的Proteus設(shè)計[J].自動化與儀表技術(shù),2012(3):51-53.