畢業(yè)設(shè)計(論文)-基于單片機的數(shù)字電壓表設(shè)計(3).doc_第1頁
畢業(yè)設(shè)計(論文)-基于單片機的數(shù)字電壓表設(shè)計(3).doc_第2頁
畢業(yè)設(shè)計(論文)-基于單片機的數(shù)字電壓表設(shè)計(3).doc_第3頁
畢業(yè)設(shè)計(論文)-基于單片機的數(shù)字電壓表設(shè)計(3).doc_第4頁
畢業(yè)設(shè)計(論文)-基于單片機的數(shù)字電壓表設(shè)計(3).doc_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

前言數(shù)字電壓表設(shè)計前言伴隨著城市人口和建設(shè)規(guī)模的擴大,各種用電設(shè)備的增多,用電量越來越大,城市的供電設(shè)備經(jīng)常超負(fù)荷運轉(zhuǎn),用電環(huán)境變得越來越惡劣,對電源的“考驗”越來越嚴(yán)重。據(jù)統(tǒng)計,每天,用電設(shè)備都要遭受120次左右各種的電源問題的侵?jǐn)_,電子設(shè)備故障的60%來自電源7。因此,電源問題的重要性日益凸顯出來。原先作為配角,資金投入較少的電源越來越受到廠商和研究人員的重視,電源技術(shù)遂發(fā)展成為一門嶄新的技術(shù)。而今,小小的電源設(shè)備已經(jīng)融合了越來越多的新技術(shù)。例如開關(guān)電源、硬開關(guān)、軟開關(guān)、參數(shù)穩(wěn)壓、線性反饋穩(wěn)壓、磁放大器技術(shù)、數(shù)控調(diào)壓、pwm、spwm、電磁兼容等等。實際需求直接推動電源技術(shù)不斷發(fā)展和進(jìn)步,為了自動檢測和顯示電流,并在過流、過壓等危害情況發(fā)生時具有自動保護功能和更高級的智能控制,具有傳感檢測、傳感采樣、傳感保護的電源技術(shù)漸成趨勢,檢測電流或電壓的傳感器便應(yīng)運而生并在我國開始受到廣大電源設(shè)計者的青睞,本文就是在這個背景下編著的。第33頁(共34頁)第1章 緒論數(shù)字電壓表的基本工作原理是利用a/d轉(zhuǎn)換電路將待測的模擬信號轉(zhuǎn)換成數(shù)字信號,通過相應(yīng)換算后將測試結(jié)果以數(shù)字形式顯示出來的一種電壓表。較之于一般的模擬電壓表,數(shù)字電壓表具有精度高、測量準(zhǔn)確、讀數(shù)直觀、使用方便等優(yōu)點。電壓表的數(shù)字化測量,關(guān)鍵在于如何把隨時連續(xù)變化的模擬量轉(zhuǎn)化成數(shù)字量,完成這種轉(zhuǎn)換的電路叫模數(shù)轉(zhuǎn)換器(a/d)。數(shù)字電壓表的核心部件就是a/d轉(zhuǎn)換器,由于各種不同的a/d轉(zhuǎn)換原理構(gòu)成了各種不同類型的dvm。一般說來,a/d轉(zhuǎn)換的方式可分為兩類:積分式和逐次逼近式。積分式a/d轉(zhuǎn)換器是先用積分器將輸入的模擬電壓轉(zhuǎn)換成時間或頻率,再將其數(shù)字化。根據(jù)轉(zhuǎn)化的中間量不同,它又分為u-t(電壓-時間)式和u-f(電壓-頻率)式兩種。逐次逼近式a/d轉(zhuǎn)換器分為比較式和斜坡電壓式,根據(jù)不同的工作原理,比較式又分為逐次比較式及零平衡式等。斜坡電壓式又分為線性斜坡式和階梯斜坡式兩種。在高精度數(shù)字電壓表中,常采用由積分式和比較式相結(jié)合起來的復(fù)合式a/d轉(zhuǎn)換器。本設(shè)計以at89c51單片機為核心,以逐次比較型a/d轉(zhuǎn)換器adc0808、液晶顯示器lcd1602為主體,構(gòu)造了一款簡易的數(shù)字電壓表,能夠測量1路050v直流電壓,最小分辨率0.02v。方案設(shè)計實現(xiàn)數(shù)字電壓表的方案較多,目前廣泛采用的是基于74系列邏輯器件方案,本設(shè)計將介紹基于單片機實現(xiàn)的方案。74系列邏輯器件方案采用雙積分電路+液晶顯示器+邏輯電路+定時采樣電路+數(shù)據(jù)處理實現(xiàn),被測電壓信號由信號輸入端加到測量系統(tǒng),進(jìn)行預(yù)處理后送到后級電路。單片機系統(tǒng)方案此方案采用輸入處理電路+adc0808+at89c51+液晶顯示實現(xiàn),被測信號由adc0808模擬輸入端輸入,單片機采集轉(zhuǎn)換數(shù)據(jù),將轉(zhuǎn)換數(shù)據(jù)送出顯示。方案選擇第二章 方案選擇2.1方案選擇2.1.1量程轉(zhuǎn)換方案設(shè)計 方案一:考慮到adc0808的八路模擬量輸入通道本質(zhì)上也是模擬開關(guān),因此可以利用其八個模擬通道中的三個作為量程轉(zhuǎn)換器,即根據(jù)通道對應(yīng)的電壓測量范圍確定對應(yīng)的電壓發(fā)達(dá)倍數(shù)設(shè)計對應(yīng)的前置放大電路.方案二:選用模擬開關(guān)芯片4066實現(xiàn)量程轉(zhuǎn)換。4066集成了4個模擬開關(guān),每一路開關(guān)都有一個控制端控制對應(yīng)開關(guān)的通斷。用單片機對控制端進(jìn)行控制,實現(xiàn)不同量程的轉(zhuǎn)換。方案三:利用手動開關(guān)實現(xiàn)量程轉(zhuǎn)換。該方案可簡化控制程序,減小系統(tǒng)開銷,縮短反應(yīng)時間,不足之處在于操作麻煩。終上所述:方案三所需元件少、成本低且易于實現(xiàn),可選此方案。2.1.2顯示部分方案設(shè)計方案一:用液晶lcd1602來顯示電壓讀數(shù)可進(jìn)行片選,實現(xiàn)液晶的動態(tài)點亮。因為只需一片液晶就可以完成現(xiàn)示工作,所以當(dāng)單片機控制前兩個控制端時,最高位控制端應(yīng)接地。用軟件作為液晶的驅(qū)動顯示,且具體譯碼由軟件控制。方案二:同方案一選用adc0808進(jìn)行片選,在譯碼驅(qū)動部分選用液晶lcd1602,用軟件譯碼。終上所述:由于兩個方案都可以實現(xiàn)同樣的功能,但方案二設(shè)計簡單、系統(tǒng)開銷小、反應(yīng)速度較快,因此選擇此方案。2.2方案論證經(jīng)過以上方案設(shè)計,決定采用如圖2-1所示方案。圖2-1 系統(tǒng)框硬件設(shè)計第3章 硬件設(shè)計3.1單片機控制模塊設(shè)計單片機控制模塊的作用是為控制各單元電路的運行并完成數(shù)據(jù)的換算或處理,主要由單片機、時鐘電路、復(fù)位電路組成。3.1.1時鐘電路單片機工作的時間基準(zhǔn)是由時鐘電路提供的,在單片機的xtal1和xyal2兩個管腳接一只晶振及兩只電容就構(gòu)成了單片機的時鐘電路,電路中電容器和對振蕩頻率有微調(diào)作用,通常取(3010)pf石英晶體選擇6mhz或12mhz都可以。時鐘電路如圖3-1所示。 圖3-1系統(tǒng)時鐘電路 圖3-2系統(tǒng)復(fù)位電路3.1.2復(fù)位電路單片機的rst管腳為主機提供了一個外部復(fù)位信號輸入口。復(fù)位信號是高電平有效,高電平有效的持續(xù)時間為2個機器周期以上。單片機的復(fù)位方式可由手動復(fù)位方式完成。電阻、電容器的參考值=10k、=10uf、=0.01uf。復(fù)位電路如圖3-2所示。3.2 量程轉(zhuǎn)換模塊設(shè)計3.2.1 電路選擇圖3-3量程轉(zhuǎn)換開關(guān) 圖3-4衰減輸入電路輸入電路的作用是把不同量程的被測電壓,規(guī)范到a/d轉(zhuǎn)換器所要求的電壓值。數(shù)字電壓表所采用的是逐次逼近式a/d轉(zhuǎn)換芯片adc0808,它要求輸入電壓0-2v。本儀表設(shè)計的是0-50v電壓,靈敏度高所以可以不加前置放大器,只需衰減器,如圖所示9m、900k、90k、和10k電阻構(gòu)成1/10、1/100、1/1000的衰減器。衰減輸入電路可由開關(guān)來選擇不同的衰減率,從而切換檔位。3.2.2 工作原理及換算關(guān)系如上圖通過電阻網(wǎng)絡(luò)實現(xiàn)電壓衰減測量的輸入阻抗約為r4、r5、r6。1端、2端單獨合上時,vout的大小分別是:1腳單獨合上vout=vin1;2腳單獨合上vout= vin(r4+ r5+ r6)/(r3+ r4+ r5+ r6)。由上式可以看出,vout在一定范圍時電阻網(wǎng)絡(luò)衰減程度越大其可輸入電壓vin。量程調(diào)節(jié),只要把r5,r6的參數(shù)選好然后,由開關(guān)1端、2斷選擇測量電壓輸出端即完成量程選定。3.3 逐次逼近式a/d轉(zhuǎn)換模塊設(shè)計逐次逼近型a/d轉(zhuǎn)換器屬于直接型a/d轉(zhuǎn)換器,它能把輸入的模擬電壓直接轉(zhuǎn)換為輸出的數(shù)字代碼,而不需要經(jīng)過中間變量。主要由比較器、環(huán)形分配器、控制門、寄存器與d/a轉(zhuǎn)換器組成。3.3.1 adc0808簡介1adc0808引腳功能圖3-5adc0808引腳圖in0in7:8路模擬量輸入。a、b、c:3位地址輸入,2個地址輸入端的不同組合選擇八路模擬量輸入。ale:地址鎖存啟動信號,在ale的上升沿,將a、b、c上的通道地址鎖存到內(nèi)部的地址鎖存器。d0d7:八位數(shù)據(jù)輸出線,a/d轉(zhuǎn)換結(jié)果由這8根線傳送給單片機。oe:允許輸出信號。當(dāng)oe=1時,即為高電平,允許輸出鎖存器輸出數(shù)據(jù)。start:啟動信號輸入端,start為正脈沖,其上升沿清除adc0808的內(nèi)部的各寄存器,其下降沿啟動a/d開始轉(zhuǎn)換。eoc:轉(zhuǎn)換完成信號,當(dāng)eoc上升為高電平時,表明內(nèi)部a/d轉(zhuǎn)換已完成。2adc0808內(nèi)部結(jié)構(gòu)圖逐次逼近型a/d轉(zhuǎn)換器adc0808由八路模擬開關(guān)、地址鎖存與譯碼器、比較器、d/a轉(zhuǎn)換器、寄存器、控制電路和三態(tài)輸出鎖存器等組成。其內(nèi)部結(jié)構(gòu)如圖3-6所示。圖3-6adc0808內(nèi)部結(jié)構(gòu)3.3.2 a/d轉(zhuǎn)換電路設(shè)計集成摸數(shù)轉(zhuǎn)換芯片adc0808實現(xiàn)的a/d轉(zhuǎn)換電路如圖3-7所示,被測信號由adc0808模擬輸入端輸入,完成a/d轉(zhuǎn)換后送入單片機,經(jīng)相應(yīng)處理后送出顯示。圖3-7adc0808與單片機的連接3.4顯示模塊設(shè)計3.4.1 lcd顯示模塊lcd顯示器分為字段顯示和字符顯示兩種。其中字段顯示與led顯示相似,只要送對應(yīng)的信號到相應(yīng)的管腳就能顯示。字符顯示是根據(jù)需要顯示基本字符。本設(shè)計采用的是字符型顯示。系統(tǒng)中采用lcd1602作為顯示器件輸出信息。與傳統(tǒng)的led數(shù)碼管顯示器件相比,液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等優(yōu)點,而且不需要外加驅(qū)動電路,現(xiàn)在液晶顯示模塊已經(jīng)是單片機應(yīng)用設(shè)計中最常用的顯示器件了。lcd1602可以顯示2行16個漢字。3.4.2 lcd1602的引腳功能lcd1602模塊的引腳如圖3-8所示,其引腳功能如下:rs:數(shù)據(jù)和指令選擇控制端,rs=0命令狀態(tài);rs=1數(shù)據(jù)r/w:讀寫控制線,r/w=0寫操作;r/w=1讀操作a:背光控制正電源 k:背光控制地e:數(shù)據(jù)讀寫操作控制位,e線向lcd模塊發(fā)送一個脈沖,lcd模塊與單片機間將進(jìn)行一次數(shù)據(jù)交換db0db7:數(shù)據(jù)線,可以用8位連接,也可以只用高4位連接,節(jié)約單片機資源。vdd:電源端 vee:亮度控制端(1-5v)vss vdd vo rs r/w e db0 db1 db2 db3 db4 db5 db6 db7 a klcd 模 塊1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 vss:接地端圖3-8lcd1602模塊3.4.3 lcd1602的顯示操作1四種基本操作lcd有四種基本操作,具體如表3-1所示。表3-1 lcd與單片機之間有四種基本操作rsr/w操作00寫命令操作(初始化,光標(biāo)定位等)01讀狀態(tài)操作(讀忙標(biāo)志位)10寫數(shù)據(jù)操作(要顯示內(nèi)容)11讀數(shù)據(jù)操作(可以把顯示存儲區(qū)中的數(shù)據(jù)反讀出來)(1)讀狀態(tài)字執(zhí)行讀狀態(tài)字操作,如表3-1滿足rs=0,r/w=1。根據(jù)管腳功能,當(dāng)為有效電平時,狀態(tài)命令字可從lcd模塊傳輸?shù)綌?shù)據(jù)總線。同時可以保持一段時間,從而實現(xiàn)讀狀態(tài)字的功能。讀狀態(tài)字流程如圖3-9所示。圖3-9 讀入狀態(tài)字流程圖(2)命令字表3-2所示為命令字,其主要介紹了指令名稱、控制信號及控制代碼。其指令名稱是指要實現(xiàn)的功能;控制代號是采用的十六進(jìn)制的數(shù)值表示的。1)清零操作是指輸入某命令字后即能將整個屏幕顯示的內(nèi)容全部清除;2)歸home位:將光標(biāo)送到初始位;其中的號為任意,高低電平均可;3)輸入方式:設(shè)光標(biāo)移動方向并指定整體顯示,是否移動。i/d=0:減量方式,s=1:移位方式,s=0:不移位;4)顯示狀態(tài):d指設(shè)置整體顯示開關(guān);c指設(shè)置光標(biāo)顯示開關(guān);b指設(shè)置光標(biāo)的字符閃耀;5)光標(biāo)畫面滾動:r/l指右移或左移;s/c指移動總體或光標(biāo);6)功能設(shè)置:dl接口數(shù)位,l指顯示行數(shù),f顯示字型;如dl=1:8位=0,4位n=1:2行=0:1行,g=1:510=0:57(點陣)7)cgram地址設(shè)制:相當(dāng)于一個數(shù)據(jù)庫,可以在其中選擇所需要的符號;8)ddram地址設(shè)制:顯示定位;9)讀bf和ac:b為最高位忙的標(biāo)志,f為標(biāo)志位;10)寫數(shù)據(jù):將數(shù)據(jù)按要求寫入到對應(yīng)的單元;11)讀數(shù)據(jù):讀相應(yīng)單元內(nèi)的數(shù)據(jù);表3-2命令字指令名稱控制信號控制代碼rsrwd7d6d5d4d3d2d1d0清屏0000000001歸home位000000001*輸入方式設(shè)制00000001i/ds顯示狀態(tài)設(shè)制0000001dcb無標(biāo)畫面滾動000001s/crl*功能設(shè)置00001dlnf*cgram地址設(shè)制0001a5a4a3a2a1a0ddram地址設(shè)制001a6a5a4a3a2a1a0讀bf和ac01bfac6ac5ac4ac3ac2ac1ac0寫數(shù)據(jù)10數(shù) 據(jù)讀數(shù)據(jù)11數(shù) 據(jù)(3)寫命令字由表3-2可知當(dāng)rs=0,r/w=0時,才可以通過單片機或用戶指令把數(shù)據(jù)寫到lcd模塊,此時就對lcd進(jìn)行調(diào)制??刹捎貌樵兎绞剑合茸x入狀態(tài)字,再判斷忙標(biāo)志位,最后寫命令字。圖3-10所示為寫命令字的流程圖。圖3-10寫命令字流程圖1)定義光標(biāo)位置顯示數(shù)據(jù)的某位,就是把顯示數(shù)據(jù)寫在相應(yīng)的ddram地址中,ddram地址占7位。setddramaddress命令如表3-3所示。光標(biāo)定位,寫入一個顯示字符后,ddram地址會自動加1或減1,加或減由輸入方式設(shè)置。表3-3set ddram address命令rsr/wdb7db6db5db4db3db2db1db0001ac6ac5ac4ac3ac2ac1ac0第1行ddram地址與第2行ddram地址并不連續(xù),如表3-4所示。表3-4ddram地址row12345141516line180h81h82h83h84h8dh8eh8fhline20c0h0c1h0c2h0c3h0c4h0cdh0ceh0cfh2)lcd初始化從通電開始延時,先經(jīng)過判忙后再進(jìn)行功能設(shè)置,過一段時間后可以設(shè)制顯示狀態(tài)(如設(shè)制行、位或陣列)再經(jīng)過延時清屏后才可以設(shè)置輸入方式,具體實現(xiàn)過程如圖3-11所示。圖3-11lcd初始化流程圖2lcd顯示程序設(shè)計lcd顯示程序的設(shè)計一般先要確定lcd的初始化、光標(biāo)定位、確定顯示字符后,顯示流程如圖3-12顯示。圖3-12lcd顯示程序流程圖軟件設(shè)計第4章 軟件設(shè)計根據(jù)需要,可將系統(tǒng)軟件按照功能劃分為4個模塊,分別是主程序模塊、a/d轉(zhuǎn)換模塊、液晶顯示模塊、中斷服務(wù)程序模塊(改變顯示的小數(shù)點位置),各模塊的功能關(guān)系如圖4-1所示。編寫系統(tǒng)軟件時,可首先編寫各模塊的底層驅(qū)動程序,而后是系統(tǒng)聯(lián)機調(diào)試,編寫上層主程序。系統(tǒng)主程序液晶管顯示a/d轉(zhuǎn)換中斷服務(wù).圖4-1系統(tǒng)軟件框圖4.1 主程序設(shè)計圖4-2主程序流程圖主程序主要負(fù)責(zé)各個模塊的初始化工作:設(shè)置定時器、寄存器的初值,啟動a/d轉(zhuǎn)換,讀取轉(zhuǎn)換結(jié)果,處理量程轉(zhuǎn)換響應(yīng),控制液晶實時顯示等,其流程圖如圖4-2所示。4.2 a/d轉(zhuǎn)換程序a/d轉(zhuǎn)換程序的功能是采集數(shù)據(jù),在整個系統(tǒng)設(shè)計中占有很高的地位。當(dāng)系統(tǒng)設(shè)置好后,單片機掃描轉(zhuǎn)換結(jié)束管腳p2.6的輸入電平狀態(tài),當(dāng)輸入為高電平則轉(zhuǎn)換完成,將轉(zhuǎn)換的數(shù)值轉(zhuǎn)換并顯示輸出。若輸入為低電平,則繼續(xù)掃描。程序流程圖如圖4-3所示。圖4-3 a/d轉(zhuǎn)換程序流程圖4.3 中斷服務(wù)程序中斷服務(wù)程序的功能是為adc0808提供時鐘信號,當(dāng)中斷發(fā)生時將at89c51單片機的p2.4管腳將輸出信號取反,為adc0808提供12khz時鐘信號。4.3.1、中斷和中斷源所謂中斷就是cpu暫停當(dāng)前程序的執(zhí)行,轉(zhuǎn)而執(zhí)行處理緊急事務(wù)的程序,并在該事務(wù)處理完后能自動恢復(fù)執(zhí)行原先程序的過程。在此,稱引起緊急事務(wù)的事件為中斷源,稱處理緊急事務(wù)的程序為中斷服務(wù)程序或中斷處理程序。 計算機系統(tǒng)還根據(jù)緊急事務(wù)的緊急程度,把中斷分為不同的優(yōu)先級,并規(guī)定:高優(yōu)先級的中斷能暫停低優(yōu)先級的中斷服務(wù)程序的執(zhí)行。計算機系統(tǒng)有上百種可以發(fā)出中斷請求的中斷源,但最常見的中斷源是:外設(shè)的輸入輸出請求,如:鍵盤輸入引起的中斷,通信端口接受信息引起的中斷等;還有一些計算機內(nèi)部的異常事件,如:0作除數(shù)、奇偶校驗錯等。cpu在執(zhí)行程序時,是否響應(yīng)中斷要取決于以下三個條件能否同時滿足:(1)、有中斷請求;(2)、允許cpu接受中斷請求;(3)、一條指令執(zhí)行完,下一條指令還沒有開始執(zhí)行。條件(1)是響應(yīng)中斷的主體。除用指令int所引起的軟件中斷之外,其它中斷請求信號是隨機產(chǎn)生的,程序員是無法預(yù)見的。程序員可用程序部分地控制條件(2)是否滿足,即可用指令sti和cli來允許或不允許cpu響應(yīng)可屏蔽的外部中斷。而對于不可屏蔽中斷和內(nèi)部中斷,cpu一定會響應(yīng)它們的,程序員是無控制權(quán)的。cpu一定會執(zhí)行這些中斷的中斷服務(wù)程序。4.3.2、斷向量表和中斷服務(wù)程序中斷向量表是一個特殊的線性表,它保存著系統(tǒng)所有中斷服務(wù)程序的入口地址(偏移量和段地址)。在微機系統(tǒng)中,該向量表有256個元素(00ffh),每個元素占4個字節(jié),總共1k字節(jié),其在內(nèi)存中的存儲形式及其存儲內(nèi)容如圖8.2所示。圖4-4中的“中斷偏移量”和“中斷段地址”是指該中斷服務(wù)程序入口單元的“偏移量”和“段地址”。由此不難看出:假如中斷號為n,那么,在中斷向量表中存儲該中斷處理程序的入口地址的單元地址為:4n。表4-5說明了前16個中斷向量表中列舉了部分常用的中斷號。圖4-4 中斷向量表表4-5 部分常用的中斷號及其含義中斷號含義中斷號含義0除法出錯8定時器1單步9鍵盤2非屏蔽中斷a未用3斷點bcom24溢出ccom15打印屏幕d硬盤(并行口)6未用e軟盤7未用f打印機4.3.3引起中斷的指令中斷處理程序基本上是系統(tǒng)程序員編寫好的,是為操作系統(tǒng)或用戶程序服務(wù)的。為了在應(yīng)用程序中使用中斷服務(wù)程序,程序員必須能夠在程序中有目的地安排中斷的發(fā)生。為此,指令系統(tǒng)提供了各種引起中斷的指令。1、中斷指令int中斷指令int的一般格式如下:int imm其中:立即數(shù)imm是一個00ffh范圍內(nèi)的整數(shù)。指令執(zhí)行的步驟:、把標(biāo)志寄存器壓棧,清除標(biāo)志位if和tf;、把代碼段寄存器cs的內(nèi)容壓棧,并把中斷服務(wù)程序入口地址的高字部分送cs;、32位段,壓32位ip。在該指令執(zhí)行完后,cpu將轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。由于有了指令int,程序員就能為滿足某種特殊的需要,在程序中有目的地安排中斷的發(fā)生,也就是說,該中斷不是隨機產(chǎn)生的,而是完全受程序控制的。一般情況下,一個中斷可有很多不同的功能,每個功能都有一個唯一的功能號,所以,在安排中斷之前, 程序員還要決定需要該中斷的哪個功能,中斷的功能號都是由ah來確定的。有些中斷還需要其它參數(shù),常用中斷的功能和參數(shù)如附錄3所列。2、溢出指令into當(dāng)標(biāo)志位of為1時,引起中斷。該指令的格式如下:into該指令影響標(biāo)志位:if和tf。4.3.4 中斷返回指令當(dāng)一個中斷服務(wù)程序執(zhí)行完畢時,cpu將恢復(fù)被中斷的現(xiàn)場,返回到引起中斷的程序中。為了實現(xiàn)此項功能,指令系統(tǒng)提供了一條專用的中斷返回指令。該指令的格式如下:iret/iretd該指令執(zhí)行的過程基本上是int指令的逆過程,具體如下:、從棧頂彈出內(nèi)容送入ip;、再從新棧頂彈出內(nèi)容送入cs;、再從新棧頂彈出內(nèi)容送入標(biāo)志寄存器;對80386及其以后的cpu,指令iretd從棧頂彈出32位內(nèi)容送入eip。4.3.5 中斷和子程序的比較中斷和子程序調(diào)用之間有其相似和不同之處。它們的工作過程非常相似,即:暫停當(dāng)前程序的執(zhí)行,轉(zhuǎn)而執(zhí)行另一程序段,當(dāng)該程序段執(zhí)行完時,cpu都自動恢復(fù)原程序的執(zhí)行。如圖4-6所示。圖4-6 中斷和子程序調(diào)用的工作過程它們的主要差異有:l 子程序調(diào)用一定是程序員在編寫源程序時事先安排好的,是可知的,而中斷是由中斷源根據(jù)自身的需要產(chǎn)生的,是不可預(yù)見的(用指令int引起的中斷除外);l 子程序調(diào)用是用call指令來實現(xiàn)的,但沒有調(diào)用中斷的指令,只有發(fā)出中斷請求的事件(指令int是發(fā)出內(nèi)部中斷信號,而不要理解為調(diào)用中斷服務(wù)程序);l 子程序的返回指令是ret,而中斷服務(wù)程序的返回指令是iret/iretd。l 在通常情況下,子程序是由應(yīng)用系統(tǒng)的開發(fā)者編寫的,而中斷服務(wù)程序是由系統(tǒng)軟件設(shè)計者編寫的。系統(tǒng)仿真與調(diào)試第5章 系統(tǒng)仿真與調(diào)試在進(jìn)行電路的局部調(diào)試之后,我又進(jìn)行了系統(tǒng)整機調(diào)試。首先為adc0808接上+12v的電壓,為其它芯片接上+5v的工作電壓。另外還要輸入待測的模擬電壓,該電壓從200mv以下的電壓開始輸起,依次增大,直到達(dá)到待測電壓的上限50v為止,記錄測量數(shù)據(jù)并分析系統(tǒng)性能。5.1 分局部調(diào)試1檢查adc0808是否工作adc0808集成了三個控制端。如果某一控制端為高電平則對應(yīng)的開關(guān)將接通。為測量其是否工作,我們將它的三個控制端用導(dǎo)線引出分別接高低電平,發(fā)現(xiàn)測量結(jié)果與理論分析結(jié)果一致,adc0808工作正常。2各量程調(diào)節(jié)這一步調(diào)試是建立在上述兩步調(diào)試的基礎(chǔ)上的。針對不同的檔位,我們通過接入不同待測的模擬量來調(diào)節(jié)電壓。5.2 整機調(diào)試本系統(tǒng)的測試采用proteus軟件,系統(tǒng)在proteus軟件中仿真時使用的元件如表5-1所示。測試表明,系統(tǒng)運行正常,能準(zhǔn)確將直流模擬信號的電壓轉(zhuǎn)換成數(shù)值顯示,并能精確到5位有效數(shù)字,達(dá)到了設(shè)計的要求。表5-1 元件名稱及屬性序號元件名屬性序號元件名屬性1at89c51單片機7lm016llcd16023cap電容8adc08088位a/d轉(zhuǎn)換器4cap-elec電解電容9pullup上拉電阻5crystal晶振10sw-pot44路模擬開關(guān)6res電阻1174ls02與非門5.3 系統(tǒng)仿真采用keil編譯器進(jìn)行源程序編譯及仿真調(diào)試,調(diào)好程序后將目標(biāo)程序?qū)雙roteus進(jìn)行軟硬件調(diào)試,基于單片機實現(xiàn)的數(shù)字電壓表測試值見表5-2所示。表5-2測試值與真實值電壓表測得值/v0.000.3320.390.5070.9961.2501.5032.0002.480絕對誤差/v0.00+0.02+0.01+0.02+0.01+0.01+0.03+0.00+0.01電壓表測得值/v4.9805.079.9612.5015.0319.9229.8839.8449.80絕對誤差/v+0.00+0.02+0.01+0.01+0.02+0.02+0.02+0.03+0.02從表中可以看出,電壓表測得值誤差均在0.02v以內(nèi),這與采用8位a/d轉(zhuǎn)換器所能達(dá)到的理論誤差精度相比較接近,因此在一般的應(yīng)用場合都可以滿足要求。致謝結(jié) 論本設(shè)計以at89c51單片機為控制核心,通過集成摸數(shù)轉(zhuǎn)換芯片adc0808將被測信號轉(zhuǎn)換成數(shù)字信號,經(jīng)單片機內(nèi)部程序處理后,由液晶顯示器lcd1602顯示測量結(jié)果。仿真測試表明,系統(tǒng)性能良好,測量讀數(shù)穩(wěn)定易讀、更新速度合理,直流電壓測量范圍為050v,最小分辨率為0.02v,滿足任務(wù)書指標(biāo)要求。但是,該系統(tǒng)也存在一定程度的不足,例如:1、輸入電壓易發(fā)生干擾不穩(wěn)定,且驅(qū)動能力可能存在不足,需在被測信號的輸入端加上一部分驅(qū)動電路,比如將量程轉(zhuǎn)換電路改成帶放大能力的自動量程轉(zhuǎn)換電路,將幅值較小的信號經(jīng)適當(dāng)放大后再測量,可顯著提高精度;2、輸出量可用平均值算法來改善,使測量準(zhǔn)確度更高。3、若能將測量的電壓值實時保存,使用時將更方便。4、adc0808可實現(xiàn)對8個通道的輸入信號輪流轉(zhuǎn)換,本設(shè)計僅僅使用了其中一個通道,造成了較大的資源浪費。若能對電路稍加改進(jìn),實現(xiàn)對多路信號的輪流測量并自動保存相應(yīng)結(jié)果,其應(yīng)用價值將會更大。致謝在畢業(yè)設(shè)計完成之際,我在這里向一直關(guān)心幫助我的老師、同學(xué)和朋友表示我誠摯的謝意。首先感謝的是我的導(dǎo)師彭秀華老師。感謝他給我的指導(dǎo),在整個設(shè)計寫作過程中,我始終得到彭秀華老師的悉心教導(dǎo)和認(rèn)真指點,使得我的理論知識和認(rèn)識有了很大提高,為我的畢業(yè)設(shè)計的順利完成提供了保證。他身上,體現(xiàn)著嚴(yán)謹(jǐn)求實的教學(xué)作風(fēng),勇于探索的工作態(tài)度和求同思變、不斷創(chuàng)新的治學(xué)理念讓我印象深刻。他不知疲倦的敬業(yè)精神和精益求精的治學(xué)要求,端正了我的學(xué)習(xí)態(tài)度,使我受益匪淺。同時,感謝來此參加我畢業(yè)答辯的各位老師,感謝你們的指導(dǎo)教育,感謝你們在答辯時對我的論文給予的詳盡細(xì)致的審閱,衷心的感謝各位老師,謝謝你們無私的幫助。最后,感謝自動化系和同組的各位同學(xué)以及所有支持我關(guān)心我的人。在你們的幫助和協(xié)助下共同完成了本次設(shè)計。謝謝你們!附錄一參考文獻(xiàn)1 單片機系統(tǒng)的proteus設(shè)計與仿真,張靖武等編著,電子工業(yè)出版社2 proteus 在 mcs-51&arm7 系統(tǒng)中的應(yīng)用百例(含光盤1張),周潤景等編著,電子工業(yè)出版社3 51系列單片機設(shè)計實例(第2版) ,李光飛,北航出版社4 智能化測量控制儀表原理與設(shè)計(第2版)徐愛鈞,北航出版社5串行接口led數(shù)碼管及鍵盤管理器件的原理與應(yīng)用6只讀存儲器rom和隨機存取存儲器ram的使用與實例詳解7a/d轉(zhuǎn)換器及其接口的使用8單片機基礎(chǔ),李廣第,朱月秀,王秀山,北京航空航天大學(xué)出版社9a/d、d/a轉(zhuǎn)換器接口技術(shù)與實用電路,楊振江,西安電子科技大學(xué)出版社10單片機課程設(shè)計實例知道,李光飛,北京航空航天大學(xué)出版社11單片機原理與程序設(shè)計實驗教程,于殿泓 王新年 西安電子科技大學(xué)出版社12單片機應(yīng)用系統(tǒng)設(shè)計. 何立民.北京:北京航空航天大學(xué)出版社13 單片機c語言輕松入門出 版 社: 北京航空航天大學(xué)出版社作者: 周堅 14 跟我學(xué)用單片機作者肖洪兵 胡輝 郭速學(xué)出 版 社北京航空航天大學(xué)出版社 15 嵌入式應(yīng)用技術(shù)基礎(chǔ)教程作者:王宜懷 出版社:清華大學(xué)出版社附錄 系統(tǒng)源程序附錄1comequ50hdatequ51hrsequp2.1;lcd寄存器選擇信號rwequp2.2;lcd讀/寫選擇信號eequp2.3;lcd使能信號org0000hljmpmainorg000bhljmpbt0;t0中斷入口org0030h;主程序初始化main:movsp,#60hlcall intmov30h,#30hmov31h,#0a5hmov32h,#30hmov33h,#30hmov34h,#30hmovr7,#30hlcalln1;顯示voltage=0.000lcalln2;定時器初始化程序movtmod,#00hmovth0,#00hmovtl0,#00hsetbtr0mov24h,#03hmovie,#82hlp:movr7,#30h;顯示緩沖區(qū)首地址lcalldisplysjmplp;循環(huán)顯示;定時器中斷服務(wù)程序,讀取0809第0通道的轉(zhuǎn)換結(jié)果并轉(zhuǎn)換為顯示值bt0:pushaccpushpswmovpsw,#00hclrtr0movth0,#00hmovtl0,#00hdec24hmova,24hmova,p1anla,#03hdecazlc0decajzlc1lc0:jnzrtn1mov24h,#03hmovdptr,#0f6ffhmova,#00hmovxdptr,amovr7,#0cchdjnzr7,$movxa,dptrmov40h,amovb,#05h;a/d轉(zhuǎn)換結(jié)果化為顯示值mulab;(ad*5)/25mov30h,b;ad*5的高字節(jié)為整數(shù)部分movb,#0ahmulab;ad*5的低字節(jié)為/256的結(jié)果,為小數(shù)部分mov32h,b;二進(jìn)制小數(shù)換為10進(jìn)制數(shù)movb,#0ahmulabmov33h,bmovb,#0ahmulabmov34h,brtn1: setbtr0orl30h,#30hmov31h,#0a5horl32h,#30horl33h,#30horl34h,#30hmov35h,#30hljmplcclc1: jnzrtn2mov24h,#03hmovdptr,#0f6ffhmova, #00hmovxdptr,amovr7,#0cchdjnzr7,$movxa,dptrmov40h,amovb,#05h; a/d轉(zhuǎn)換結(jié)果顯示值mulab;(ad*5)/25mov30h,b;ad*5的高字節(jié)為整數(shù)部分movb,#0ahmulab;ad*5的低字節(jié)為/256的結(jié)果,為小數(shù)部分mov31h,b;二進(jìn)制小數(shù)換為10進(jìn)制數(shù)movb,#0ahmulabmov33h,bmovb,#0ahmulabmov34h,brtn2: setbtr0orl30h,#30horl31h,#30hmov32h,#0a5horl33h,#30horl34h,#30hmov35h,#30h;ajmplcclcc:noppoppswpopaccretidisply:;lcd顯示子程序movcom,#0cahlcallpr1movr1,#05hmovr0,#30hl:movdat,r0lcallpr2incr0djnzr1,lret;逐字依次輸入方式演示程序段n1:movcom,#01hlcallpr1movcom,#06hlcallpr1movcom,#0ehlcallpr1movdptr,#tabmovr2,#8hwrin1:movr3,#00hwrin:;寫入mova,r3movca,a+dptrmovdat,alcallpr2incr3djnzr2,wrinretn2:movcom,#06hlcallpr1movcom,#0c0hlcallpr1movdptr,#tab1movr2,#9hsjmpwrin1tab:dblicaiyutab1:dbvoltag = ;lcd間接控制方式下的初始化子程序int:lcalldelay;調(diào)用延時子程序movcom,#3ch;設(shè)置工作方式lcallpr1movcom,#01h;清屏lcallpr1movcom,#06h;設(shè)置輸入方式lcallpr1movcom,#080h;設(shè)置顯示方式lcallpr1retdelay:movr6,#0fh;延時movr7,#00hdelay1: nopdjnzr7,delay1djnzr6,delay1ret;lcd間接工致方式的驅(qū)動子程序;讀bf和ac的值pr0:pushaccmovp0,#0ffh;p0置位,準(zhǔn)備讀clrrs;rs=0,選擇指令寄存器setbrw;rw=1,讀setbe;片選,1有效lcalldelaymovcom,p0;讀bf和ac6-4值clrepopaccret;寫指令代碼子程序pr1:pushaccclrrs;指令寄存器setbrwpr11:movp0,#0ffh;p0置位,準(zhǔn)備讀setbelcalldelaynopmova,p0clrejbacc.7,pr11;bf=1clrrwmovp0,comsetbeclrepopaccret;寫顯示數(shù)據(jù)程序pr2:pushaccclrrssetbrwpr21:movp0,#0ffhsetb elcalldelaymova,p0;讀bf和ac6-4clrejbacc.7,pr21setbrsclrrwmovp0,dat;寫入數(shù)據(jù)高4位setbeclrepopaccret;讀顯示數(shù)據(jù)程序pr3:pushaccclrrssetbrwpr31:movp0,#0ffh;p0置位,準(zhǔn)備讀setbelcalldelaymova,p0;讀bf和ac6-4clrejbacc.7,pr31setbrs;rs=1,選通數(shù)據(jù)寄存器setbrwmovp0,#0ffh;讀數(shù)據(jù)setbemovdat,p0clrepopaccretend;單片機畢業(yè)設(shè)計程序:數(shù)字電壓表的設(shè)計comequ50hdatequ51hrsequp2.1;lcd積存器選擇信號rwequp2.2;lcd讀/寫選擇信號eequp2.3;lcd使能信號org0000hljmpmainorg000bhljmpbt0;t0中斷入口org0030h;主程序初始化main:movsp,#60hlcall intmov30h,#30hmov31h,#0a5hmov32h,#30hmov33h,#30hmov34h,#30hmovr7,#30hlcalln1;顯示voltage=0.000lcalln2;定時器初始化程序movtmod,#00hmovth0,#00hmovtl0,#00hsetbtr0mov24h,#03hmovie,#82hlp:movr7,#30h;顯示緩沖區(qū)首地址lcalldisplysjmplp;循環(huán)顯示;定時器中斷服務(wù)程序,讀取0808第0通道的轉(zhuǎn)換結(jié)果并轉(zhuǎn)換為顯示值bt0:pushaccpushpswmovpsw,#00hclrtr0movth0,#00hmovtl0,#00hdec24hmova,24hjnzrtn1mov24h,#03hmovdptr,#0f6ffhmova,#00hmovxdptr,amovr7,#0cchdjnzr7,$movxa,dptrmov40h,artn:movb,#05h;a/d轉(zhuǎn)換結(jié)果

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論