基于DAC0832的DDS信號發生器報告+原理圖+PCB圖+程序代碼+proteus的isis的仿真等文件
本設計是一個以AT89C51單片機為核心基于DAC0832芯片的DDS信號發生器。信號發生器采用數字波形合成技術,通過硬件電路和軟件程序相結合,可輸出正弦波和三角波,波形的轉換可通過軟件控制。 本設計通過按鍵選擇波形,經過AT89C51單片機將數據輸出到DAC0832,由數字信號轉變為模擬信號,再通過運放器穩定地輸出到示波器上。 原理框圖如下:

DAC0832是采樣頻率為八位的D/A轉換器件,芯片內有兩級輸入寄存器,使DAC0832具備雙緩沖、單緩沖和直通三種輸入方式,以便適于各種電路的需要(如要求多路D/A異步輸入、同步轉換等)。D/A轉換結果采用電流形式輸出。要是需要相應的模擬信號,可通過一個高輸入阻抗的線性運算放大器實現這個供功能。運放的反饋電阻可通過RFB端引用片內固有電阻,還可以外接。該片邏輯輸入滿足TTL電壓電平范圍,可直接與TTL電路或微機電路相接。 下面是DAC0832引腳圖和內部結構電路圖 
DAC0832引腳功能說明: DI0~DI7:數據輸入線,TLL電平。 ILE:數據鎖存允許控制信號輸入線,高電平有效。 CS:片選信號輸入線,低電平有效。 WR1:為輸入寄存器的寫選通信號。 XFER:數據傳送控制信號輸入線,低電平有效。 WR2:為DAC寄存器寫選通輸入線。 Iout1:電流輸出線。當輸入全為1時Iout1最大。 Iout2: 電流輸出線。其值與Iout1之和為一常數。 Rfb:反饋信號輸入線,芯片內部有反饋電阻。 Vcc:電源輸入線 (+5v~+15v) Vref:基準電壓輸入線 (-10v~+10v) AGND:模擬地,摸擬信號和基準電源的參考地。 DGND:數字地,兩種地線在基準電源處共地比較好。 主控電路及數模轉換電路分別如下: 
主控電路

數模轉換電路
3軟件流程圖: 
4測試方法描述: 運用proteus軟件設計好電路圖,將程序代碼編譯好以后載入proteus中的AT89C51芯片進行仿真。 5測試數據: 仿真結果如下圖所示: 
三角波 
正弦波 6數據分析與結論: 經過proteus軟件的仿真,在示波器中完整地顯示出了三角波和正弦波,整個電路設計基本成功。
附件1:
整體電路圖:

附件2:
PCB圖:

單片機源程序如下:
- #include "reg51.h"
- unsigned char flag;
- bit time;
- unsigned char sin(unsigned char x)
- {
- unsigned char code sin_tab[]={125,128,131,134,138,141,144,147,150,153,156,159, 162,165,168,171,174,177,180,182,185,188,191,193,196,198,201,203, 206,208,211,213,215,217,219,221,223,225,227,229,231,232,234,235, 237,238,239,241,242,243,244,245,246,246,247,248,248,249,249,250, 250,250,250,250,250,250,250,249,249,248,248,247,246,246,245,244, 243,242,241,239,238,237,235,234,232,231,229,227,225,223,221,219, 217,215,213,211,208,206,203,201,198,196,193,191,188,185,182,180, 177,174,171,168,165,162,159,156,153,150,147,144,141,138,134,131, 128,125,122,119,116,112,109,106,103,100,97,94,91,88,85,82,79,76,73, 70,68,65,62,59,57,54,52,49,47,44,42,39,37,35,33,31,29,27,25,27,29,27,25,23,21, 19,18,16,15,13,12,11,9,8,7,6,5,4,4,3,2,2,1,1,0,0,0,0,0,0,0,0,1,1,2, 2,3,4,4,5,6,7,8,9,11,12,13,15,16,18,19,21,23,25,27,29,31,33,35,37, 39,42,44,47,49,52,54,57,59,62,65,68,70,73,76,79,82,85,88,97,94,97, 100,103,106,109,112,116,119,122}; return sin_tab[x]; }
- void DAC0832(unsigned char x)
- {
- P2=x;
- }
- void main()
- {
- unsigned char i;
- i=0;
- TMOD=0X02; //低半字節用來定義定時器0,用于控制輸出波的頻率
- TH0=256-40; //定時時間
- ET0=1; //定時中斷允許控制位,允許
- IT0=1; //外中斷0觸發方式控制位,低電平有效
- IT1=1;
- EX0=1; //外中斷0允許控制位,允許
- EX1=1;
- EA=1; //中斷允許總控制位,允許
- TR0=1; //啟動定時器工作
- flag=0; //開始時無輸出
-
- while(1)
- {
- if(time==1)
- {
- time=0;
- if(i>249)
- i=0;
- else
- i++;
- switch(flag)
- {
- case 0:DAC0832(0);
- break;
- case 1: //三角波
- if(i>125)
- DAC0832(250-i);
- else
- DAC0832(i);
- break;
- case 2: //正弦波
- DAC0832(sin(i));
- break;
- default: break;
- }
- }
- }
- }
- void time0()interrupt 1
- {time=1;}
- void int0() interrupt 0
- {flag=1;}
- void int1() interrupt 2
- {flag=2;}
復制代碼
0.png (10.34 KB, 下載次數: 37)
下載附件
2019-3-2 18:19 上傳
所有資料51hei提供下載:
基于DAC0832的DDS信號發生器報告+原理圖+PCB圖+程序代碼+proteus的isis的仿真等文件.zip
(179.51 KB, 下載次數: 131)
2019-3-2 16:37 上傳
點擊文件名下載附件
基于DAC0832的DDS信號發生器報告+原理圖+PCB圖+程序代碼+proteus的isis的仿真等文件 下載積分: 黑幣 -5
|