基于51單片機(jī)和DAC0832的信號源(proteus電路圖加程序)_第1頁
基于51單片機(jī)和DAC0832的信號源(proteus電路圖加程序)_第2頁
基于51單片機(jī)和DAC0832的信號源(proteus電路圖加程序)_第3頁
基于51單片機(jī)和DAC0832的信號源(proteus電路圖加程序)_第4頁
基于51單片機(jī)和DAC0832的信號源(proteus電路圖加程序)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、班 級 學(xué) 號 自動測試實驗報告 題 目 基于51單片機(jī)和DAC0832的信號源 學(xué) 院 機(jī)電工程學(xué)院 專 業(yè) 測控技術(shù)與儀器 導(dǎo)師姓名 呂曉洲 學(xué)生姓名 學(xué) 號 摘要 本文介紹了以8051和DAC0832為核心的信號源,可以通過按鍵選擇正弦波、方波、三角波、鋸齒波和梯形波,也可以通過按鍵選擇798.6Hz、266.2Hz、88.7Hz、29.6Hz、9.85Hz、3.3Hz、1.1Hz共九檔頻率。波形和頻率通過軟件改變,幅值通過硬件放大的放大器改變。本信號源具有結(jié)構(gòu)簡單、功能豐富、使用方便另外價格實惠等特點?!娟P(guān)鍵詞】單片機(jī), 8051,DAC0832,信號源,頻率,波形一 實驗要求以及方案

2、選擇1.實驗要求:設(shè)計一個信號源,能產(chǎn)生正弦波、三角波、鋸齒波、方波等簡單的波形,能夠方便改變波形和頻率。2方案選擇: 方案一:完全由硬件電路制作,使用傳統(tǒng)的鎖相頻率合成方法。通過芯片IC145152,壓控振蕩器搭接的鎖相環(huán)電路輸出穩(wěn)定性極好的正弦波,再利用過零比較器轉(zhuǎn)換成方波,積分電路轉(zhuǎn)換成三角波。此方案,電路復(fù)雜,干擾因素多,不易實現(xiàn)。方案二:直接利用波形產(chǎn)生芯片,例如,利用MAX038芯片組成的電路輸出波形。MAX038是精密高頻波形產(chǎn)生電路,能夠產(chǎn)生準(zhǔn)確的鋸齒波、三角波、方波和正弦波四種周期性波形。但此方案成本高,程序復(fù)雜度高。 方案三:通過單片機(jī)控制DAC,輸出五種波形。此方案輸出的

3、波形分辨率不夠高,頻率有限。但此方案電路簡單、成本低,波形和頻率容易選擇。二 實驗元件及原理介紹1. 80C51單片機(jī)80C51單片機(jī)屬于MCS-51系列單片機(jī),由Intel公司開發(fā),其結(jié)構(gòu)是8048的延伸,改進(jìn)了8048的缺點,增加了如乘(MUL)、除(DIV)、減(SUBB)、比較(CMP)、16位數(shù)據(jù)指針、布爾代數(shù)運算等指令,以及串行通信能力和5個中斷源。采用40引腳雙列直插式DIP(Dual In Line Package),內(nèi)有128個RAM單元及4K的ROM。它把構(gòu)成計算機(jī)的中央處理器CPU、存儲器、寄存器、I/O接口制作在一塊集成電路芯片中,從而構(gòu)成較為完整的計算機(jī)、而且其價格便

4、宜。 圖1.80C51單片機(jī)及鍵盤電路圖1所示是80C51單片機(jī)以及接口電路,由于Proteus對單片機(jī)的VCC和GND是默認(rèn)自動連接的,所以這里就不需要再連接電源和地了。本次試驗使用80C51單片機(jī)內(nèi)部晶振,所以也無需外接晶振。按鍵S1和S2分別連接到80C51的INT0(P3.2)和INT1(P3.3),按鍵S1控制波形選擇,每按一次變換一次波形,分別為正弦波、方波、鋸齒波、梯形波和三角波。按鍵S2控制頻率,共七檔,每按一次頻率下降為上一次的1/3。2. DAC0832數(shù)模轉(zhuǎn)換器DAC0832是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個DA芯片以其價格低廉、接口簡單、轉(zhuǎn)換控制容

