數(shù)字電壓表的單片機(jī)設(shè)計(C語言編程)_第1頁
數(shù)字電壓表的單片機(jī)設(shè)計(C語言編程)_第2頁
數(shù)字電壓表的單片機(jī)設(shè)計(C語言編程)_第3頁
數(shù)字電壓表的單片機(jī)設(shè)計(C語言編程)_第4頁
數(shù)字電壓表的單片機(jī)設(shè)計(C語言編程)_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目錄一 設(shè)計總體方案11.1 設(shè)計要求11.2 設(shè)計思路11.3 設(shè)計方案1二 硬件電路元件分析與設(shè)計22.1 單片機(jī)系統(tǒng)22.1.1 AT89C51性能22.1.2 AT89C51各引腳功能22.2 A/D轉(zhuǎn)換模塊32.2.1 ADC0808主要特性32.2.2 ADC0808工作流程42.3 LED顯示系統(tǒng)設(shè)計52.3.1 LED顯示器的選擇52.3.2 LED譯碼方式52.4 雙D正沿觸發(fā)器62.5 總體電路設(shè)計7三 程序設(shè)計93.1 程序設(shè)計總方案93.2 系統(tǒng)子程序設(shè)計93.2.1 初始化程序93.2.2 A/D轉(zhuǎn)換子程序93.2.3 顯示子程序10四 仿真調(diào)試124.1 軟件調(diào)試1

2、24.2 顯示結(jié)果及誤差分析124.2.1 顯示結(jié)果124.2.2 誤差分析13結(jié)束15參考文獻(xiàn)16附錄17一 設(shè)計總體方案1.1 設(shè)計要求 以AT89C51單片機(jī)為核心器件,組成一個簡單的直流數(shù)字電壓表。能夠測量0-5V之間的直流電壓值。電壓顯示用4位一體的LED數(shù)碼管顯示,盡量使用較少的元器件。 1.2 設(shè)計思路根據(jù)設(shè)計要求,選擇AT89C51單片機(jī)為核心控制器件。A/D轉(zhuǎn)換采用ADC0808實(shí)現(xiàn),與單片機(jī)接口為P0口和P3口的高四位引腳。電壓顯示采用4位一體的LED數(shù)碼管。LED數(shù)碼的段碼輸入,由并行端口P1產(chǎn)生:位碼輸入,用并行端口P2高四位產(chǎn)生。1.3 設(shè)計方案硬件電路設(shè)計由5個部分

3、組成; A/D轉(zhuǎn)換電路,AT89C51單片機(jī)系統(tǒng),LED顯示系統(tǒng)、時鐘電路、測量電壓輸入電路。硬件電路設(shè)計框圖如圖1-1圖1-1 數(shù)字電壓表系統(tǒng)硬件設(shè)計框圖二 硬件電路元件分析與設(shè)計2.1 單片機(jī)系統(tǒng)2.1.1 AT89C51性能 AT89C51功能性能:與MCS-51成品指令系統(tǒng)完全兼容;4KB可編程閃速存儲器;全靜態(tài)工作:0-24MHz;128*8B內(nèi)部RAM;4個位可編程I/O口線;2個16位定時/計數(shù)器;5個中斷源;2個串行通道;片內(nèi)振蕩器和掉電模式。 2.1.2 AT89C51各引腳功能引腳配置如圖2-1所示。圖2-1 AT89C51的引腳圖AT89C51芯片的各引腳功能為:P0口:

4、這組引腳共有8條,P0.0為最低位。這8個引腳有兩種不同的功能,分別適用于不同的情況,第一種情況是89C51不帶外存儲器,P0口可以為通用I/O口使用,P0.0-P0.7用于傳送CPU的輸入/輸出數(shù)據(jù),這時輸出數(shù)據(jù)可以得到鎖存,不需要外接專用鎖存器,輸入數(shù)據(jù)可以得到緩沖,增加了數(shù)據(jù)輸入的可靠性;第二種情況是89C51帶片外存儲器,P0.0-P0.7在CPU訪問片外存儲器時先傳送片外存儲器的低8位地址,然后傳送CPU對片外存儲器的讀/寫數(shù)據(jù)。P0口為開漏輸出,在作為通用I/O使用時,需要在外部用電阻上拉。P1口:這8個引腳和P0口的8個引腳類似,P1.7為最高位,P1.0為最低位,當(dāng)P1口作為通

5、用I/O口使用時,P1.0-P1.7的功能和P0口的第一功能相同,也用于傳送用戶的輸入和輸出數(shù)據(jù)。P2口:這組引腳的第一功能與上述兩組引腳的第一功能相同即它可以作為通用I/O口使用,它的第一功能和P0口引腳的第二功能相配合,用于輸出片外存儲器的高8位地址,共同選中片外存儲器單元,但并不是像P0口那樣傳送存儲器的讀/寫數(shù)據(jù)。P3口:這組引腳的第一功能和其余三個端口的第一功能相同,第二功能為控制功能,每個引腳并不完全相同,如下表1所示:表1 P3口各位的第二功能P3口各位第二功能P3.0 RXT(串行口輸入)P3.1 TXD(串行口輸出)P3.2INT0(外部中斷0輸入)P3.3INT1(外部中斷

6、1輸入)P3.4T0(定時器/計數(shù)器0的外部輸入)P3.5T1(定時器/計數(shù)器1的外部輸入)P3.6WR(片外數(shù)據(jù)存儲器寫允許) P3.7RD(片外數(shù)據(jù)存儲器讀允許)Vcc為+5V電源線,Vss接地。ALE:地址鎖存允許線,配合P0口的第二功能使用,在訪問外部存儲器時,89C51的CPU在P0.0-P0.7引腳線去傳送隨后而來的片外存儲器讀/寫數(shù)據(jù)。在不訪問片外存儲器時,89C51自動在ALE線上輸出頻率為1/6振蕩器頻率的脈沖序列。該脈沖序列可以作為外部時鐘源或定時脈沖使用。EA:片外存儲器訪問選擇線,可以控制89C51使用片內(nèi)ROM或使用片外ROM,若EA=0,則允許使用片內(nèi)ROM, 若E

7、A=1,則只使用片外ROM。PSEN:片外ROM的選通線,在訪問片外ROM時,89C51自動在/PSEN線上產(chǎn)生一個負(fù)脈沖,作為片外ROM芯片的讀選通信號。RST:復(fù)位線,可以使89C51處于復(fù)位(即初始化)工作狀態(tài)。通常89C51復(fù)位有自動上電復(fù)位和人工按鍵復(fù)位兩種。XTAL1和XTAL2:片內(nèi)振蕩電路輸入線,這兩個端子用來外接石英晶體和微調(diào)電容,即用來連接89C51片內(nèi)OSC(振蕩器)的定時反饋回路。2.2 A/D轉(zhuǎn)換模塊2.2.1 ADC0808主要特性ADC0808主要特性:8路8位A/D轉(zhuǎn)換器,即分辨率8位;具有鎖存控制的8路模擬開關(guān);易與各種微控制器接口;可鎖存三態(tài)輸出,輸出與TT

8、L兼容;轉(zhuǎn)換時間:100s;轉(zhuǎn)換精度:0.2%;單個+5V電源供電;模擬輸入電壓范圍0- +5V,無需外部零點(diǎn)和滿度調(diào)整;低功耗,約15mW。 ADC0808芯片有28條引腳,采用雙列直插式封裝,其引腳圖如圖2-2所示。 圖2-2 ADC0808引腳圖下面說明各個引腳功能:IN0-IN7(8條):8路模擬量輸入線,用于輸入和控制被轉(zhuǎn)換的模擬電壓。地址輸入控制(4條):ALE:地址鎖存允許輸入線,高電平有效,當(dāng)ALE為高電平時,為地址輸入線,用于選擇IN0-IN7上那一條模擬電壓送給比較器進(jìn)行A/D轉(zhuǎn)換。ADDA,ADDB,ADDC:3位地址輸入線,用于選擇8路模擬輸入中的一路。START:ST

