DA轉換實驗報告_第1頁
DA轉換實驗報告_第2頁
DA轉換實驗報告_第3頁
DA轉換實驗報告_第4頁
DA轉換實驗報告_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 D/A轉換實驗報告 組員: 田亞峰 杜亞亞 摘要此次設計實驗是以AT89C51、DAC0832、741為核心,并加以其他輔助電路來實驗D/A轉換,其中主要是利用單片機來控制從數字量到模擬量的整個轉換。先是從鍵盤輸入數字量到單片機,再從單片機輸出到DAC0832,經D/A轉換后輸出與該數字量大小對應的模擬電壓,并用LED數碼管顯示出來輸入的數字量值。目錄1.方案設計及論證11.1理論分析11.2單片機選擇11.3鍵盤設計21.4 D/A轉換選擇22.硬件設計22.1單片機模塊22.2 D/A轉換模塊33.軟件設計54.仿真驗證及調試54.1調試方法54.2性能測試儀器64.3實驗數據64.4誤

2、差分析65.設計總結及體會7附錄(一):實物圖9附錄(二)軟件程序91. 方案設計及論證1.1理論分析 根據本次設計任務的要求,由單片機模塊、D/A轉換模塊、反相比例加法運算電路構成。系統(tǒng)框圖如下:圖1 系統(tǒng)框圖1.2單片機選擇方案一:選用AT89C51方案二:選用AT89C52論證:1)AT89C52的程序空間為8K 比AT89C51的空間大2)AT89C52多了個T2定時器,所以比89C51多幾個寄存器 因此選用AT89C52.1.3鍵盤設計方案一:采用獨立式鍵盤方案二:采用矩陣式鍵盤論證:由于獨立式鍵盤占用較多的I/O線,因此選用4×4矩陣式鍵盤輸入,以保證10個數全部完整輸入

3、,節(jié)省I/O端口資源。1.4 D/A轉換選擇此次設計選用DAC0832,它是由一個八位輸入鎖存器、一個8位D/A鎖存器和一個8位D/A轉換器三個部分組成。D/A轉換器將輸入的數字量轉換為模擬量輸出,數字量是由若干數位構成的,就是把每一位上的代碼按照權值轉換為對應的模擬量,再把各位所對應的模擬量相加,所得到各位模擬量的和便是數字量所對應的模擬量。2.硬件設計2.1單片機模塊89C51單片機本身的電源電壓是5v,有兩種低功耗方式:待機方式和掉電方式。在掉電狀態(tài)下,其耗電電流為3mA,在掉電方式下提供約50mA的電流。80C51單片機是8位單片機,速度較慢,且不能在線編程。在單片機的外部加一個振蕩電

4、路,這個電路有晶振和兩個電容組成,晶振兩端分別接到兩個電容的一端,兩個電容的另一端都要接地。這兩個電容串聯的容量就是就等于負載電容,這兩個電容選用33PF的。在P0端口接一個上拉電阻,增加高電平驅動能力。P0口輸出七段碼,P2.0、P2.1、P2.2、P2.3口輸出位選碼。圖2 單片機及外部電路2.2 D/A轉換模塊 本次設計的D/A轉換電路倒T電阻網絡,當數字量從單片機輸出到轉換器后,經過基準電壓VREF激勵內部的倒T形電阻網絡,其輸出是模擬電流,為了將電流轉換成電壓信號,外接運算放大器,反饋電阻為片內電阻 。 圖3 功能框圖一級運放得到單極性輸出電壓,二級運放構成反相比例加法運算電路。 圖

5、4 T形電阻網絡D/A轉換器 由上式可見,輸出的模擬量 與輸入的數字量( ) 成正比,這就實現了從數字量到模擬量的轉換。 3.軟件設計開始系統(tǒng)軟件流程圖如下圖,其中主要包含這三部分,即鍵盤輸入、數碼管顯示、DA轉換、。系統(tǒng)初始化鍵盤輸入單片機數碼管顯示D/A轉換輸出 圖5 流程圖 鍵盤輸入:通過行、列確定一個數。 數碼管顯示:通過P0和P2端口分別進行位選和段選。4.仿真驗證及調試4.1調試方法步驟:1)鍵盤鍵入數字量;2) 鍵入不同值,按12鍵轉換以后讀出電壓表表上的數值。圖6 初始值圖7 中間顯示值4.2性能測試儀器直流電源 數字萬用表4.3實驗數據 表1 數據表12345678910數碼

6、管顯示0.000.501.001.552.003.003.504.004.505.00 實測0.000.490.991.541.983.023.524.024.510.00電壓表顯示0.000.491.001.541.992.983.493.984.430.004.4誤差分析在實際測量測量時有誤差存在,誤差允許的范圍是-0.02V+0.02V。造成誤差的原因有以下幾點:1)D/A轉換器中元器件參數誤差;2)基準電壓不穩(wěn)定;3)運算放大器的零點漂移。 5.設計總結及體會 在收到任務時,根據要求從總體到部分來分析,最后到具體的器材使用,而且對每個組員合理分配任務。在設計時,對每個模塊設計多方案,從