5、易等優(yōu)點,在單片機(jī)應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。 圖2.DAC0832器件以及I/V變換電路圖2所示是DAC0832器件以及I/V變換電路。DAC0832有兩級緩沖,本次試驗采用直通模式,即把ILE、CS、WR1、WR2、XFER都設(shè)置為有效,使兩個寄存器都處于開放狀態(tài),無需控制信號,DAC0832的輸出隨時跟誰輸入數(shù)字的變化而變化,這樣只要輸入的八位數(shù)字量變化,就直接進(jìn)行DA轉(zhuǎn)換。圖中的運算放大器是實現(xiàn)I/V變化功能,由于DAC0832輸出的是電流信號,且Iout1和Iout2的電流之和為一常數(shù),在DAC寄存器

6、各位都是1時,Iout1輸出最大,一般在單極性輸出時把Iout2接地,雙極性輸出時接運放。如果要調(diào)整放大系數(shù),只需要在運放輸出端與反饋端串聯(lián)一可調(diào)電阻即可。三.系統(tǒng)軟件介紹本信號源主程序主要有三部分構(gòu)成:主程序模塊、外部中斷一模塊、外部中斷2模塊。1. 主程序介紹主程序開始后首先進(jìn)行初始化,然后根據(jù)波形標(biāo)志a,b,c,d,e的值進(jìn)入相應(yīng)的while 循環(huán),這樣寫的好處是指令簡潔,輸出的波形頻率可達(dá)近800Hz。在while循環(huán)中,單片機(jī)根據(jù)地址標(biāo)志位不停低查表,然后把查得的值賦給DAC0832的數(shù)據(jù)口,然后地址標(biāo)志位加一,并判斷地址標(biāo)志位是否等于64,如果是就置0再往下執(zhí)行,如果不是直接往下執(zhí)

7、行。然后根據(jù)頻率標(biāo)志位進(jìn)行相應(yīng)的延時。 其中波形是取一個周期內(nèi)的64個點進(jìn)行描繪,波形ROM表是將信號一個周期等間距地分離成64個點,儲存在單片機(jī)得RON內(nèi)。具體ROM表是通過MATLAB生成的,例如正弦表,MATLAB生成的程序如下:x=0:2*pi/64:2*pi; y=round(sin(x)*127)+128輸出數(shù)字量到DAC0832開始延時數(shù)組下標(biāo)置零數(shù)組下標(biāo)是否為64數(shù)組下標(biāo)加一根據(jù)數(shù)組下標(biāo)查表While循環(huán)根據(jù)不同波形標(biāo)志選擇相應(yīng)的while循環(huán)初始化 圖3 主程序流程圖2.中斷服務(wù)子程序本程序有兩個中斷,中斷1控制波形選擇,中斷2控制頻率。 圖4.中斷程序框圖四.實驗結(jié)果用Pr

8、oteus軟件繪制好原理圖,用Keil軟件生產(chǎn)程序的Hex文件,導(dǎo)入到80C51單片機(jī)中,就可以仿真了。實現(xiàn)結(jié)果用一下圖形表示。1. 生成的正弦波 系統(tǒng)開機(jī)默認(rèn)的是正弦波,通過按動S1按鈕可以選擇波形,按動S2可以調(diào)節(jié)頻率。 圖5 798.6Hz頻率正弦波按S2按鈕,頻率降低三倍后的正弦波 圖6. 266.2Hz正弦波2.生成方波 圖7 .798.6Hz方波調(diào)節(jié)S2按鈕,生成88.7Hz的方波 圖7 .88.7Hz方波 3.生成鋸齒波 圖8 .798.6Hz鋸齒波4生成梯形波 圖9.798.6Hz梯形波5.生成三角波圖10.798.6Hz梯形波按動S按鈕,生成266.2Hz三角波圖11.266

