版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p><b> 摘要</b></p><p><b> 引言</b></p><p> 一 課程設(shè)計題目及任務(wù)要求</p><p> 1.1課程設(shè)計主要任務(wù)</p><p> 1.2課程設(shè)
2、計的要求</p><p> 二 電路設(shè)計方案及原理說明</p><p> 2.0課程設(shè)計的方案 </p><p> 2.1 ADC0809模數(shù)轉(zhuǎn)換芯片</p><p> 2.2 AT89C51單片機(jī)</p><p> 2.3 4個共陽7段數(shù)碼管顯示器</p><p> 2.4 系
3、統(tǒng)整體工作原理</p><p><b> 2.4.1硬件原理</b></p><p> 2.4.2軟件原理分析</p><p><b> 三 設(shè)計總體框圖</b></p><p><b> 3.1硬件總體框圖</b></p><p><b
4、> 3.2主程序流程圖</b></p><p> 3.3待測信號源單元電路</p><p> 3.4 AT89C51單片機(jī)</p><p> 3.5單片機(jī)控制單元</p><p> 3.5.1外部時鐘電路</p><p><b> 3.5.2復(fù)位電路</b></
5、p><p> 3.5.3數(shù)碼管顯示模塊</p><p><b> 四 實驗仿真</b></p><p> 五 總結(jié)及設(shè)計心得</p><p><b> 六 致謝</b></p><p><b> 七 參考文獻(xiàn)</b></p>
6、<p> 摘要:本設(shè)計待測的輸入電壓為8路,電壓范圍為0~5V,使用目前廣泛使用的AT89C51來做控制系統(tǒng),用ADC0809來進(jìn)行模擬電壓的采集及模數(shù)轉(zhuǎn)換,實現(xiàn)采集8路數(shù)據(jù),并將結(jié)果在四位一體數(shù)碼管上進(jìn)行顯示。該系統(tǒng)主要包括幾大模塊:數(shù)據(jù)采集模塊、A/D轉(zhuǎn)換模塊、控制模塊、顯示模塊。顯示部分由LED數(shù)碼顯示器構(gòu)成。該數(shù)字電壓表具有電路簡單,成本低等優(yōu)點,可以方便地進(jìn)8路A/D轉(zhuǎn)換量的測量。</p><p
7、> 關(guān)鍵詞:電壓采集、ADC0809、A/D轉(zhuǎn)換、單片機(jī)89C51、數(shù)碼管顯示</p><p><b> 引言</b></p><p> 隨著計算機(jī)技術(shù)的飛速發(fā)展和普及,數(shù)據(jù)采集系統(tǒng)在多個領(lǐng)域有著廣泛的應(yīng)用。數(shù)據(jù)采集是工、農(nóng)業(yè)控制系統(tǒng)中至關(guān)重要的一環(huán),在醫(yī)藥、化工、食品、等領(lǐng)域的生產(chǎn)過程中,往往需要隨時檢測各生產(chǎn)環(huán)節(jié)的溫度、濕度、流量及電壓等參數(shù)。同時,還
8、要對某一檢測點任意參數(shù)能夠進(jìn)行隨機(jī)查尋,將其在某一時間段內(nèi)檢測得到的數(shù)據(jù)經(jīng)過轉(zhuǎn)換提取出來,以便進(jìn)行比較,做出決策,調(diào)整控制方案,提高產(chǎn)品的合格率,產(chǎn)生良好的經(jīng)濟(jì)效益。 隨著工、農(nóng)業(yè)的發(fā)展,多路數(shù)據(jù)采集勢必將得到越來越多的應(yīng)用,為適應(yīng)這一趨勢,作這方面的研究就顯得十分重要。在科學(xué)研究中,運用數(shù)據(jù)采集系統(tǒng)可獲得大量的動態(tài)信息,也是獲取科學(xué)數(shù)據(jù)和生成知識的重要手段之一??傊?,不論在哪個應(yīng)用領(lǐng)域中,數(shù)據(jù)采集與處理將直接影響工作效率和所取
9、得的經(jīng)濟(jì)效益。 </p><p> 采集系統(tǒng),從嚴(yán)格的意義上來說,應(yīng)該是用計算機(jī)控制的多路數(shù)據(jù)自動檢測或巡回檢測,并且能夠?qū)?shù)據(jù)實行存儲、處理、分析計算以及從檢測的數(shù)據(jù)中提取可用的信息,供顯示、記錄、打印或描繪的系統(tǒng)。</p><p> 電壓測量成為廣大電子領(lǐng)域中必須掌握的過程,并且對測量的精度和采集功能的要求也越來越高,而電壓的測量與顯示系統(tǒng)甚為重要。在課程設(shè)計中對一路電壓采集系統(tǒng)與
10、顯示系統(tǒng)作了基本的研究。電壓采集與通信控制采用了模塊化的設(shè)計,并用單片機(jī)8051來實現(xiàn),硬件部分是以單片機(jī)為核心,還包括模-數(shù)轉(zhuǎn)換模塊,顯示模塊,和串行接口部分,還有一些簡單的外圍電路。1路被測電壓通過通用ADC0809模-數(shù)轉(zhuǎn)換,實現(xiàn)對采集到的電壓進(jìn)行模擬量到數(shù)字量的轉(zhuǎn)換,由單片機(jī)對數(shù)據(jù)進(jìn)行處理,用數(shù)碼管顯示模塊來顯示所采集的結(jié)果,由相關(guān)控制器完成數(shù)據(jù)接收和顯示,匯編程序編寫了更加明了化數(shù)據(jù)顯示界面。本系統(tǒng)主要包括四大模塊:數(shù)據(jù)采集模
11、塊、控制模塊、顯示模塊、A/D轉(zhuǎn)換模塊。繪制電路原理圖與工作流程圖,并進(jìn)行調(diào)試,最終設(shè)計完成了該系統(tǒng)的硬件電路。在軟件編程上,采用了匯編語言進(jìn)行編程,開發(fā)環(huán)境使用相關(guān)集成開發(fā)環(huán)境。開發(fā)了顯示模塊程序、A/D轉(zhuǎn)換程序。</p><p><b> 設(shè)計任務(wù)與要求</b></p><p> 1.1課程設(shè)計主要任務(wù)</p><p> A、通過設(shè)計
12、是學(xué)生掌握利用ADC0809及其適當(dāng)?shù)耐鈬娐穼崿F(xiàn)直流電壓的采集以及利用LED顯示功能的方法。</p><p> B、進(jìn)一步掌握ADC0809的功能特點、工作原理和正確使用方法。</p><p> C、進(jìn)一步了解外圍器件接口的基本原理與使用技術(shù)。</p><p> 1.2課程設(shè)計的要求</p><p> A、利用ADC0809及其適當(dāng)
13、的外圍電路實現(xiàn)直流電壓的采集。</p><p> B、采集結(jié)果在LED數(shù)碼管上顯示出來,數(shù)據(jù)范圍為:0~5v</p><p> C、繪制硬件連接圖,編寫相應(yīng)的控制程序。</p><p> D、撰寫設(shè)計報告、調(diào)試報告、設(shè)計心得。</p><p> 二 、電路設(shè)計方案及原理說明</p><p> 依據(jù)綜合課程設(shè)計
14、的要求,利用ADC0809設(shè)計一個單通道模擬電壓采集顯示電路,要求對所接通道變化的模擬電壓值進(jìn)行采集,采集來的數(shù)字量送至數(shù)碼管指示出來,通過相關(guān)轉(zhuǎn)換在數(shù)碼管上精確顯示出來。本課程設(shè)計相當(dāng)于測直流電壓的大小,通過對電壓值的采集與處理,而由所學(xué)微控制器的知識可知,可以利用單片機(jī)的模數(shù)轉(zhuǎn)換來實現(xiàn)這一設(shè)計,進(jìn)一步把相應(yīng)的電壓值精確顯示出來。</p><p> 模數(shù)轉(zhuǎn)換就是利用單片機(jī)控制模數(shù)轉(zhuǎn)換芯片(A/D),讓它對外部
15、的一個模擬信號進(jìn)行采樣、量化、編碼然后轉(zhuǎn)化為一個離散的數(shù)字量,提供給控制器作進(jìn)一步處理。對于常用的A/D轉(zhuǎn)換芯片有ADC0809、ADC0808等。它們都是8位的模數(shù)轉(zhuǎn)換芯片,就是把模擬量轉(zhuǎn)換為一個8位的二進(jìn)制數(shù)。利用單片機(jī)AT89C51與ADC0809設(shè)計一個電壓采集系統(tǒng),將模擬信號(實際設(shè)計時采用0~5 V)之間的直流電壓值轉(zhuǎn)換成數(shù)字量信號0~FF,以數(shù)碼管顯示。Proteus軟件啟動仿真,當(dāng)前輸入電壓為2.5 0V,轉(zhuǎn)換成數(shù)字值為
16、7FH,用鼠標(biāo)指針調(diào)節(jié)電位器尺,可改變輸入模/數(shù)轉(zhuǎn)換器ADC0809的電壓,并通過虛擬電壓表觀察ADC0809模擬量輸入信號的電壓值,LED數(shù)碼管實時顯示相應(yīng)的數(shù)值量。</p><p> 此次電壓表總體的方案就是用單片機(jī)的I/O口輸出信號來控制A/D啟動轉(zhuǎn)換,將送入的模擬量轉(zhuǎn)換為一個8位數(shù)字量,然后再通過I/O口送回單片機(jī)內(nèi)部進(jìn)行處理,單片機(jī)進(jìn)行一系列的運算和校準(zhǔn)后,通過數(shù)碼管將電壓值顯示出來。而在方案的實現(xiàn)上
17、由兩部分組成:硬件部分和軟件部分。硬件即電子元器件的選擇且將它們連接成一個可行的硬件系統(tǒng),軟件是硬件系統(tǒng)功能化的重要組成部分。硬件的設(shè)計可以在Proteus上進(jìn)行,軟件可以用Proteus自帶的匯編工具,然后在Proteus將硬軟件相結(jié)合,進(jìn)行仿真,再根據(jù)結(jié)果不斷對硬件進(jìn)行改進(jìn),對軟件進(jìn)行調(diào)試,實現(xiàn)電壓的采集與顯示功能。</p><p> 2.1 ADC0809模數(shù)轉(zhuǎn)換芯片</p><p&g
18、t; 1.ADC0809是帶有8位A/D轉(zhuǎn)換器、8路多路開關(guān)以及微處理機(jī)兼容的控制邏輯的CMOS組件。它是逐次逼近式A/D轉(zhuǎn)換器,可以和單片機(jī)直接接口。 </p><p> ?。?)ADC0809的內(nèi)部邏輯結(jié)構(gòu) </p><p> 由下圖可知,ADC0809由一個8路模擬開關(guān)、一個地址鎖存與譯碼器、一個A/D轉(zhuǎn)換器和一個三態(tài)輸出鎖存器組成。多路開關(guān)可選通8個模擬通道,允許8路模擬量分時
19、輸入,共用A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。三態(tài)輸出鎖器用于鎖存A/D轉(zhuǎn)換完的數(shù)字量,當(dāng)OE端為高電平時,才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完的數(shù)據(jù)。</p><p> ?。?).ADC0809引腳結(jié)構(gòu) </p><p> ADC0809各腳功能如下:D7-D0:8位數(shù)字量輸出引腳。IN0-IN7:8位模擬量輸入引腳。VCC:+5V工作電壓。GND:地。REF(+):參考電壓正端。REF(-
20、):參考電壓負(fù)端。START:A/D轉(zhuǎn)換啟動信號輸入端。ALE:地址鎖存允許信號輸入端。(以上兩種信號用于啟動A/D轉(zhuǎn)換).EOC:轉(zhuǎn)換結(jié)束信號輸出引腳,開始轉(zhuǎn)換時為低電平,當(dāng)轉(zhuǎn)換結(jié)束時為高電平。OE:輸出允許控制端,用以打開三態(tài)數(shù)據(jù)輸出鎖存器。CLK:時鐘信號輸入端(一般為500KHz)。A、B、C:地址輸入線。</p><p> ADC0809對輸入模擬量要求:信號單極性,電壓范圍是0-5V
21、,若信號太小,必須進(jìn)行放大;輸入的模擬量在轉(zhuǎn)換過程中應(yīng)該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。 </p><p> 地址輸入和控制線:4條 </p><p> ALE為地址鎖存允許輸入線,高電平有效。當(dāng)ALE線為高電平時,地址鎖存與譯碼器將A,B,C三條地址線的地址信號進(jìn)行鎖存,經(jīng)譯碼后被選中的通道的模擬量進(jìn)入轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。A,B和C為地址輸入線,用于選通IN0
22、-IN7上的一路模擬量輸入。通道選擇表如下表所示。</p><p> 數(shù)字量輸出及控制線:11條 </p><p> ST為轉(zhuǎn)換啟動信號。當(dāng)ST上跳沿時,所有內(nèi)部寄存器清零;下跳沿時,開始進(jìn)行A/D轉(zhuǎn)換;在轉(zhuǎn)換期間,ST應(yīng)保持低電平。EOC為轉(zhuǎn)換結(jié)束信號。當(dāng)EOC為高電平時,表明轉(zhuǎn)換結(jié)束;否則,表明正在進(jìn)行A/D轉(zhuǎn)換。OE為輸出允許信號,用于控制三條輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)
23、。OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù);OE=0,輸出數(shù)據(jù)線呈高阻狀態(tài)。D7-D0為數(shù)字量輸出線。 </p><p> CLK為時鐘輸入信號線。因ADC0809的內(nèi)部沒有時鐘電路,所需時鐘信號必須由外界提供,通常使用頻率為500KHZ, </p><p> VREF(+),VREF(-)為參考電壓輸入。</p><p> 2. ADC0809應(yīng)用說明 </p&g
24、t;<p> (1). ADC0809內(nèi)部帶有輸出鎖存器,可以與AT89S51單片機(jī)直接相連。 </p><p> ?。?). 初始化時,使ST和OE信號全為低電平。 </p><p> (3). 送要轉(zhuǎn)換的哪一通道的地址到A,B,C端口上。 </p><p> ?。?). 在ST端給出一個至少有100ns寬的正脈沖信號。 </p>
25、<p> ?。?). 是否轉(zhuǎn)換完畢,我們根據(jù)EOC信號來判斷。 </p><p> ?。?). 當(dāng)EOC變?yōu)楦唠娖綍r,這時給OE為高電平,轉(zhuǎn)換的數(shù)據(jù)就輸出給單片機(jī)了。</p><p> 2.2 AT89C51單片機(jī)</p><p> ADC0809與8051單片機(jī)的硬件接口有3種形式,分別是查詢方式、中斷方式和延時等待方式,本題中選用中斷接口方式。&l
26、t;/p><p> 由于ADC0809無片內(nèi)時鐘,時鐘信號可由單片機(jī)的ALE信號經(jīng)D觸發(fā)器二分頻后獲得。該題目中單片機(jī)時鐘頻率采用12MHz,則ALE輸出的頻率是2MHz,四分頻后為500KHz,符合ADC0809對頻率的要求。</p><p> 由于ADC0809內(nèi)部設(shè)有地址鎖存器,所以通道地址由P0口的低3位直接與ADC0809的A、B、C相連。通道基本地址為0000H~0007H。其
27、對應(yīng)關(guān)系上面已做介紹。</p><p> 控制信號:將P2.7作為片選信號,在啟動A/D轉(zhuǎn)換時,由單片機(jī)的寫信號和P2.7控制ADC的地址鎖存和啟動轉(zhuǎn)換。由于ALE和START連在一起,因此ADC0809在鎖存通道地址的同時也啟動轉(zhuǎn)換。</p><p> 在讀取轉(zhuǎn)換結(jié)果時,用單片機(jī)的P3.0產(chǎn)生正脈沖作為OE信號,用來打開三態(tài)輸出鎖存器。</p><p> 其
28、接口電路如圖2-2所示。</p><p> 當(dāng)8051通過對0000H~0007H(基本地址)中的某個口地址進(jìn)行一次寫操作,即可啟動相應(yīng)通道的A/D轉(zhuǎn)換;當(dāng)轉(zhuǎn)換結(jié)束后,ADC0809的EOC端向8051發(fā)出中斷申請信號;8051通過對0000H~0007H中的某個口地址進(jìn)行一次讀操作,即可得到轉(zhuǎn)換結(jié)果。</p><p> 2.3 4個共陽7段數(shù)碼管顯示器</p><
29、p> 共陽極7段LED數(shù)碼管和共陰極LED數(shù)碼管結(jié)構(gòu)類似,其引腳配置,如圖所示。從圖中可以看出7段LED數(shù)碼管同樣由8個發(fā)光二極管組成,其中7個發(fā)光二極管構(gòu)成字形“8”,另一個發(fā)光二極管構(gòu)成小數(shù)點。</p><p> 共陽極7段LED數(shù)碼管的內(nèi)部結(jié)構(gòu),如圖所示。其中所有發(fā)光二極管的陽極為公共端,接+5v電壓。如果發(fā)光二極管的陰極為低電平的時候,發(fā)光二極管導(dǎo)通,該字段發(fā)光;反之,如果發(fā)光二極管的陰極為高電
30、平的時候,發(fā)光二極管截止,該字段不發(fā)光。</p><p> 共陽極7段LED引腳配置 共陽極7段LED結(jié)構(gòu)圖</p><p> 2.4 系統(tǒng)整體工作原理</p><p><b> 1 硬件設(shè)計</b></p><p><b> (1)系統(tǒng)構(gòu)成</b></p>
31、<p> 該系統(tǒng)主要包括幾大模塊:數(shù)據(jù)采集模塊、A/D轉(zhuǎn)換模塊、控制模塊、顯示模塊、按鍵模塊等。采用AT89C51作為控制模塊,ADC0809作為A/D轉(zhuǎn)換模塊的核心,ADC0809本身具有8路模擬量輸入端口,通過C、B、A,3位地址輸入端,能從8路中選擇一路進(jìn)行轉(zhuǎn)換。如每隔一段時間依次輪流改變3位地址輸入端的地址,就能依次對8路輸入電壓進(jìn)行測量。LED數(shù)碼管的顯示采用軟件譯碼動態(tài)顯示,通過按鍵模塊的操作可以選擇8路循環(huán)顯
32、示,也可以選擇某條單路顯示。</p><p><b> ?。?)數(shù)據(jù)采集電路</b></p><p> 數(shù)據(jù)采集電路是系統(tǒng)的主要組成部分,ADC0809具有8路模擬量輸入通道IN0~I(xiàn)N7,通過3位地址輸入端C、B、A(引腳23~25)進(jìn)行選擇。引腳22為地址鎖存控制端ALE,當(dāng)輸入為高電平時,C、B、A引腳輸入的地址鎖存于ADC0809內(nèi)部鎖存器中,經(jīng)內(nèi)部譯碼電路
33、譯碼選中相應(yīng)的模擬通道。引腳6為啟動轉(zhuǎn)換控制端START,當(dāng)輸入一個2 US寬的高電平脈沖時,就啟動ADC0809開始對輸入通道的模擬量進(jìn)行轉(zhuǎn)換。引腳7為A/D轉(zhuǎn)換器,當(dāng)開始轉(zhuǎn)換時,EOC信號為低電平,經(jīng)過一段時間,換結(jié)束,轉(zhuǎn)換結(jié)束信號EOC輸出高電平,轉(zhuǎn)換結(jié)果存放干ADC0809內(nèi)部的輸出數(shù)據(jù)寄存器中。引腳9腳為A/D轉(zhuǎn)換數(shù)據(jù)輸出允許控制端OE,當(dāng)0E為高電平時,存放于輸出數(shù)據(jù)鎖存器中的數(shù)據(jù)通過ADC0809的數(shù)據(jù)線DO~D7輸出。引
34、腳10為ADC0809的時鐘信號輸人端CLOCK。在連接時,ADC0809的數(shù)據(jù)線D0~D7與AT89C51的P1口相連接,ADC0809的地址引腳、地址鎖存端ALE、啟動信號START、數(shù)據(jù)輸出允許控制端OE分別與AT89C51的P3口相連接,轉(zhuǎn)換結(jié)束信號EOC與AT89C52的P3.1相連接</p><p><b> 2 軟件設(shè)計</b></p><p><
35、;b> ?。?)主程序</b></p><p> 主程序包含初始化部分,調(diào)用A/D轉(zhuǎn)換子程序和調(diào)用顯示子程序。</p><p> ?。?)數(shù)據(jù)處理子程序</p><p> ADC0809轉(zhuǎn)換之后輸出的結(jié)果是8位二進(jìn)制數(shù)。由公式(1)可知,當(dāng)ADC0809輸出</p><p> 為(1l1l11111)時,輸入電壓值V
36、=5.00V{當(dāng)ADC0809輸出為(00000000)時,輸入電壓值為0.0O0V;當(dāng)ADC0809輸出為(10000000)時,輸入電壓值V =2.50V。由于單片機(jī)進(jìn)行數(shù)學(xué)運算時結(jié)果只取整數(shù)部分,因此當(dāng)輸出為(10000000)時計算出的電壓值V =2.OOV,很不準(zhǔn)確。為了提高精確度,必須把小數(shù)部分保留,具體運算方式如公式(2)。個位:Dout*196/10000 十分位:(Dout*196/1000)%10 百分位:(Dou
37、t*196/100)%10 千分位:(Dout*196/10)%10 由此得到較為精確的數(shù)值。對上面的硬件部分,按照軟件流程框圖進(jìn)行軟件設(shè)計。用C語言進(jìn)行程序的編寫。</p><p> (下面的是C語言程序,最后面幾頁還有匯編程序及其算法說明,可自己選擇)</p><p> #include<reg51.h></p><p> #include
38、<intrins.h></p><p> #define uchar unsigned char</p><p> sbit P2_0=P2^0;</p><p> sbit P2_1=P2^1; //定義數(shù)碼管位碼端口</p><p> sbit P2_2=P2^2;</p><
39、p> sbit P2_3=P2^3;</p><p> sbit OE=P3^0; //定義ADC0808端口</p><p> sbit EOC=P3^1;</p><p> sbit ST=P3^2;</p><p> sbit P3_4=P3^4;</p><p> s
40、bit P3_5=P3^5;</p><p> sbit P3_6=P3^6;</p><p> uchar code table1[]={0x40,0x79,0x24,0x30,0x19,0x12};//帶小數(shù)點的0~5六個</p><p> uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf
41、8,0x80,0x90};//共陽極0~9十個段碼/段碼</p><p> uchar volt_data;</p><p> void init();</p><p> uchar i;</p><p> //*********************************</p><p&g
42、t;<b> //延時子程序</b></p><p> //*********************************</p><p> void delay(uchar z)</p><p><b> {</b></p><p> uchar x,y;</p>&l
43、t;p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> //*********************************</p><p> //將AD轉(zhuǎn)換輸出的數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的</
44、p><p> //電壓值并且顯示出來</p><p> //*********************************</p><p> void convert(uchar volt_data)</p><p><b> {</b></p><p> P0=table1[volt_
45、data*196/10000]; //AD轉(zhuǎn)換的個位的電壓值</p><p><b> P2_0=1;</b></p><p><b> delay(2);</b></p><p><b> P2_0=0;</b></p><p> P0=tab[volt_da
46、ta*196/1000%10];</p><p> P2_1=1; //顯示小數(shù)點的后的第一位</p><p><b> delay(2);</b></p><p><b> P2_1=0;</b></p><p> P0=tab[volt_data*196/100%10];
47、 </p><p> P2_2=1; //顯示小數(shù)點的后的第二位</p><p><b> delay(2);</b></p><p><b> P2_2=0;</b></p><p> P0=tab[volt_data*196/10%10];</p><p&
48、gt; P2_3=1; //顯示小數(shù)點的后的第二位</p><p><b> delay(2);</b></p><p><b> P2_3=0;</b></p><p><b> }</b></p><p> void main()</p>&l
49、t;p><b> {</b></p><p> uchar volt_data;</p><p> init();//初始化子程序</p><p><b> while(1)</b></p><p><b> {</b></p><p>
50、<b> if(i==5)</b></p><p><b> {</b></p><p><b> i=0;</b></p><p><b> ST=0;</b></p><p><b> _nop_();</b></
51、p><p><b> ST=1;</b></p><p><b> _nop_();</b></p><p> ST=0; //啟動AD轉(zhuǎn)換</p><p> if(EOC==0) //等待轉(zhuǎn)換結(jié)束</p><p><b> d
52、elay(2);</b></p><p> while(EOC==0);</p><p> OE=1;//允許輸出</p><p> volt_data=P1;</p><p> convert(volt_data); //調(diào)用數(shù)據(jù)處理子程序</p><p> delay
53、(2);//暫存轉(zhuǎn)換結(jié)果</p><p> OE=0;//關(guān)閉輸出</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void time
54、0_int(void) interrupt 1</p><p><b> {</b></p><p> TH0=(65536-1000)/256; </p><p> TL0=(65536-1000)%256;</p><p><b> i++;</b></p><p&
55、gt;<b> }</b></p><p> void init()</p><p><b> {</b></p><p> P3_4=1;//選擇通道3</p><p><b> P3_5=1;</b></p><p>&l
56、t;b> P3_6=0;</b></p><p> TMOD=0x01;</p><p> TH0=(65536-1000)/256; </p><p> TL0=(65536-1000)%256;</p><p> EA=1;ET0=1;</p><p><b> i=0;&
57、lt;/b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p><b> 設(shè)計框圖</b></p><p><b> 3.1硬件總體框圖</b></p><p>
58、該系統(tǒng)硬件總體框圖由四個模塊組成,如下圖3所示。在芯片的選擇中,一般的A/D芯片具有多路轉(zhuǎn)換通道,本課程設(shè)計中我們只做一路通道,該通道采集電壓,對采集的電壓值進(jìn)行采集、處理并顯示,我們還可以通過改變A/D芯片的參考電壓來改變其量程,達(dá)到對電壓值的多樣化顯示。A/D芯片將輸入的模擬電壓值轉(zhuǎn)換為一個8位的二進(jìn)制數(shù)字,再輸送到單片機(jī)控制單元,經(jīng)過處理顯示出相應(yīng)電壓值。</p><p><b> 3.2主程序
59、流程圖</b></p><p> 設(shè)計程序部分時,主要應(yīng)包括主函數(shù)和和幾個功能子函數(shù)。主程序流程圖如下圖所示。</p><p> 3.3待測信號源單元電路</p><p> 待測信號源就是直流電壓采集時,所須測電壓值的信號源,其電路圖如圖3-3-1所示。</p><p> 該部分實際上是一個滑動變阻器均接在電源和地兩端,中
60、間的滑線端提供兩路待測信號,該部分提供給模數(shù)轉(zhuǎn)換的通道3。</p><p> 3.4 AT89C51單片機(jī)(如下圖所示)</p><p> 3.5單片機(jī)控制單元</p><p> 單片機(jī)控制單元是整個系統(tǒng)的核心中樞,對外圍進(jìn)行控制,對數(shù)據(jù)進(jìn)行運算處理,是連接各部分的紐帶。它主要包括51單片機(jī)芯片和其工作所必須的外圍電路,如時鐘振蕩電路和復(fù)位電路等。</p
61、><p> 3.5.1外部時鐘電路</p><p> 主要是通過一個12MHZ的時鐘晶振產(chǎn)生時鐘信號,以作為單片機(jī)工作的外部時鐘,其XTAL1和XTAL2分別接入到單片機(jī)上相對應(yīng)的引腳。電路圖如圖3-5-1。</p><p> 圖3-5-1 外部時鐘電路(圖中晶振標(biāo)錯了,應(yīng)為12M,上圖中我就不改了)</p><p> 外部時鐘的晶振頻率
62、為12MHZ,則通過該電路提供給單片機(jī)的時鐘也為12MHZ. </p><p><b> 3.5.2復(fù)位電路</b></p><p> 當(dāng)對單片機(jī)的的reset引腳加超過兩個機(jī)器周期以上的高電平時,可使單片機(jī)復(fù)位,即程序從頭開始執(zhí)行。設(shè)計的復(fù)位電路如圖3-5-2所示:</p><p> 圖3-5-2 復(fù)位電路</p>&l
63、t;p> 3.5.3數(shù)碼管顯示模塊</p><p> 選用了一片集成的共陰極數(shù)碼管,每片是由4塊8段數(shù)碼管組成(包括小數(shù)點位)。這4塊8斷數(shù)碼管共用相同的數(shù)據(jù)輸入線,每塊有一根片選線,只有選中了該數(shù)碼管,它才會點亮并顯示。而通過動態(tài)掃描原理可以使接在同一數(shù)據(jù)線的幾塊數(shù)碼管顯示不同的數(shù)。輸入BCD碼值,就可以在數(shù)碼管上顯示十進(jìn)制數(shù)字。其中有電壓表起校準(zhǔn)對比作用。</p><p>&
64、lt;b> 實驗仿真</b></p><p> 在Proteus仿真軟件平臺上搭建硬件電路,在keil uv2上編寫軟件并經(jīng)編譯連接生產(chǎn)可執(zhí)行的.hex文件,把該文件添加到在Proteus平臺上搭建好的電路的單片機(jī)里。運行進(jìn)行仿真調(diào)試。</p><p> 仿真時,數(shù)碼管有示數(shù),與標(biāo)準(zhǔn)電壓表的示數(shù)差不多,說明各模塊均在正常工作。</p><p>
65、; 例如,在5V量程下,標(biāo)準(zhǔn)電壓表的顯示值2.50V,而數(shù)碼管顯示2.406;標(biāo)準(zhǔn)電壓表顯示4.44V,數(shù)碼管示值為4.420。數(shù)碼管顯示結(jié)果有誤差是由于ADC0809輸出的二進(jìn)制碼數(shù)轉(zhuǎn)換為BCD碼數(shù)的換算方法有一定誤差導(dǎo)致。仿真結(jié)果如圖4-1</p><p><b> 實驗總結(jié)</b></p><p> 本設(shè)計是基于ADC0809設(shè)計的電壓檢測裝置。采用AT8
66、9C51單片機(jī)進(jìn)行數(shù)據(jù)控制、處理,結(jié)構(gòu)簡單,元件較少,成本較低,軟件采用c語言實現(xiàn),程序簡單可讀寫性強,效率高。能夠?qū)崿F(xiàn)八路待測電壓測量,還能夠自由選擇要測量的通道,與傳統(tǒng)的電路相比,具有方便操作、處理速度快、穩(wěn)定性高、性價比高的優(yōu)點,具有一定的使用價值。</p><p> 通過本次課程設(shè)計,我對模數(shù)轉(zhuǎn)換芯片ADC0809有進(jìn)一步了解,故我將此次設(shè)計的重點放在了功能的擴(kuò)展部分模塊的實現(xiàn)方法及顯示的改變上。大三學(xué)
67、期教學(xué)實驗中,通過網(wǎng)上資料及課本信息,我會會了簡單的編程和設(shè)計最重要的是排版效果,在這些過程中我獲益匪淺:加深了對模數(shù)轉(zhuǎn)換的了解,能對其功能進(jìn)行多元化的應(yīng)用;數(shù)碼管的顯示技術(shù)上,我在以前所存靜態(tài)顯示的基礎(chǔ)上,又掌握了動態(tài)掃描方法;另一個收獲是在課程設(shè)計的過程中,我邊學(xué)邊用C語言,對簡單的C語言編程能夠獨立輕松的完成,C語言在單片機(jī)的編程中靈活,功能強大,效率高,簡單明了,具有很多優(yōu)勢,學(xué)會它是此次課程設(shè)計的最大收獲。</p>
68、<p> 本次課程設(shè)計,培養(yǎng)了我運用互聯(lián)網(wǎng)查找資料和綜合應(yīng)用課本理論知識解決實際問題的能力。啟發(fā)了我,在今后的學(xué)習(xí)過程中不能懶懶散散,學(xué)的要懂不懂,要把課本上的知識學(xué)精通,同時也要多學(xué)習(xí)課外知識來擴(kuò)張自己的知識面;在計算和動手方面要更加的耐心加細(xì)心,才能把事情做得更好;在生活和學(xué)習(xí)中,要和身邊的人團(tuán)結(jié)互助,能幫的就要盡力幫。</p><p> 由于能力有限,我的課程設(shè)計難免有一些誤差和錯誤,還望
69、老師批評和指正!</p><p><b> 致謝</b></p><p> 本課程設(shè)計是在我的導(dǎo)師張斌張老師的親切關(guān)懷和悉心指導(dǎo)下完成的。他嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵著我。從課題的選擇到項目的最終完成,張老師都始終給予我細(xì)心的指導(dǎo)和不懈的支持。雖然只有短短的一星期,張老師去教會我們很多。在此謹(jǐn)向鄭老師致以誠摯的謝意和崇高的
70、敬意。 另外,我還要感謝在一起愉快的度過這次課程設(shè)計的伙伴,正是由于你們的幫助和支持,我才能克服一個一個的困難和疑惑,直至本文的順利完成。特別感謝我的隊友,他對本課題做了不少工作,給予我不少的幫助。</p><p><b> 參考文獻(xiàn)</b></p><p> [1].戴梅萼 史嘉權(quán) 微型計算機(jī)技術(shù)及應(yīng)用 北京:清華大學(xué)出版社,2003</p>
71、<p> [2].仇玉章 32位微型計算機(jī)原理與接口技術(shù) 北京:清華大學(xué)出版社,2001</p><p> [3].鄭學(xué)堅 周斌 微型計算機(jī)原理及應(yīng)用 北京:清華大學(xué)出版社,1998</p><p> [4].李伯成 候伯亭 微型計算機(jī)及應(yīng)用 西安:電子科技大學(xué)出版社,1998</p><p> [5].鄧元慶 賈鵬 數(shù)字電路與系統(tǒng)設(shè)計 西
72、安:電子科技大學(xué)出版社,2003</p><p> 下面是匯編程序,其中的BCD的轉(zhuǎn)換算法不同,不過后有解釋</p><p> LED_0 EQU 30H;存放三個數(shù)碼管的段碼</p><p> LED_1 EQU 31H</p><p> LED_2EQU 32H</p><
73、p> ADC EQU 35H;存放AD轉(zhuǎn)換后的數(shù)據(jù)</p><p> ST BIT P3.2</p><p> OE BIT P3.0</p><p> EOC BIT P3.1</p><p> ORG 0000H</p><p><b>
74、LJMPMAIN</b></p><p><b> ORG0030H</b></p><p> MAIN:MOVLED_0,#00H ;給顯示賦初值0</p><p> MOV LED_1,#00H</p><p> MOV LED_2,#00H </p>
75、;<p> SETB P3.4</p><p> SETB P3.5</p><p> CLR P3.6;選擇通道3</p><p> WAIT: CLR ST</p><p><b> SETB ST</b></p><p> CLR
76、 ST;啟動AD轉(zhuǎn)換</p><p> JNB EOC,$;等待轉(zhuǎn)換結(jié)束</p><p> SETB OE;允許輸出</p><p> MOV ADC ,P1;暫存轉(zhuǎn)換結(jié)果</p><p> CLR OE;關(guān)閉輸出</p><p> LCALL
77、BCD;調(diào)用數(shù)據(jù)處理子程序</p><p> LCALL LED;調(diào)用顯示程序,顯示轉(zhuǎn)換的值</p><p> SJMP WAIT</p><p> ;*******************************************</p><p> ;將AD轉(zhuǎn)換輸出的數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的電壓值</p&
78、gt;<p> ;*******************************************</p><p> BCD:MOVA,ADC;將AD轉(zhuǎn)換結(jié)果轉(zhuǎn)換成BCD碼</p><p> MOV B,#51 ;255/51=5.00V</p><p><b> DIV AB</b>
79、</p><p> MOV LED_2,A;個位數(shù)字存入LED_2中</p><p> MOV A,B;余數(shù)大于19H,F(xiàn)0為1乘法溢出,結(jié)果加5</p><p><b> CLR F0</b></p><p> SUBB A,#1AH</p><p>
80、; MOV F0,C</p><p> MOV A, #10</p><p><b> MUL AB</b></p><p> MOV B,#51</p><p><b> DIV AB</b></p><p> JB F0,LOOP2&
81、lt;/p><p> ADD A,#5</p><p> LOOP2:MOV LED_1,A;小數(shù)后的第一位存入LED_1中</p><p><b> MOV A,B</b></p><p><b> CLR F0</b></p><p>
82、SUBB A,#1AH</p><p> MOV F0,C</p><p> MOV A,#10</p><p><b> MUL AB</b></p><p> MOV B,#51</p><p><b> DIV AB</b><
83、/p><p> JB F0,LOOP3</p><p> ADD A,#5</p><p> LOOP3:MOV LED_0,A;小數(shù)后的第二位存入LED_0中</p><p><b> RET</b></p><p> ;***********************
84、******************</p><p> ; 顯示程序</p><p> ;*****************************************</p><p> LED:MOVA,LED_0;數(shù)碼顯示子程序</p><p> MOV DPTR,#TABLE ;送段
85、碼表首地址</p><p> MOVC A,@A+DPTR</p><p> SETB P2.3;允許百位輸出,該數(shù)碼管為共陽極形</p><p> MOV P0,A;將位段碼送給P0口</p><p> LCALL DELAY;調(diào)用延時程序</p><p> CLR
86、P2.3;關(guān)閉百位顯示</p><p> MOV A,LED_1</p><p> MOV DPTR,#TABLE ;送段碼表首地址</p><p> MOVC A,@A+DPTR</p><p> SETB P2.2;允許十位輸出,該數(shù)碼管為共陽極形</p><p&g
87、t; MOV P0,A;將位段碼送給P0口</p><p> LCALL DELAY;調(diào)用延時程序</p><p> CLR P2.2;關(guān)閉十位顯示</p><p> MOV A,LED_2</p><p> MOV DPTR,#TABLE2 ;送段碼表首地址</p>
88、;<p> MOVC A,@A+DPTR</p><p> SETB P2.1;允許個位輸出,該數(shù)碼管為共陽極形</p><p> MOV P0,A;將位段碼送給P0口</p><p> LCALL DELAY ;調(diào)用延時程序</p><p> CLR P2.1
89、;關(guān)閉個位顯示</p><p><b> RET</b></p><p> ;**************************************</p><p> ; 延時程序</p><p> ;**************************************&l
90、t;/p><p> DELAY:MOV R6,#2;延時1MS子程序</p><p> D1: MOV R7,#250</p><p> DJNZ R7,$</p><p> DJNZ R6,D1</p><p><b> RET</b></p>
91、;<p> TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H</p><p> DB 92H, 82H,0F8H, 80H,90H;共陽極0~9十個段碼</p><p> TABLE2:DB 40H,79H,24H,30H,19H,12H;帶小數(shù)點的0~5六個段碼</p><p><b>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)的直流電壓檢測系統(tǒng)設(shè)計課程設(shè)計
- 基于單片機(jī)的直流電壓檢測系統(tǒng)設(shè)計課程設(shè)計
- 單片機(jī)課程設(shè)計-直流電機(jī)
- 單片機(jī)課程設(shè)計-- 簡易直流電壓表的設(shè)計
- 基于單片機(jī)的直流電壓表的課程設(shè)計
- 單片機(jī)課程設(shè)計--單片機(jī)控制直流電機(jī)的轉(zhuǎn)動
- 單片機(jī)課程設(shè)計---基于單片機(jī)的直流電機(jī)控制
- 單片機(jī)課程設(shè)計論文--直流電機(jī)調(diào)速
- 課程設(shè)計--單片機(jī)直流電機(jī)調(diào)速系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計---可調(diào)直流電機(jī)設(shè)計
- 基于單片機(jī)的直流電機(jī)測速、調(diào)速及顯示系統(tǒng)課程設(shè)計
- 小直流電機(jī)調(diào)速實驗單片機(jī)課程設(shè)計
- 課程設(shè)計---基于單片機(jī)的直流電機(jī)測速、調(diào)速及顯示系統(tǒng)設(shè)計
- 基于avr單片機(jī)的數(shù)控直流電壓源設(shè)計
- 單片機(jī)微型直流電機(jī)控制系統(tǒng)課程設(shè)計
- 單片機(jī)微型直流電機(jī)控制系統(tǒng)課程設(shè)計
- 單片機(jī)控制直流電動機(jī)——課程設(shè)計
- 單片機(jī)課程設(shè)計---基于單片機(jī)直流電機(jī)測速及其控制系統(tǒng)
- 單片機(jī)控制直流電動機(jī)課程設(shè)計
- 課程設(shè)計--基于51單片機(jī)的數(shù)控直流電源設(shè)計
評論
0/150
提交評論