版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 論 文 摘 要</p><p><b> 目 錄</b></p><p> 基于單片機的數(shù)字電壓表仿真設(shè)計</p><p><b> 第1章緒論</b></p><p> 選題的意義是設(shè)計的目的,本次設(shè)計正是為了解決存在的問題而進行的。在國內(nèi)外大的研究背景下,
2、我們緊跟時代發(fā)展的腳步,致力于開發(fā)創(chuàng)新的道路,這一章主要介紹了這兩個內(nèi)容,同時簡要介紹了設(shè)計所使用的工具。</p><p><b> 1.1 研究的背景</b></p><p> 數(shù)字電壓表出現(xiàn)在上世紀(jì)50年代,60年代末發(fā)展起來,它采用的是數(shù)字化測量技術(shù)。數(shù)字電壓表之所以出現(xiàn),一方面是為了實時控制和處理數(shù)據(jù)的要求;另一方面,也是電子計算機的發(fā)展,帶動了脈沖數(shù)字電
3、路技術(shù)的發(fā)展,為數(shù)字化儀表的出現(xiàn)提供了條件。因此,數(shù)字化測量儀表的出現(xiàn)與發(fā)展和電子計算機的發(fā)展是密切相關(guān)的。</p><p> 數(shù)字電壓表最初是伺服步進電子管比較式,它的優(yōu)點是準(zhǔn)確度高,但是采樣速度慢,體積大,后來又出現(xiàn)了諧波式電壓表,它在速度方面稍有提高,但是準(zhǔn)確度下降,穩(wěn)定性差。再后來出現(xiàn)了比較式的改進型,它不僅繼承了準(zhǔn)確度高的優(yōu)點,而且速度也有了較大提高,但是它抗干擾能力差,很容易受到外界因素的影響。隨后
4、,在諧波式的基礎(chǔ)上引申出階梯波式,它唯一的進步就是降低了成本,但是準(zhǔn)確度、速度、抗干擾能力都沒有提高。發(fā)展到數(shù)字電壓表,各方面的性能都有了很大提高,讀數(shù)速度達到每秒幾萬次,而且價格大大降低。</p><p> 上海乾豐電子儀器有限公司生產(chǎn)的PZ158A系列直流數(shù)字電壓表,可以測量0.1uV~1000V直流電壓,該表采用了微處理器和脈沖調(diào)寬模數(shù)轉(zhuǎn)換技術(shù),采用八位LED顯示。目前,實現(xiàn)電壓數(shù)字化測量的方法主要是模數(shù)
5、(A/D)轉(zhuǎn)換,數(shù)字電壓表種類較多,一般根據(jù)原理的不同大致分為:比較式、電壓——時間變換式、積分式。</p><p><b> 1.2 選題的意義</b></p><p> 數(shù)字電壓表(Digital Voltmeter)簡稱DVM,采用數(shù)字化測量技術(shù),把連續(xù)的模擬量轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式顯示出來的儀器。傳統(tǒng)的指針式電壓表精度較低,不能滿足現(xiàn)實需要,而采用單
6、片機實現(xiàn)的數(shù)字電壓表就解決了這些問題,不僅提高了測量的精度,而且抗干擾能力強,可擴展性強。由數(shù)字電壓表擴展而成的各種通用及專用數(shù)字儀器,已經(jīng)把電量和非電量測量技術(shù)提高到嶄新水平。在現(xiàn)代智能化發(fā)展的時代,高精度、高效率、低價位已經(jīng)成為測量儀器的必須要求,如果達不到這些要求,那么這種儀器必將會被淘汰。數(shù)字電壓表正是伴隨著這種發(fā)展趨勢應(yīng)運而生,成為新一代測量儀表的佼佼者,同時也宣布了傳統(tǒng)測量儀器的退出趨勢。</p><p&
7、gt; 目前,數(shù)字電壓表的內(nèi)部核心部件是A/D轉(zhuǎn)換器,它很大程度上影響著數(shù)字電壓表的精度,本文采用ADC0808對輸入模擬信號進行轉(zhuǎn)換,控制核心AT89C51再對轉(zhuǎn)換的結(jié)果進行運算和處理,最后驅(qū)動輸出裝置顯示數(shù)字電壓信號。隨著微機測量與控制技術(shù)的發(fā)展,以單片機為核心的數(shù)字電壓表越來越占優(yōu)勢,單片機體積小、重量輕、價格便宜,大大降低了成本。數(shù)字化測量儀表的產(chǎn)生不僅革新了電子測量的繁瑣與陳舊,同時加快了測量儀表向智能化發(fā)展的速度,成為必要
8、的橋梁。與此同時,我們也看到數(shù)字電壓表的發(fā)展還處于初期階段,各項技術(shù)的應(yīng)用還沒有成熟,本次設(shè)計是在單片機的基礎(chǔ)之上,借助各種軟件和硬件實現(xiàn)數(shù)字電壓表的仿真設(shè)計,為數(shù)字電壓表的生產(chǎn)和實踐提供了客觀的理論依據(jù)。</p><p><b> 1.3設(shè)計的工具</b></p><p> 本次設(shè)計所使用的工具主要是Proteus和Keil C51兩個軟件,其中Proteus是
9、由英國Lab Center Electronics公司開發(fā)的EDA工具軟件,從1989年問世至今已有20年的歷史,在全球得到廣泛使用。它不僅是模擬電路、數(shù)字電路、模/數(shù)混合電路的設(shè)計與仿真平臺,更是目前世界上最先進、最完整的多種型號微處理器系統(tǒng)的設(shè)計與仿真平臺,真正實現(xiàn)了在計算機上完成原理圖設(shè)計,電路分析與仿真,微處理器程序設(shè)計與仿真,系統(tǒng)測試與功能驗證,到形成PCB的完整電子設(shè)計、研發(fā)過程。Proteus軟件由ISIS和ARES構(gòu)成,
10、本次設(shè)計主要使用ISIS,它是一款智能原理圖輸入系統(tǒng)軟件,可作為電子系統(tǒng)仿真平臺。</p><p> Keil C51是當(dāng)前使用最廣泛的基于80C51單片機內(nèi)核的軟件開發(fā)平臺之一,由德國Keil Software公司推出。uVision4是關(guān)于51系列單片機的開發(fā)工具。uVision4集成開發(fā)環(huán)境IDE是基于Windows的軟件開發(fā)平臺,集編輯、編譯、仿真于一體,支持匯編語言和C語言的程序設(shè)計。</p&g
11、t;<p> 本文接下來在第二部分介紹了系統(tǒng)設(shè)計的方案,主要從設(shè)計的思路和方法入手,著重從原理方面作了解釋,并繪制了總的原理圖。第三部分主要是本次設(shè)計的硬件電路部分,在總設(shè)計的基礎(chǔ)上詳細(xì)介紹了電路的搭接方法以及電路的組成部分,并繪制了各部分的電路圖。第四部分是設(shè)計的軟件部分,主要介紹了用C語言編程的方法,并說明了程序的調(diào)試過程。</p><p> 第2章 系統(tǒng)方案設(shè)計</p>&l
12、t;p> 系統(tǒng)方案是設(shè)計的靈魂,是本次設(shè)計最重要的部分,主要包括設(shè)計思路和設(shè)計方案,完成了這兩個內(nèi)容才能進行下面的設(shè)計步驟。這一章內(nèi)容圍繞思路和方案詳細(xì)進行了介紹,為接下來的工作做好了鋪墊。</p><p><b> 2.1芯片選擇</b></p><p> 本設(shè)計采用AT89C51芯片和ADC0808芯片,前者是一種帶4K字節(jié)Flash存儲器的低電壓、高
13、性能CMOS8位微處理器,可與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。</p><p> 2.1.1 AT89C51 </p><p> 它是一個以ALU為中心的8位中央處理器,能夠完成運算和控制功能。128B的內(nèi)部數(shù)據(jù)存取存儲器,其地址范圍為00H~7FH。21個特殊功能寄存器,離散分布于地址80H~FFH中。程序計數(shù)器PC是一個獨立的16位專用寄存器,其內(nèi)容為將要執(zhí)行的指令地
14、址。4KB字節(jié)Flash閃速存儲器可以存儲程序、原始數(shù)據(jù)、表格。4個8位可編程I/O口,2個16位定時器/計數(shù)器,5個中斷源,2個中斷優(yōu)先級的中斷控制系統(tǒng),1個全雙工串行通信口,1個片內(nèi)振蕩電路和時鐘電路。</p><p> AT89C51芯片管腳說明:</p><p> Vcc:供電電壓,接DC電源端,在-40~85攝氏度時,極值是6.6V。</p><p>
15、<b> GND:接地端。</b></p><p> P0口:P0口為一個8位漏級開路雙向I/O口,可吸收8個TTL門電流。當(dāng)P1口的管腳第一次寫“1”時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p>
16、P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收、輸出4個TTL門電流。P1口管腳寫入“1”后,被內(nèi)部上拉為高電平,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 </p><p> P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收、輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳
17、被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p> P3口:此管腳是8個帶內(nèi)
18、部上拉電阻的雙向I/O口,可以接收、輸出4個TTL門電流,當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3將輸出電流。</p><p> RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間,使單片機恢復(fù)到初始狀態(tài)。當(dāng)Vcc發(fā)生故障、降低到低電平規(guī)定值或斷電時,該引腳可以接上備用電源為內(nèi)部RAM供電,以保證RAM中的數(shù)據(jù)不丟失。</p&
19、gt;<p> /EA:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H~FFFFH)工作,不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器工作。在FLASH編程期間,此引腳也用于施加12V編程電源(Vpp)。</p><p> XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。采用外部振蕩器時,此引腳接振蕩器
20、的信號。</p><p> XTAL2:來自反向振蕩器的輸出,外接振蕩元件的一個引腳,采用外部振蕩器時,引腳懸浮。</p><p> 電壓是模擬量,數(shù)碼管顯示的是數(shù)字量,所以需要采用A/D轉(zhuǎn)換模擬信號為數(shù)字信號。本次設(shè)計使用ADC0808芯片,它是典型的8位8通道逐次逼近式轉(zhuǎn)換器,具有轉(zhuǎn)換起??刂贫?,轉(zhuǎn)換時間為100us(時鐘為640kHz),130us(時鐘為500kHz),單個+5
21、V電源供電,模擬輸入電壓范圍0~+5V,不需要零點和滿刻度校準(zhǔn),工作溫度范圍-40~+85攝氏度。</p><p> 顯示電路采用四位8段LED數(shù)碼管顯示數(shù)據(jù),滿足精度要求。</p><p> 按照單片機與ADC的連接不同,可以分為并行輸入方式的ADC和串行輸入方式的ADC兩種,而我們使用的ADC0808則屬于并行輸入方式的ADC。</p><p> 2.1.
22、2 ADC0808 </p><p> IN0~IN7:8路模擬量輸入端。</p><p> ADD A、ADD B、ADD C:模擬量輸入通道地址選擇線,8位編碼分別對應(yīng)IN0~IN7。</p><p> ALE:地址鎖存端。</p><p> START: ADC轉(zhuǎn)換啟動信號,正脈沖有效,引信號要求保持在200ns以上。其上升沿將
23、內(nèi)部逐次逼近寄存器清零,下降沿啟動ADC轉(zhuǎn)換。</p><p> EOC:轉(zhuǎn)換結(jié)束信號,可作中斷請求信號或CPU查詢。</p><p> CLK:時鐘輸入端,要求頻率范圍在10kHz~1.2MHz。</p><p> OE:允許輸出信號。</p><p> Vcc:芯片工作電壓。</p><p> VREF(
24、+)、VREF(-):基準(zhǔn)參考電壓的正負(fù)值。</p><p> OUT1~OUT8:8路數(shù)字量輸出端。</p><p> ADC0808的工作時序較為復(fù)雜,它的內(nèi)部除了8位ADC轉(zhuǎn)換電路外,還有一個8路通道選擇開關(guān),其作用是根據(jù)地址譯碼信號來選擇8路模擬輸入,8路模擬輸入可以分時共用一個ADC轉(zhuǎn)換器進行轉(zhuǎn)換,可實現(xiàn)多路數(shù)據(jù)采集。其轉(zhuǎn)換結(jié)果通過三態(tài)輸出鎖存器輸出。當(dāng)通道選擇地址有效時,A
25、LE信號一出現(xiàn),地址便馬上被鎖存,這時轉(zhuǎn)換啟動信號緊隨ALE之后(或與之同時)出現(xiàn)。START的上升沿將逐次逼近寄存器SAR復(fù)位,在該上升沿之后的2us加8個時鐘周期內(nèi)(不定),EOC信號將變低電平,以指示轉(zhuǎn)換操作正在進行中,直到轉(zhuǎn)換完成后,EOC再變高電平。微處理器收到變?yōu)楦唠娖降腅OC信號后,便立即送出OE信號,打開三態(tài)門,讀取轉(zhuǎn)換結(jié)果。</p><p><b> 2.2設(shè)計方案</b>
26、;</p><p> 本次設(shè)計的兩大部分是硬件電路設(shè)計和軟件程序設(shè)計,硬件部分由時鐘電路、復(fù)位電路、數(shù)據(jù)采集電路、顯示電路組成,通過Proteus進行電路的連接;軟件程序采用C語言編程,利用Keil進行編譯和仿真。</p><p> Proteus的電路設(shè)計是在ISIS軟件環(huán)境中進行的,該軟件編輯環(huán)境具有友好的交互式人機界面,設(shè)計功能強大,使用方便[1]。該軟件啟動后進入窗口,主要由菜
27、單欄、主工具欄、預(yù)覽窗口、元器件選擇按鈕、工具箱、原理圖編輯窗口、仿真按鈕、方向工具欄、狀態(tài)欄等部分組成,操作界面如圖2-1所示。</p><p> Keil C51是基于80C51單片機內(nèi)核的軟件開發(fā)平臺,集編輯、編譯、仿真于一體,支持匯編語言和C語言。主要操作包括創(chuàng)建項目、創(chuàng)建新的源程序文件、為目標(biāo)設(shè)定工具選項、編譯項目并創(chuàng)建HEX文件,主要窗口有反匯編窗口、CPU寄存器窗口、存儲器窗口、串行窗口,操作界面
28、如圖2-2所示。</p><p><b> 圖2-1</b></p><p><b> 圖2-2</b></p><p> 第3章 硬件電路設(shè)計</p><p> 硬件電路的設(shè)計過程是基礎(chǔ)部分,本章內(nèi)容畫出了硬件電路的原理圖,對時鐘電路、復(fù)位電路、數(shù)據(jù)采集電路、顯示電路分別做了深入的介紹,重
29、點是各個電路的工作原理和實現(xiàn)方法,從AT89C51和ADC0808芯片的引腳功能出發(fā),詳細(xì)介紹了它們的連接方法,并給出了各個電路的連接圖。本章內(nèi)容是此次設(shè)計的基礎(chǔ),只有硬件電路連接成功,才能進行接下來的軟件編程。</p><p><b> 圖3-1原理圖</b></p><p><b> 3.1時鐘電路</b></p><
30、p> XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時,外部振蕩信號應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時,時鐘發(fā)生器對振蕩脈沖二分頻。本系統(tǒng)的時鐘電路設(shè)計是采用的內(nèi)部方式。晶振的頻率可以在1MHz~24MHz內(nèi)選擇,電容取30PF左右。晶振在電氣上可以等效成一個電容和一個電阻并聯(lián)再串聯(lián)一個電容的二端網(wǎng)絡(luò),電工學(xué)上這個網(wǎng)絡(luò)有兩個諧振點,以頻率的高低分,其中較低的頻率是串聯(lián)諧振,較高的頻
31、率是并聯(lián)諧振。由于晶體自身的特性致使這兩個頻率的距離相當(dāng)?shù)慕咏?,在這個極窄的頻率范圍內(nèi),晶振等效為一個電感,所以只要晶振的兩端并聯(lián)上合適的電容它就會組成并聯(lián)諧振電路。這個并聯(lián)諧振電路加到一個負(fù)反饋電路中就可以構(gòu)成正弦波振蕩電路,由于晶振等效為電感的頻率范圍很窄,所以即使其他元件的參數(shù)變化很大,這個振蕩器的頻率也不會有很大的變化。</p><p><b> 圖3-2 時鐘電路</b><
32、/p><p> 晶振有一個重要的參數(shù),那就是負(fù)載電容值,選擇與負(fù)載電容值相等的并聯(lián)電容,就可以得到晶振標(biāo)稱的諧振頻率。一般的晶振振蕩電路都是在一個反相放大器(注意是放大器不是反相器)的兩端接入晶振,再有兩個電容分別接到晶振的兩端,每個電容的另一端再接到地,這兩個電容串聯(lián)的容量值就應(yīng)該等于負(fù)載電容。時鐘電路原理圖如圖3-2所示。</p><p><b> 3.2 復(fù)位電路</
33、b></p><p> 89C51單片機的復(fù)位是由外部的復(fù)位電路來實現(xiàn)的[2]。最簡單的上電自動復(fù)位電路,是通過外部復(fù)位電路的電容充電來實現(xiàn)的。只要電源Vcc的上升時間不超過1ms,就可以實現(xiàn)自動上電復(fù)位。除上電復(fù)位外,有時還需要按鍵手動復(fù)位。按鍵手動復(fù)位有電平方式和脈沖方式兩種。其中電平方式復(fù)位是通過RST端經(jīng)電阻和電源Vcc接通而實現(xiàn)的。</p><p><b>
34、圖3-3復(fù)位電路</b></p><p> 本系統(tǒng)采用電平方式按鍵手動復(fù)位電路,按鍵沒有按下時,RST端接電容下極板是低電平,按鍵按下時,RST 端接在電阻上端變?yōu)楦唠娖剑_到復(fù)位的目的。電容選1uF左右,電阻選100歐姆。復(fù)位電路原理圖如圖3-3所示。</p><p> 3.3 數(shù)據(jù)采集電路</p><p> 本系統(tǒng)模擬轉(zhuǎn)換采用ADC0808芯片
35、。ADC0808具有8路模擬量輸入信號引腳IN0~IN7(1~5、26~28腳),地址線C、B、A(23~25腳)決定哪一路模擬輸入信號進行A/D轉(zhuǎn)換,本電路將A、B、C腳分別置0、1、0,即選擇通道2。22號腳ALE為地址鎖存允許控制信號,高電平有效。6號腳START為啟動控制信號,高電平有效,脈沖上升沿使0808復(fù)位,下降沿啟動A/D轉(zhuǎn)換[3]。本電路將ALE腳和START腳接到一起,共同由單片機的P2.5腳控制。7號腳EOC為A/
36、D轉(zhuǎn)換結(jié)束信號,輸出正脈沖表示轉(zhuǎn)換結(jié)束,本電路將7號腳與單片機P2.6腳連接。9號腳OE為A/D轉(zhuǎn)換數(shù)據(jù)輸出允許控制信號,高電平有效,本電路將9號腳與單片機P2.7腳連接。10號腳CLOCK為實時時鐘輸入端,在Proteus軟件中仿真采用DCCLOCK時鐘源提供時鐘脈沖。數(shù)字量輸出端8個引腳OUT1~OUT8接到單片機的P1口。</p><p> 圖3-4 數(shù)據(jù)采集電路</p><p>
37、 本設(shè)計采集數(shù)據(jù)電路為了便于仿真分析,采用滑線電阻器分壓,通過調(diào)節(jié)滑線電阻器的觸頭,來調(diào)節(jié)輸入電壓值,模擬不同大小的輸入信號,采集信號通過ADC0808的IN1端接入芯片的通道[4]。數(shù)據(jù)采集電路原理圖如圖3-4所示。</p><p><b> 3.4 顯示電路</b></p><p> 本電路采用LED數(shù)碼管顯示,由于單片數(shù)碼管占用單片機口線較多,而本設(shè)計中需
38、要四個數(shù)碼管顯示不同信息,因此采用數(shù)碼管的動態(tài)掃描顯示原理,利用人眼的視覺暫留特性,達到較好的顯示效果,而且采用動態(tài)掃描法與單片機連接時,占用口線較少,方便進行程序編寫和控制[5]。本設(shè)計中采用Proteus仿真元件庫中7SEG-MPX4-CA-BLUE型數(shù)碼管來顯示,7SEG-MPX4-CA-BLUE為四位共陽極數(shù)碼管,其中ABCDEFG共七個引腳為字形碼控制輸入端,DP為小數(shù)點控制輸入端,一般用于顯示小數(shù)點,1234共四個引腳為數(shù)碼
39、管字位碼控制輸入端。</p><p><b> 圖3-5顯示電路</b></p><p> 數(shù)碼管的所有段碼輸入端均為高電平有效,其中ABCDEFG腳在程序設(shè)計時應(yīng)輸入數(shù)字字形碼原碼。上拉電阻RP的公共端接高電平,其余端接控制線,以提供足夠的輸入電流,使數(shù)碼管正常顯示。數(shù)碼管位選端連接單片機的P0口,同時連接上拉電阻以增強驅(qū)動能力;片選段連接單片機的P2.0~P2
40、.3口。顯示電路原理圖如圖3-5所示。</p><p><b> 第4章 軟件設(shè)計</b></p><p> 軟件程序的設(shè)計也是本次設(shè)計的重點,在硬件電路連接成功的基礎(chǔ)之上,著重介紹了轉(zhuǎn)換芯片實現(xiàn)模擬量到數(shù)字量轉(zhuǎn)換的原理,給出了模/數(shù)轉(zhuǎn)換的流程圖,并說明了編程的方法。而后結(jié)合Proteus的操作方法介紹了程序調(diào)試的過程,最后將調(diào)試成功的程序嵌入到硬件電路中,分析了
41、出現(xiàn)誤差的原因。</p><p> 4.1模/數(shù)轉(zhuǎn)換設(shè)計</p><p> 進行A/D轉(zhuǎn)換前,要啟動ADC0808,首先要進行模擬量輸入通道的選擇,然后設(shè)置START信號。模擬量輸入通道的選擇有兩種方法:一種是通過地址總線選擇;另一種是通過數(shù)據(jù)總線選擇[6]。本次設(shè)計采用第一種方法,ADD C=0,ADD B=0,ADD A=1,即組成通道選擇數(shù)據(jù)為001,對應(yīng)通道IN1,即模擬量數(shù)據(jù)
42、是由IN1通道輸入。所以在程序中不需要設(shè)置模擬量輸入通道。START信號設(shè)置為START=0,START=1,START=0以產(chǎn)生啟動轉(zhuǎn)換的正脈沖。進行A/D轉(zhuǎn)換時,采用查詢EOC的標(biāo)志信號來檢測A/D轉(zhuǎn)換是否完畢,若完畢則將數(shù)據(jù)通過單片機P1端口讀入(adval),經(jīng)過數(shù)據(jù)處理后,在數(shù)碼管上顯示。</p><p> 圖4-1 ADC0808轉(zhuǎn)換程序流程</p><p><b>
43、; 4.2程序調(diào)試</b></p><p> 在程序的調(diào)試過程中,核心是A/D轉(zhuǎn)換的進行,如下:</p><p> START=0; //啟動A/D轉(zhuǎn)換</p><p><b> START=1;</b></p><p><b&g
44、t; START=0;</b></p><p> while(EOC==0); //等待轉(zhuǎn)換結(jié)束</p><p><b> OE=1;</b></p><p> adval=P1; //轉(zhuǎn)換結(jié)果&
45、lt;/p><p> 執(zhí)行菜單命令“Project”和“Build Target”,編譯源程序,若果編譯成功,則在輸出窗口顯示沒有錯誤,并創(chuàng)建了HEX文件。在已經(jīng)繪制好的電路圖中雙擊單片機,在彈出的“Edit Component”對話框的“Program File”欄中選擇生成的HEX文件[7]。</p><p> 在Proteus ISIS編輯窗口下單擊運行按鈕,進入運行狀態(tài)。4位LED
46、數(shù)碼管顯示相應(yīng)的電壓值,滑動可調(diào)電阻,顯示的數(shù)據(jù)也發(fā)生相應(yīng)的變化。</p><p> 圖4-2 V=0.3V時</p><p> 圖4-3 V=2.5V時</p><p> 圖4-4 V=4.9V時</p><p><b> 4.3誤差分析</b></p><p> 通過軟件的仿真結(jié)果發(fā)
47、現(xiàn),本次設(shè)計的數(shù)字電壓表誤差在0.02V以內(nèi),這是很正常的。誤差主要來源于兩個方面,一個是ADC0808模/數(shù)轉(zhuǎn)換芯片在采集和轉(zhuǎn)換數(shù)據(jù)的過程中產(chǎn)生誤差,另一個是數(shù)據(jù)處理算法過程中產(chǎn)生的誤差。在設(shè)計的過程中,出現(xiàn)誤差是不可避免的,只要按照正確的設(shè)計思路和方法進行,就能夠達到設(shè)計的要求。在其它電路設(shè)計的過程中,也不可避免地出現(xiàn)誤差,導(dǎo)致我們得到的測量結(jié)果與理論值相比存在差距,我們應(yīng)該遵從客觀事實,誤差并不是錯誤,在以后的電路設(shè)計中依然要如此
48、。</p><p><b> 結(jié) 論</b></p><p> 通過一段時間的努力,我基本完成了本次畢業(yè)設(shè)計,利用Proteus和Keil兩個軟件實現(xiàn)了仿真電壓表的功能,達到了預(yù)期的效果。在本次設(shè)計中,我從硬件和軟件兩大部分著手,首先將電路分成了四部分,每一部分使用不同的引腳和連接方法,實現(xiàn)不同的功能,然后將四部分電路連接到一起,完成硬件電路的設(shè)計。在軟件設(shè)計方
49、面,我使用C語言進行編程,按照硬件電路的要求利用Keil設(shè)計程序,然后將編好的程序生成單片機能讀取的文件嵌入到單片機內(nèi),完成了軟件部分的設(shè)計。</p><p> 在設(shè)計中,最主要的元件是AT89C51和ADC0808,因此在設(shè)計之前我認(rèn)真學(xué)習(xí)了這兩個元件的相關(guān)知識,重點是各個引腳的功能,特別是硬件電路所用到的引腳。基于單片機的數(shù)字電壓表使用性強,結(jié)構(gòu)簡單,成本較低,測量精度也高,應(yīng)用廣泛。本次設(shè)計很有意義,讓我
50、看到了單片機強大的發(fā)展前景。</p><p> 通過本次設(shè)計,我學(xué)到了很多關(guān)于單片機方面的知識,學(xué)會了使用Proteus這個功能強大的軟件,同時也對電路設(shè)計有了進一步認(rèn)識。但是與此同時,我也認(rèn)識到了自己存在的不足,主要是對芯片功能的學(xué)習(xí)還不夠深入,對原理的理解不夠準(zhǔn)確。在下一步的學(xué)習(xí)中,我需要改善學(xué)習(xí)方法,提高學(xué)習(xí)效率,把握重點知識,提高理論聯(lián)系實際的能力,進一步提高電路設(shè)計的水平。</p>&l
51、t;p><b> 參考文獻</b></p><p> [1]陳忠平.基于Proteus的51系列單片機設(shè)計與仿真.北京:電子工業(yè)出版社,2012.</p><p> [2]沈慶陽.8051單片機實踐與應(yīng)用.北京:清華大學(xué)出版社,2002.</p><p> [3]吳昌東.基于單片機的新型數(shù)字式電壓表設(shè)計.微計算機信息,2008.&
52、lt;/p><p> [4]宋悅孝.基于單片機的數(shù)字電壓表設(shè)計.濰坊學(xué)院學(xué)報,2011.</p><p> [5]張靖武.單片機原理應(yīng)用與PROTEUS仿真.北京:電子工業(yè)出版社,2011.</p><p> [6]李剛民,曹巧媛.單片機原理及實用技術(shù).北京:高等教育出版社,2005.</p><p> [7]劉同法,陳忠平等.單片機基礎(chǔ)
53、與最小系統(tǒng)實踐.北京:北京航空航天大學(xué)出版社,2007.</p><p> 附錄1 電路設(shè)計連接圖</p><p><b> 附錄2 總程序</b></p><p> #include<reg52.h></p><p> #include"intrins.h"</p>
54、<p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> sbit OE=P2^7;</p><p> sbit EOC=P2^6;</p><p> sbit START=P2^5;</p><p>
55、 sbit CLK=P2^4;</p><p> sbit CS0=P2^0;</p><p> sbit CS1=P2^1;</p><p> sbit CS2=P2^2;</p><p> sbit CS3=P2^3;</p><p> uint adval,volt;</p><p
56、> uchar tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, </p><p> 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};</p><p> void delayms(uint ms)</p><p><b> {</b></
57、p><p><b> uchar j;</b></p><p> while(ms--)</p><p><b> {</b></p><p> for(j=0;j<120;j++);</p><p><b> }</b></p>
58、<p><b> }</b></p><p> void ADC_read()</p><p><b> {</b></p><p> START=0; </p><p><b> START=1;&
59、lt;/b></p><p><b> START=0;</b></p><p> while(EOC==0); </p><p><b> OE=1;</b></p><p> adval=P1;
60、 </p><p><b> OE=0;</b></p><p><b> }</b></p><p> void volt_result()</p><p><b> {</b></p><p> volt=
61、adval*1.96; </p><p><b> }</b></p><p> void disp_volt(uint date) </p><p><b> {</b></p><p> CS0=1;CS1=0;CS
62、2=0;CS3=0; </p><p> P0=~((~tab[date/100])|0x80); </p><p> delayms(1);</p><p> P0=0xFF; </p><p> CS0=0;C
63、S1=1;CS2=0;CS3=0; </p><p> P0=tab[date%100/10];</p><p> delayms(1);</p><p> P0=0xFF; </p><p> CS0=0;CS1=0;CS2=1;CS
64、3=0; </p><p> P0=tab[date%10];</p><p> delayms(1);</p><p> P0=0xFF; </p><p> CS0=0;CS1=0;CS2=0;CS3=1;
65、</p><p> P0=tab[date%100];</p><p> delayms(1);</p><p><b> P0=0xFF;</b></p><p><b> }</b></p><p> void t0()interrupt 1</p>
66、<p><b> {</b></p><p><b> CLK=~CLK;</b></p><p><b> }</b></p><p> void t0_init()</p><p><b> {</b></p>&
67、lt;p> TMOD=0x02; </p><p><b> TH0=0x14;</b></p><p><b> TL0=0x00;</b></p><p> TR0=1; <
68、/p><p> ET0=1; </p><p> EA=1; </p><p><b> }</b></p><p> void main(void)</p>
69、<p><b> {</b></p><p> t0_init();</p><p><b> while(1)</b></p><p><b> {</b></p><p> ADC_read();</p><p> volt_r
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字電壓表畢業(yè)論文--基于51單片機的數(shù)字電壓表設(shè)計
- 畢業(yè)論文--基于單片機的數(shù)字電壓表設(shè)計
- 基于單片機的數(shù)字電壓表畢業(yè)論文
- 單片機數(shù)字電壓表畢業(yè)論文
- (畢業(yè)論文)基于單片機的數(shù)字電壓表設(shè)計
- 畢業(yè)論文——基于單片機的數(shù)字電壓表
- 基于單片機的數(shù)字電壓表——畢業(yè)論文
- 基于單片機的數(shù)字電壓表的設(shè)計畢業(yè)論文
- 基于51單片機的數(shù)字電壓表設(shè)計 畢業(yè)論文
- 畢業(yè)論文--基于單片機的雙機通信數(shù)字電壓表
- 基于單片機的數(shù)字電壓表畢業(yè)設(shè)計論文
- 基于單片機的數(shù)字電壓表論文
- 基于單片機的數(shù)字電壓表設(shè)計畢業(yè)設(shè)計論文
- 基于單片機的數(shù)字電壓表的設(shè)計論文
- 基于單片機的數(shù)字電壓表的設(shè)計論文
- 數(shù)字電壓表基于單片機
- 基于單片機的數(shù)字電壓表設(shè)計
- 數(shù)字電壓表基于單片機
- 基于單片機的數(shù)字電壓表的設(shè)計畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計---基于單片機的數(shù)字電壓表
評論
0/150
提交評論