7、中擇優(yōu)選用。硬件部分要注意所加電壓不能過大,否則會燒毀集成塊。實際電路焊接時,線路要盡量短、直,便于以后檢查。對于每一點要焊實,不能出現虛焊、短路。軟件設計要模塊化,語言要盡量簡潔程序應采用模塊化結構,程序代碼簡潔,編寫程序需要不斷的修改、整理、優(yōu)化,以使程序具有較少的代碼量,較高工作效率。這設計讓我們學到了很多知識,了解和掌握許多芯片的作用和功能。通過小組成員的共同努力實驗終于出來了,非常有成就感。也要感謝老師的悉心指導。附錄(一):實物圖圖1圖2附錄(二)軟件程序#include <reg51.h> #include <intrins.h> #define uint

8、 unsigned int #define uchar unsigned charsbit w_select1=P20;sbit w_select2=P21;sbit w_select3=P22;sbit w_select4=P23;sbit cs_1=P27;/unsigned long int a=0; uchar code table10 = 0xC0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90; /uchar code table10 = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d,

9、0x07, 0x7f, 0x6f; /* * 名稱 : Delay_1ms() * 功能 : 延時子程序,延時時間為 1ms * x * 輸入 : x (延時一毫秒的個數) * 輸出 : 無 */ void Delay_1ms(uint x) uint i; uchar j; for(i = 0; i < x; i+) for(j = 0; j <= 148; j+); /* * 名稱: Keyscan() * 功能: P1外接4×4按鍵, 按照掃描法讀出鍵值* 輸出: 按鍵值015/如無鍵按下, 返回16*/ uchar Keyscan(void) uchar i, j

10、, temp, Buffer4 = 0xef, 0xdf, 0xbf, 0x7f; for(j = 0; j < 4; j+) /循環(huán)四次P1 = Bufferj; /在P1高四位分別輸出一個低電平temp = 0x01; /計劃先判斷P1.0位for(i = 0; i < 4; i+) /循環(huán)四次if(!(P1 & temp) /從P1低四位,截取1位return (i + j * 4); /返回取得的按鍵值 temp <<= 1; /判斷的位,左移一位 return 16; /呵呵,實質性的語句不過8行,就是這么簡練! void Display1(long

11、a)/顯示輸入鍵值對應的十進制數 w_select1=0; w_select2=0; w_select3=0; w_select4=0;cs_1=1;P0 = tablea/1000&0x7f; w_select4=1;Delay_1ms(10);w_select4=0;P0 = table(a/100)%10; w_select3=1;Delay_1ms(10);w_select3=0;P0 = table(a/10)%10; w_select2=1;Delay_1ms(10);w_select2=0;P0 = tablea%10;w_select1=1;Delay_1ms(10);

12、/* * 名稱: Display(uchar k) * 功能: 將參數分成十位、個位分別顯示* 輸入: k (鍵盤數值) * 輸出: P0口輸出七段碼,P2口輸出位選碼*/ void Display2(uchar h)P2 = 0; /?P0 = tableh / 10; P2 = 0x02; Delay_1ms(5); /?5ms?P2 = 0; /?P0 = tableh % 10; P2 = 0x01; Delay_1ms(5); /?5ms? /* * 名稱 : Main() * 功能 : 主函數 */ void Main(void) uchar Key_Value = 16, Key

13、_Temp1, Key_Temp2; /兩次讀出的鍵值 long Temp6,Temp7,Temp8,Temp9,Temp4=0,Temp5;int k,j=0, i=0,count;uchar A4;cs_1=1;P3=0x00;Temp4=P3;P0=0xff;while(1) /-以下讀入按鍵、消抖、等待按鍵釋放 P1 = 0xff; Key_Temp1 = Keyscan(); /先讀入按鍵if(Key_Temp1 != 16) /如果有鍵按下 Delay_1ms(5); /延時一下/Display(Key_Value); /可用顯示代替延時Key_Temp2 = Keyscan();

14、 /再讀一次按鍵if (Key_Temp1 = Key_Temp2) /必須是兩次相等Key_Value = Key_Temp1; /才保存下來,這就是消除抖動while(Keyscan()<16)Display2(Key_Value);if(Key_Value<10)&&(i<5)/對按鍵次數進行計數Ai=Key_Value;i+;11count=i;if(i=4)i=0;switch(count) /把連續(xù)按鍵值轉換成對應的十進制數case 1:Temp5=A0;Display1(Temp5); Delay_1ms(5); break; case 2:Te

15、mp5=A0*10+A1;Display1(Temp5);Delay_1ms(5); break; case 3 :Temp5=A0*100+A1*10+A2;Display1(Temp5);Delay_1ms(5); break; case 4:Temp5=A0*1000+A1*100+A2*10+A3; Display1(Temp5);Delay_1ms(5);if(Temp5>=5001) Temp5=0;break; if(Key_Value=13)/鍵值步進加20 if(j=1)Temp6=Temp7;elseTemp6=Temp5;Temp6=Temp6+20; Temp7=Temp6;Display1(Temp7);Delay_1ms(5); k=j=1;if(Key_Value=14)/鍵值步進減20 switch(j) case 0:Temp8=Temp5;break; case 1:Temp8=Temp7;break; case 2:Temp8=Temp9;break;Temp8=Temp8-20; Temp9=Temp8;Display1(Temp9);Delay_1ms(5);k=j=2;if(Key_Value=12) /DA轉換控制鍵 s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論