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