基于AD轉(zhuǎn)換的單片機(jī)實(shí)驗(yàn)和C語言開發(fā)(共21頁)_第1頁
基于AD轉(zhuǎn)換的單片機(jī)實(shí)驗(yàn)和C語言開發(fā)(共21頁)_第2頁
基于AD轉(zhuǎn)換的單片機(jī)實(shí)驗(yàn)和C語言開發(fā)(共21頁)_第3頁
基于AD轉(zhuǎn)換的單片機(jī)實(shí)驗(yàn)和C語言開發(fā)(共21頁)_第4頁
基于AD轉(zhuǎn)換的單片機(jī)實(shí)驗(yàn)和C語言開發(fā)(共21頁)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上目 錄專心-專注-專業(yè)摘要A/D轉(zhuǎn)換是將連續(xù)的模擬量通過取樣轉(zhuǎn)換成離散的數(shù)字量。A/D轉(zhuǎn)換包括采樣、保持、量化和編碼四個(gè)過程。在某些特定的時(shí)刻對(duì)這種模擬信號(hào)進(jìn)行測(cè)量叫做采樣,量化噪聲及接收機(jī)噪聲等因素的影響,采樣速率一般取fs=2.5fmax。通常采樣脈沖的寬度tw很短,故采樣輸出是斷續(xù)的窄脈沖。要把一個(gè)采樣輸出信號(hào)數(shù)字化,需要將采樣輸出所得的瞬時(shí)模擬信號(hào)保持一段時(shí)間,這就是保持過程。量化是將連續(xù)幅度的抽樣信號(hào)轉(zhuǎn)換成離散時(shí)間、離散幅度的數(shù)字信號(hào),量化的主要問題是量化誤差。假設(shè)噪聲信號(hào)在量化電平中是均勻分布的,則量化噪聲均方值與量化間隔和模數(shù)轉(zhuǎn)換器的輸入阻抗值有關(guān)。編碼

2、是將量化后的信號(hào)編碼成二進(jìn)制代碼輸出。這些過程有些是合并進(jìn)行的。 本次課程設(shè)計(jì)的要求是:基于A/D轉(zhuǎn)換模塊的單片機(jī)實(shí)驗(yàn)和C語言開發(fā),設(shè)計(jì)一種多路模擬信號(hào)采集模塊,從多個(gè)通道輪流采集數(shù)據(jù)一次,并將采集的結(jié)果存放在數(shù)組中。要求進(jìn)行電路實(shí)驗(yàn)或仿真,并使用C語言進(jìn)行程序的開發(fā)。1 設(shè)計(jì)軟件基礎(chǔ)知識(shí)1.1 C編譯器Keil介紹 Keil C51是Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)

3、集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。 Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。KeilSoftware公司推出的uVision4是一款可用于多種8051MCU的集成開發(fā)環(huán)境(IDE),該IDE同時(shí)也是PK51及其它開發(fā)套件的一個(gè)重要組件。除增加了源代碼、功能導(dǎo)航器、模板編輯以及改進(jìn)的搜索功能外,uVision3還提供了一個(gè)配置向?qū)Чδ?,加速了啟?dòng)代碼和配置文件的生成。此外其內(nèi)置的仿真器可模擬目標(biāo)MCU,包括指令集、片上外圍設(shè)備及外部信號(hào)等。uVision3提供邏輯分析器,可監(jiān)控基于MCUI/O引

4、腳和外設(shè)狀態(tài)變化下的程序變量。uVision4提供對(duì)多種最新的8051類微處理器的支持,包括AnalogDevices的ADuC83x和ADuC84x,以及Infineon的XC866等。1.2 Proteus軟件簡(jiǎn)介 Proteus軟件是英國(guó)Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。 其功能特點(diǎn)如下: Proteus軟件具有其它EDA工具軟件(例:mul

5、tisim)的功能。其功能模塊:個(gè)易用而又功能強(qiáng)大的ISIS 原理布圖工具;PROSPICE 混合模型SPICE 仿真; ARESPCB 設(shè)計(jì)。PROSPICE 仿真器的一個(gè)擴(kuò)展PROTEUS VSM:便于包括所有相關(guān)的器件的基于微處理器設(shè)計(jì)的協(xié)同仿真。此外,還可以結(jié)合微控制器軟件使用動(dòng)態(tài)的鍵盤,開關(guān),按鈕,LED 甚至LCD 顯示CPU 模型。 Protues 主要特征: 1)支持許多通用的微控制器,如 ARM,PIC,AVR,以及8051. 2)交互的裝置模型包括:LED 和LCD 顯示,RS232 終端,通用鍵盤 3) 強(qiáng)大的調(diào)試工具,包括寄存器和存儲(chǔ)器,斷點(diǎn)和單步模式 4) IAR C