9、ART為“啟動脈沖”輸入法,該線上正脈沖由CPU送來,寬度應(yīng)大于100ns,上升沿清零SAR,下降沿啟動ADC工作。EOC: EOC為轉(zhuǎn)換結(jié)束輸出線,該線上高電平表示A/D轉(zhuǎn)換已結(jié)束,數(shù)字量已鎖入三態(tài)輸出鎖存器。OUT1-OUT8:數(shù)字量輸出端,OUT8為高位。OE:OE為輸出允許端,高電平能使D1-D8引腳上輸出轉(zhuǎn)換后的數(shù)字量。VREF+、VREF-:參考電壓輸入量,給電阻階梯網(wǎng)絡(luò)供給標(biāo)準(zhǔn)電壓。 CLOCK:時鐘輸入端2.2.2 ADC0808工作流程ADC0808的工作流程為:(1)輸入3位地址,并使ALE=1,將地址存入地址鎖存器中,經(jīng)地址譯碼器從8路模擬通道中選通1路模擬量送給比較器。

10、(2)送START一高脈沖,START的上升沿使逐次寄存器復(fù)位,下降沿啟動A/D轉(zhuǎn)換,并使EOC信號為低電平。(3)當(dāng)轉(zhuǎn)換結(jié)束時,轉(zhuǎn)換的結(jié)果送入到輸出三態(tài)鎖存器中,并使EOC信號回到高電平,通知CPU已轉(zhuǎn)換結(jié)束。(4)當(dāng)CPU執(zhí)行一讀數(shù)據(jù)指令時,使OE為高電平,則從輸出端OUT1-OUT8讀出數(shù)據(jù)。2.3 LED顯示系統(tǒng)設(shè)計2.3.1 LED顯示器的選擇在應(yīng)用系統(tǒng)中,設(shè)計要求不同,使用的LED顯示器的位數(shù)也不同,因此就生產(chǎn)了位數(shù),尺寸,型號不同的LED顯示器供選擇,在本設(shè)計中,選擇4位一體的數(shù)碼型LED顯示器,即7SEG-MPX4-CC-BLUE。本系統(tǒng)中前一位顯示電壓的整數(shù)位,即個位,后兩位

11、顯示電壓的小數(shù)位。7SEG-MPX4-CC-BLUE顯示器引腳如圖2-3所示,是一個共陰極接法的4位LED數(shù)碼顯示管,其中a,b,c,e,f,g為4位LED各段的公共輸出端,1、2、3、4分別是每一位的位數(shù)選端,dp是小數(shù)點(diǎn)引出端。本電路中P1口控制段選信號,P2.4-P2.7控制位選信號。 圖2-3 7SEG-MPX4-CC-BLUE 引腳2.3.2 LED譯碼方式譯碼方式是指由顯示字符轉(zhuǎn)換得到對應(yīng)的字段碼的方式,對于LED數(shù)碼管顯示器,通常的譯碼方式有硬件譯碼和軟件譯碼方式兩種。硬件譯碼是指利用專門的硬件電路來實(shí)現(xiàn)顯示字符碼的轉(zhuǎn)換。軟件譯碼就是編寫軟件譯碼程序,通過譯碼程序來得到要顯示的字