9、.2Hz三角波五實驗總結(jié) 第一次使用Proteus軟件,感覺這個軟件使用非常方便,上手很快,仿真的時候還可以看到引腳上的電平變化,對于故障排除與實驗分析非常方便。本次實驗產(chǎn)生的波形能夠滿足一般的要求,但是頻率還是比較低,最大僅有798.6Hz,而且分辨率還不夠高,把時間調(diào)小后還可以看到階梯線,這個把函數(shù)表做的大一點,可以提高分辨率,但是那樣又會影響頻率。這種單片機(jī)信號源,提高信號頻率的最好方法是提高單片機(jī)的主頻。六附錄1.實驗硬件總體電路圖圖12.實驗總電路圖2實驗程序#include#define uchar unsigned char#define uint unsigned intsbi

10、t csda=P22; /p2.2口作為0832的片選端sbit wr=P21;/p2.1口作為0832的寫信號控制端sbit s1=P32;/按鍵1的接口,選擇波形sbit s2=P33;/ 按鍵2的接口,選擇頻率uchar k=0,p=0,delay=0;/k是數(shù)組下標(biāo) p是頻率標(biāo)志 delay是延時時間uchar bxxz=0;pinlv=0;/bxxz波形標(biāo)志,pinlv是頻率對應(yīng)的延時uchar a=1,b=0,c=0,d=0,e=0; /a,b,c,d,e分別對應(yīng)正弦波,方波,鋸齒波,梯形波,三角波uchar code sin64=135,145,158,167,176,188,1

11、99,209,218,226,234,240,245,249,252,254,254,253,251,247,243,237,230,222,213,204,193,182,170,158,146,133,121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66,78,90,102,114,128; /正弦波函數(shù)表uchar code juxing64=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,

12、255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; /方波函數(shù)表uchar code juchi64=0,4,8,12,16,20,24,28,32,36,40,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,130,134,138,142,146,150,154,158,162,166,170,174,178,182,18

13、6,190,194,198,202,206,210,215,219,223,227,231,235,239,243,247,251,255; /鋸齒波函數(shù)表uchar code tixing64=0,13,26,39,52,65,78,91,104,117,130,143,156,169,182,195,208,221,234,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,242,229,216,203,190,177,164,151

14、,138,125,112,99,86,73,60,47,34,21,8; /梯形波函數(shù)表uchar code sanjiao64=0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0; /三角波波函數(shù)表

15、void delay1()/延時時間函數(shù),延時一毫秒int a,b;for(a=1;a0;a-)for(b=122;b0;b-);void int0() interrupt 0 /中斷1,選擇波形EX0=0; /關(guān)中斷delay1();if(s1=0)bxxz+;if(bxxz=5) /波形標(biāo)志為5后,重新置零bxxz=0;switch(bxxz) /每按動一次S2,改變波形case 0 :a=1,b=0,c=0,d=0,e=0;break;case 1 :a=0,b=1,c=0,d=0,e=0;break;case 2 :a=0,b=0,c=1,d=0,e=0; break;case 3 :

16、a=0,b=0,c=0,d=1,e=0;break;case 4 :a=0,b=0,c=0,d=0,e=1;break;delay1();while(!s1);while(!s1);EX0=1;void int1() interrupt 2 /中斷1,頻率選擇EX1=0;delay1();if(s2=0)p+;if(p=8) /頻率標(biāo)志是8后,重新置零 p=0;switch(p) /每按動一次,頻率減為三分之一case 1 :pinlv=3;break;case 2 :pinlv=6;break;case 3 :pinlv=9;break;case 4 :pinlv=12;break;case

17、 5 :pinlv=15;break;case 6 :pinlv=18;break;case 7 :pinlv=21;break;default :pinlv=0;break;delay1();while(!s2); /按鍵沒松開,不再重新執(zhí)行中斷,防止抖動while(!s2);EX1=1; /開中斷void main()csda=0;wr=0;/片選和WR端置零,0832直通模式EA=1; /開中斷IT0=1;EX0=1;IT1=1;EX1=1;/中斷0和1開中斷while(1)while(a) /根據(jù)五種波形的標(biāo)志位執(zhí)行相應(yīng)的循環(huán) delay=pinlv;P0=sink; /把數(shù)組中的數(shù)值付給p0口k+;if(k=64) /查表下標(biāo)為64后重新置零k=0;while(delay) delay-; /根據(jù)頻率不同延時相應(yīng)的時間while

溫馨提示

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

評論

0/150

提交評論