6、-SPY 和 Keil uVision4 等開發(fā)工具的源層調(diào)試 革命性的特點(diǎn): 1)互動(dòng)的電路仿真 用戶甚至可以實(shí)時(shí)采用諸如RAM,ROM,鍵盤,馬達(dá),LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 2)仿真處理器及其外圍電路可以仿真51系列、AVR、PIC、ARM、等常用主流單片機(jī)。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運(yùn)行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設(shè)計(jì)開發(fā)環(huán)境。2 總體設(shè)計(jì)2.2系統(tǒng)框圖 此次設(shè)計(jì)的多通道數(shù)據(jù)采集系統(tǒng)設(shè)置了4路模擬電壓輸入通道。仿真中為了便于調(diào)節(jié)輸入的模擬電壓,在輸入模擬信

7、號(hào)時(shí)采用電阻分壓,最終的采樣輸入電壓便可根據(jù)測(cè)試需要調(diào)節(jié)。 系統(tǒng)框圖如圖2.1所示模擬信號(hào)AD轉(zhuǎn)換芯片采集數(shù)據(jù)單片機(jī)處理數(shù)據(jù),輸出數(shù)字量數(shù)碼管 顯示 圖2.1 系統(tǒng)框圖2.3 51單片機(jī)簡(jiǎn)介 單片微型計(jì)算機(jī)(Single-Chip Microcomputer),簡(jiǎn)稱單片機(jī)。就是將微處理器(CPU)、存儲(chǔ)器(存放程序或數(shù)據(jù)的ROM和RAM)、總線、定時(shí)器/計(jì)數(shù)器、輸入/輸出接口(I/O口)和其他多種功能器件集成在一塊芯片上的微型計(jì)算機(jī)。本次課程設(shè)計(jì)選用的是MCS-51系列單片機(jī)中的89C51。MCS-51單片機(jī)包含中央處理器(CPU)、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)器/計(jì)數(shù)器、

8、并行I/O接口、串行I/O接口和中斷系統(tǒng)等幾大單元。 其內(nèi)部結(jié)構(gòu)框圖如圖2.2所示。 圖2.2 51內(nèi)部系統(tǒng)結(jié)構(gòu)2.4 ADC0809簡(jiǎn)介 ADC0809是8位逐次逼近式/轉(zhuǎn)換器。其內(nèi)部有一個(gè)8通道多路模擬開關(guān),片內(nèi)帶有三態(tài)輸出緩沖器,可直接與單片機(jī)的數(shù)據(jù)總線相連接。它可以根據(jù)地址碼鎖存譯碼后的信號(hào),只選通8路模擬輸入信號(hào)中的一個(gè)進(jìn)行A/D轉(zhuǎn)換。2.4.1 ADC0809內(nèi)部結(jié)構(gòu) ADC0809的內(nèi)部結(jié)構(gòu)如圖2.3所示,它由8路模擬開關(guān)、地址鎖存與譯碼器、比較器、8位開關(guān)樹型A/D轉(zhuǎn)換器、逐次逼近寄存器、邏輯控制和定時(shí)電路組成。 圖2.3 ADC0809內(nèi)部結(jié)構(gòu)各部分功能及作用: IN0IN7

9、:8路模擬通道信號(hào)輸入,通過模擬開關(guān)實(shí)現(xiàn)8路模擬輸入信號(hào)分時(shí)選通。 ADDC,ADDB和ADDA:模擬通道選擇,編碼000111分別選中IN0IN7。 ALE:地址鎖存信號(hào),其上升沿鎖存ADDC,ADDB,ADDA信號(hào),譯碼后控制模擬開關(guān),接通8路模擬信號(hào)中相應(yīng)的一路。 CLK:輸入時(shí)鐘,為A/D轉(zhuǎn)換器提供轉(zhuǎn)換的時(shí)鐘信號(hào),典型工作頻率640HZ。 START:A/D轉(zhuǎn)換啟動(dòng)信號(hào),正脈沖啟動(dòng)ADDCADDA選中的一路模擬信號(hào)開始轉(zhuǎn)換。 OE:輸出允許信號(hào),高電平時(shí)打開三態(tài)輸出緩存器,使轉(zhuǎn)換后的數(shù)字量從D0D7腳輸出。 EOC:轉(zhuǎn)換結(jié)束信號(hào),啟動(dòng)轉(zhuǎn)換后,EOC變?yōu)榈碗娖?,轉(zhuǎn)換完成后變?yōu)楦唠娖健8鶕?jù)