12、符的字段碼,譯碼程序通常為查表程序。本設(shè)計系統(tǒng)中為了簡化硬件線路設(shè)計,LED譯碼采用軟件編程來實(shí)現(xiàn)。由于本設(shè)計采用的是共陰極LED,其對應(yīng)的字符和字段碼如下表2所示。表2 共陰極字段碼表顯示字符共陰極字段碼03FH106H25BH34FH466H56DH67DH707H87FH96FH2.4 雙D正沿觸發(fā)器74LS74這個集成塊是一個雙D觸發(fā)器,其功能比較的多,可用作寄存器,移位寄存器,振蕩器,單穩(wěn)態(tài),分頻計數(shù)器等功能。74LS74是個雙D觸發(fā)器,把其中的一個D觸發(fā)器的Q非輸出端接到D輸入端,時鐘信號輸入端CLOCK接時鐘輸入信號,這樣每來一次CLOCK脈沖,D觸發(fā)器的狀態(tài)就會翻轉(zhuǎn)一次,每兩次

13、CLOCK脈沖就會使D觸發(fā)器輸出一個完整的正方波,這就實(shí)現(xiàn)了2分頻。把同一片74LS74上的兩路D觸發(fā)器串聯(lián)起來,其中一個D觸發(fā)器的輸出作為另一個D觸發(fā)器的時鐘信號,還可以實(shí)現(xiàn)4分頻。74LS74引腳如圖2-4所示圖2-4 74LS74引腳2.5 總體電路設(shè)計經(jīng)過以上的設(shè)計過程,可設(shè)計出基于單片機(jī)的簡易數(shù)字直流電壓表硬件電路原理圖如圖2-5所示圖2-5 簡易數(shù)字電壓表電路圖此電路的工作原理是:+5V模擬電壓信號通過變阻器VR1分壓后由ADC08008的IN0通道進(jìn)入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低電平),經(jīng)過模/數(shù)轉(zhuǎn)換后,產(chǎn)生相應(yīng)的數(shù)字量經(jīng)過其輸出通道D0-D7傳

14、送給AT89C51芯片的P0口,AT89C51負(fù)責(zé)把接收到的數(shù)字量經(jīng)過數(shù)據(jù)處理,產(chǎn)生正確的7段數(shù)碼管的顯示段碼傳送給四位LED,同時它還通過其四位I/O口P2.4、P2.5、P2.6、P2.7產(chǎn)生位選信號控制數(shù)碼管的亮滅。此外,AT89C51還控制ADC0808的工作。其中,單片機(jī)AT89C51通過定時器中斷從P3.3輸出方波,接到ADC0808的CLOCK,P3.2發(fā)正脈沖啟動A/D轉(zhuǎn)換,P3.0檢測A/D轉(zhuǎn)換是否完成,轉(zhuǎn)換完成后,P3.1置高從P1口讀取轉(zhuǎn)換結(jié)果送給LED顯示出來。簡易數(shù)字直流電壓表的硬件電路已經(jīng)設(shè)計完成,就可以選取相應(yīng)的芯片和元器件,利用Proteus軟件繪制出硬件的原理

15、,并仔細(xì)地檢查修改,直至形成完善的硬件原理圖。但要真正實(shí)現(xiàn)電路對電壓的測量和顯示的功能,還需要有相應(yīng)的軟件配合,才能達(dá)到設(shè)計要求。三 程序設(shè)計3.1 程序設(shè)計總方案 根據(jù)模塊的劃分原則,將該程序劃分初始化模塊,A/D轉(zhuǎn)換子程序和顯示子程序。初始化中主要對AT89C51,ADC0808的管腳和數(shù)碼管的位選級所用的內(nèi)存單元進(jìn)行初始化設(shè)置。準(zhǔn)備工作做好后啟動ADC0808對INO腳輸入進(jìn)的0-5V電壓模擬進(jìn)行數(shù)據(jù)采集并轉(zhuǎn)化成相對應(yīng)的0-255十進(jìn)制數(shù)字量。在數(shù)據(jù)處理子程序中,編寫算法將0-255十進(jìn)制數(shù)字量轉(zhuǎn)化成0-5V的數(shù)據(jù),輸出到顯示子程序進(jìn)行顯示。三個程序模塊構(gòu)成了整個系統(tǒng)軟件的主程序,如圖3

16、-1所示。圖3-1 數(shù)字式直流電壓表主程序框圖3.2 系統(tǒng)子程序設(shè)計3.2.1 初始化程序所謂初始化,是對將要用到的MCS_51系列單片機(jī)內(nèi)部部件或擴(kuò)展芯片進(jìn)行初始工作狀態(tài)設(shè)定,初始化子程序的主要工作是設(shè)置定時器的工作模式,初值預(yù)置,開中斷和打開定時器等。3.2.2 A/D轉(zhuǎn)換子程序啟動ADC0808對模擬量輸入信號進(jìn)行轉(zhuǎn)換,通過判斷EOC(P3.2引腳)來確定轉(zhuǎn)換是否完成若EOC為0,則繼續(xù)等待;若EOC為1,則把OE置位,將轉(zhuǎn)換完成的數(shù)據(jù)儲存到dispbuf數(shù)組中,其轉(zhuǎn)換流程圖如圖3-2所示。 圖3-2 A/D轉(zhuǎn)換流程圖3.2.3 顯示子程序顯示子程序采用動態(tài)掃描法實(shí)現(xiàn)四位數(shù)碼管的數(shù)值顯示

17、,在定時器中斷里實(shí)現(xiàn)。測量所得A/D轉(zhuǎn)換數(shù)據(jù)放在dispbuf數(shù)組中,測量數(shù)據(jù)在顯示時需轉(zhuǎn)換成10進(jìn)制BCD碼。電路中P1口控制段選信號,P2.4-P2.7控制位選信號。程序流程圖如圖3-3所示。圖3-3 顯示子程序流程圖四 仿真調(diào)試4.1 軟件調(diào)試 軟件調(diào)試的主要任務(wù)是排查錯誤,錯誤主要包括邏輯和功能錯誤,這些錯誤有些是顯性的,而有些是隱形的,可以通過仿真開發(fā)系統(tǒng)發(fā)現(xiàn)逐步改正。Proteus軟件可以對基于微控制器的設(shè)計連同所有的周圍電子器件一起仿真,用戶甚至可以實(shí)時采用諸如LED/LCD、鍵盤、RS232終端等動態(tài)外設(shè)模型來對設(shè)計進(jìn)行交互仿真。Proteus支持的微處理芯片包括8051系列、

18、AVR系列、PIC系列、HC11系列及Z80等等。Proteus可以完成單片機(jī)系統(tǒng)原理圖電路繪制、PCB設(shè)計,更為顯著點(diǎn)的特點(diǎn)是可以與Visions4工具軟件結(jié)合進(jìn)行編程仿真調(diào)試。本系統(tǒng)的調(diào)試主要以軟件為主,其中,系統(tǒng)電路圖的繪制和仿真我采用的是Proteus軟件,而程序方面,采用的是C語言,用Keil軟件將程序?qū)懭雴纹瑱C(jī)。4.2 顯示結(jié)果及誤差分析4.2.1 顯示結(jié)果1. 當(dāng)IN0口輸入電壓值為4.99V時,顯示結(jié)果如圖4-1所示,測量誤差為0V。圖4-1 輸入電壓為4.99V時,LED的顯示結(jié)果2.當(dāng)IN0輸入電壓值為2.50V時,顯示結(jié)果如圖4-2所示。測量誤差為0.02V。圖4-2輸入