10、讀入轉(zhuǎn)換結(jié)果的方式,此信號(hào)可有三種方式和單片機(jī)相連。 1)延時(shí)方式:EOC懸空,啟動(dòng)轉(zhuǎn)換后,延時(shí)100us后讀入轉(zhuǎn)換結(jié)果。 2)查詢方式:EOC接單片機(jī)端口線,查得EOC變高,讀入轉(zhuǎn)換結(jié)果,作為查詢信號(hào)。 3)中斷方式:EOC經(jīng)非門接單片機(jī)的中斷請(qǐng)求端,轉(zhuǎn)換結(jié)果作為中斷請(qǐng)求信號(hào)向單片機(jī)提出中斷申請(qǐng),在中斷服務(wù)中讀入轉(zhuǎn)換結(jié)果。 Vref(+)和Vref(-):基準(zhǔn)電壓輸入,用于決定模擬電壓的范圍。允許Vref(+)和Vref(-)是差動(dòng)的或不共地的電壓信號(hào),多數(shù)情況下,Vref(+)接+5V,Vref(-)接GND,此時(shí)輸入量程為05V。當(dāng)轉(zhuǎn)換精度要求不高或電源電壓Vcc較穩(wěn)定和準(zhǔn)確時(shí),Vref

11、(+)可以接Vcc,否則應(yīng)單獨(dú)提供基準(zhǔn)電源。2.3.2 ADC0809的工作過程 首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動(dòng) A/D轉(zhuǎn)換,之后EOC輸出信號(hào)變低,指示轉(zhuǎn)換正在進(jìn)行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖剑甘続/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號(hào)可用作中斷申請(qǐng)。當(dāng)OE輸入高電平時(shí),輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。 轉(zhuǎn)換數(shù)據(jù)的傳送 A/D轉(zhuǎn)換后得到的數(shù)據(jù)應(yīng)及時(shí)傳送給單片機(jī)進(jìn)行處理。數(shù)據(jù)傳送的關(guān)鍵問題是如何確認(rèn)A/D轉(zhuǎn)換的完成,因?yàn)橹挥写_認(rèn)完成后,才能進(jìn)

12、行傳送。為此可采用下述三種方式。 1)定時(shí)傳送方式 對(duì)于一種A/D轉(zhuǎn)換其來說,轉(zhuǎn)換時(shí)間作為一項(xiàng)技術(shù)指標(biāo)是已知的和固定的。例如ADC0809轉(zhuǎn)換時(shí)間為128s,相當(dāng)于6MHz的MCS-51單片機(jī)共64個(gè)機(jī)器周期。可據(jù)此設(shè)計(jì)一個(gè)延時(shí)子程序,A/D轉(zhuǎn)換啟動(dòng)后即調(diào)用此子程序,延遲時(shí)間一到,轉(zhuǎn)換肯定已經(jīng)完成了,接著就可進(jìn)行數(shù)據(jù)傳送。 2)查詢方式 A/D轉(zhuǎn)換芯片由表明轉(zhuǎn)換完成的狀態(tài)信號(hào),例如ADC0809的EOC端。因此可以用查詢方式,測(cè)試EOC的狀態(tài),即可確認(rèn)轉(zhuǎn)換是否完成,并接著進(jìn)行數(shù)據(jù)傳送。 3)中斷方式 把表明轉(zhuǎn)換完成的狀態(tài)信號(hào)(EOC)作為中斷請(qǐng)求信號(hào),以中斷方式進(jìn)行數(shù)據(jù)傳送。 不管使用上述哪種

13、方式,只要一旦確定轉(zhuǎn)換完成,即可通過指令進(jìn)行數(shù)據(jù)傳送。首先送出口地址并以信號(hào)有效時(shí),OE信號(hào)即有效,把轉(zhuǎn)換數(shù)據(jù)送上數(shù)據(jù)總線,供單片機(jī)接受。3 多路模擬信號(hào)采集模塊設(shè)計(jì) 3.1 功能簡(jiǎn)介使用ADC0809型號(hào)的A/D轉(zhuǎn)換器對(duì)多路模擬信號(hào)進(jìn)行數(shù)據(jù)采集,同時(shí)與單片機(jī)進(jìn)行通信,將測(cè)量的模擬信號(hào)量傳遞給89C51單片機(jī),由單片機(jī)進(jìn)行運(yùn)算,輸出對(duì)應(yīng)的數(shù)字量,然后在數(shù)碼管上顯示出來。設(shè)計(jì)中采用開關(guān)來選擇輸入不同通道的模擬信號(hào)。 3.2 總原理圖 圖 3.1 多通道數(shù)據(jù)采集總原理圖 3.2.1 單片機(jī)電路單片機(jī)最小系統(tǒng)如下圖所示,各個(gè)引腳都已經(jīng)標(biāo)出。 圖3.2 單片機(jī)最小系統(tǒng) 其中,振蕩電路以及復(fù)位電路均由單