19、電壓為2.50V時,LED的顯示結(jié)果4.2.2 誤差分析通過以上仿真測量結(jié)果可得到簡易數(shù)字電壓表與“標(biāo)準(zhǔn)”數(shù)字電壓表對比測試表,如下表3所示:表3 簡易數(shù)字電壓表與“標(biāo)準(zhǔn)”數(shù)字電壓表對比測試表標(biāo)準(zhǔn)電壓值/V簡易電壓表測量值/V絕對誤差/V0.000.000.000.500.500.001.000.990.011.501.500.002.001.990.012.502.480.023.002.990.013.503.480.024.003.990.014.504.480.024.994.990.00由于單片機(jī)AT89C51為8位處理器,當(dāng)輸入電壓為5.00V時,ADC0808輸出數(shù)據(jù)值為255(

20、FFH),因此單片機(jī)最高的數(shù)值分辨率為0.0196V(5/255)。這就決定了電壓表的最高分辨率只能到0.0196V,從上表可看到,測試電壓一般以0.00-0.02V的幅度變化。從上表可以看出,簡易數(shù)字電壓表測得的值基本上比標(biāo)準(zhǔn)電壓值偏小0-0.02V,這可以通過校正ADC0808的基準(zhǔn)電壓來解決。因?yàn)樵撾妷罕碓O(shè)計時直接用5V的供電電源作為電壓,所以電壓可能有偏差。 結(jié)束經(jīng)過一段時間的努力,畢業(yè)論文-基于單片機(jī)的簡易數(shù)字電壓表基本完成。但設(shè)計中的不足之處仍然存在。這次設(shè)計是我第一次設(shè)計電路,并用Proteus實(shí)現(xiàn)了仿真。在這過程中,我對電路設(shè)計,單片機(jī)的使用等都有了新的認(rèn)識。通過這次設(shè)計學(xué)會了

21、Proteus和Keil軟件的使用方法,掌握了從系統(tǒng)的需要、方案的設(shè)計、功能模塊的劃分、原理圖的設(shè)計和電路圖的仿真的設(shè)計流程,積累了不少經(jīng)驗(yàn)?;趩纹瑱C(jī)的數(shù)字電壓表使用性強(qiáng)、結(jié)構(gòu)簡單、成本低、外接元件少。在實(shí)際應(yīng)用工作應(yīng)能好,測量電壓準(zhǔn)確,精度高。系統(tǒng)功能、指標(biāo)達(dá)到了課題的預(yù)期要求、系統(tǒng)在硬件設(shè)計上充分考慮了可擴(kuò)展性,經(jīng)過一定的改造,可以增加功能。本文設(shè)計主要實(shí)現(xiàn)了簡易數(shù)字電壓表測量一路電壓的功能,詳細(xì)說明了從原理圖的設(shè)計、電路圖的仿真再到軟件的調(diào)試??傊@次電路的設(shè)計和仿真,基本上達(dá)到了設(shè)計的功能要求。在以后的實(shí)踐中,我將繼續(xù)努力學(xué)習(xí)電路設(shè)計方面的理論知識,并理論聯(lián)系實(shí)際,爭取在電路設(shè)計方面

22、能有所提升。參考文獻(xiàn)1單片機(jī)原理與應(yīng)用. 徐愛鈞.北京:機(jī)械工業(yè)出版社,2013年8月2基于Protues的單片機(jī)可視化軟硬件仿真. 林芝琦,郎建軍等著.北京:北京航空航天大學(xué)出版社.2006年9月 3單片機(jī)原理與程序設(shè)計實(shí)驗(yàn)教程. 于殿泓、王新年.西安電子科技大學(xué)出版社,2007年5月4單片機(jī)原理與應(yīng)用及C51程序設(shè)計實(shí)例. 謝維成、楊加國.電子工業(yè)出版社,2006年3月5北京航空航天大學(xué)出版社. 李廣弟.單片機(jī)基礎(chǔ).2007年5月6Protues在MCS-51&ARM7系統(tǒng)中的應(yīng)用百例. 周潤景.第一版.北京:電子工業(yè)出版社,2006年附錄#include unsigned char code dispbitcode=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f;unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66, 0

溫馨提示

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

最新文檔

評論

0/150

提交評論