14、片機(jī)系統(tǒng)自帶。3.2.2 ADC采樣電路 圖3.3 ADC模數(shù)轉(zhuǎn)換3.2.3顯示模塊 本次設(shè)計(jì)采用數(shù)碼管來顯示數(shù)據(jù)。 圖3.4 數(shù)碼管3.3 系統(tǒng)流程圖開始初始化采集數(shù)據(jù)數(shù)模轉(zhuǎn)換檢測(cè)是否轉(zhuǎn)換完畢單片機(jī)存儲(chǔ)LED顯示地址增加NY圖3.5 系統(tǒng)流程圖4 程序代碼#include#define uchar unsigned char#define uint unsigned int/*定義LCD1602接口信息*/sbit lcdrs=P30;/數(shù)據(jù)命令選擇位sbit lcden=P31;/使能位sbit lcdrw=P32;/LCD1602數(shù)據(jù)線接P0口/*定義ADC0808接口信息*/sbit

15、ADA=P20;sbit ADB=P21;sbit ADC=P22;sbit EOC=P23;sbit CLK=P24;sbit START=P25;sbit OE=P26;/*定義數(shù)據(jù)*/uchar string1=Xuzhiqiang AD Sp; /初始化數(shù)據(jù)uchar string2=Chan from 1 to 8;uchar tab=0.0 0.0 0.0 0.0 ; /存放AD采集數(shù)據(jù)uchar tab1=0.0 0.0 0.0 0.0 ;uchar num,getdata=0;uint temp=0;/*延時(shí)函數(shù)*/void delay(uchar t) uchar x,y;

16、for(x=t;x0;x-) for(y=110;y0;y-);void delayl(uchar ltime) uchar i; for(i=ltime;i0;i-) delay(255);/*寫命令函數(shù)*/void write_com(uchar com) lcdrs=0; P0=com; delay(10); lcden=1; delay(10); lcden=0;/*寫數(shù)據(jù)函數(shù)*/void write_data(uchar date) lcdrs=1; P0=date; delay(10); lcden=1; delay(10); lcden=0;void disp(uchar h,l

17、,uchar *p) write_com(0x80+h*0x40+l); while(*p!=0) write_data(*p); p+; /*初始化函數(shù)*/void LcdInit() lcdrw=0; delay(5); lcden=0;/使能位置低電平 write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); disp(0,0,&string10); disp(1,0,&string20); delayl(20);void TimeInit() TMOD=0x10;/定時(shí)器1工

18、作于方式1,16位不重裝初值 TH1=(65536-200)/256; /定時(shí)200us(5KHz) TL1=(65536-200)%256; EA=1; ET1=1; TR1=1;void AdTr(bit ADDA,ADDB,ADDC,uchar channel) START=0; OE=0; START=1; START=0;/A/D轉(zhuǎn)換啟動(dòng)信號(hào),正脈沖啟動(dòng)選中的模擬信號(hào)開始轉(zhuǎn)換 ADA=ADDA; ADB=ADDB; ADC=ADDC; delay(5); while(EOC=0);/啟動(dòng)轉(zhuǎn)換后EOC變?yōu)長(zhǎng),轉(zhuǎn)換結(jié)束后變?yōu)镠 OE=1; getdata=P1; temp=getdata

19、*1.0/255*50; OE=0; if(channel=4) channel=channel-4; tab14*channel=temp/10+0x30; tab14*channel+2=temp%10+0x30; void main() LcdInit(); TimeInit(); while(1) AdTr(0,0,0,0); delay(5); AdTr(0,0,1,1); delay(5); AdTr(0,1,0,2); delay(5); AdTr(0,1,1,3); delay(5); AdTr(1,0,0,4); delay(5); AdTr(1,0,1,5); delay(

20、5); AdTr(1,1,0,6); delay(5); AdTr(1,1,1,7); delay(5); disp(0,0,tab); disp(1,0,tab1); void t1(void) interrupt 3 using 0 TH1=(65536-200)/256; TL1=(65536-200)%256; CLK=CLK;5 仿真結(jié)果與分析 圖5.1 圖5.2 圖5.3 圖5.4通過調(diào)節(jié)電阻來控制模擬信號(hào)的輸入,由上圖可以看出,采集的模擬量經(jīng)過A/D轉(zhuǎn)換后的數(shù)字量分別為:51、168、130、204。6 心得體會(huì)這次課程設(shè)計(jì)的題目是基于A/D轉(zhuǎn)換模塊的單片機(jī)實(shí)驗(yàn)和C語言開發(fā),任務(wù)是設(shè)計(jì)一種多路模擬信號(hào)采集模塊,從多個(gè)通道輪流采集數(shù)據(jù)一次,并將采集的結(jié)果存放在數(shù)組中。要求進(jìn)行電路實(shí)驗(yàn)或仿真,并使用C語言進(jìn)行程序的開發(fā)。這需要我們綜合運(yùn)用單片機(jī)等課程的知識(shí),通過查閱資料、方案論證與選定,設(shè)計(jì)和選取電路和元器件,分析指標(biāo)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論