版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于AT89C51單片機(jī)的數(shù)字電壓表設(shè)計(jì)</p><p><b> 目 錄</b></p><p><b> 0 引言1</b></p><p> 1 系統(tǒng)整體設(shè)計(jì)思路及方案1</p><p> 1.1 設(shè)計(jì)思路1</p><p>
2、; 1.2 設(shè)計(jì)方案1</p><p> 2 數(shù)字電壓表的硬件設(shè)計(jì)2</p><p> 2.1 主控制模塊的設(shè)計(jì)2</p><p> 2.1.1 AT89C51性能簡(jiǎn)介2</p><p> 2.1.2 AT89C51各引腳功能2</p><p> 2.1.3 AT89C51的復(fù)位電路
3、和時(shí)鐘電路4</p><p> 2.2 A/D轉(zhuǎn)換模塊的設(shè)計(jì)5</p><p> 2.2.1 ADC0808的主要特性 6</p><p> 2.2.2 ADC0808各引腳功能6</p><p> 2.3 顯示電路的設(shè)計(jì)7</p><p> 2.4 總體電路設(shè)計(jì)圖9</p&g
4、t;<p> 3 數(shù)字電壓表的軟件設(shè)計(jì)10</p><p> 3.1 設(shè)計(jì)流程圖10</p><p> 3.2 各子程序簡(jiǎn)介11</p><p><b> 4 仿真11</b></p><p> 4.1 軟件調(diào)試11</p><p> 4.2 誤差分
5、析11</p><p><b> 5 結(jié)論12</b></p><p><b> 參考文獻(xiàn)13</b></p><p><b> 附錄14</b></p><p><b> 致謝16</b></p><p>
6、基于AT89C51單片機(jī)的數(shù)字電壓表設(shè)計(jì)</p><p> 摘要:數(shù)字電壓表是常用的對(duì)電子電路進(jìn)行檢測(cè)的較精密儀器之一。本文的設(shè)計(jì)思想是一種基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)方式。該設(shè)計(jì)主要由三個(gè)模塊組成:A/D轉(zhuǎn)換模塊、數(shù)據(jù)處理主控模塊和顯示模塊。A/D轉(zhuǎn)換模塊主要由芯片ADC0808來(lái)完成,它負(fù)責(zé)將采集到的模擬量轉(zhuǎn)換為相應(yīng)的數(shù)字量傳送到數(shù)據(jù)處理模塊(單片機(jī))。數(shù)據(jù)處理主控模塊由單片機(jī)AT89C51來(lái)完成,它負(fù)責(zé)將A
7、DC0808傳送過(guò)來(lái)的數(shù)字量經(jīng)過(guò)一定的數(shù)據(jù)處理,產(chǎn)生相對(duì)應(yīng)的顯示碼傳送到顯示模塊進(jìn)行顯示。此外,它還控制芯片ADC0808的工作。經(jīng)過(guò)仿真軟件結(jié)果表明本設(shè)計(jì)中的電壓表電路簡(jiǎn)單,所用元件較少,成本低且測(cè)量精度高。此電壓表可以測(cè)量0—5V的模擬輸入電壓值,并通過(guò)一個(gè)四位一體的7段數(shù)碼管顯示出來(lái)。</p><p> 關(guān)鍵詞:數(shù)字電壓表;單片機(jī);A/D轉(zhuǎn)換;AT89C51;ADC0808</p><
8、p> The design of digital voltage meter based on AT89C51 single chip microcomputer</p><p> Abstract: digital voltage meter is one of the more commonly used detection precision instrument for electroni
9、c circuit. The design is a design method based on single chip digital voltage meter. The design consists of three modules: A/D module, data processing, the main control module and display module. The A/D conversion modul
10、e is mainly completed by the ADC0808, which is responsible for converting the collected analog to digital quantity corresponding to a data processing module (MCU). Data pr</p><p> Keywords: digital voltage
11、meter;MCU; A/D;AT89C51;ADC0808</p><p><b> 0 引言</b></p><p> 在電量的測(cè)量中,電壓、電流和頻率是最基本的三個(gè)被測(cè)量,其中電壓量的測(cè)量最為經(jīng)常。而且隨著電子技術(shù)的發(fā)展,更是經(jīng)常需要測(cè)量高精度的電壓,所以數(shù)字電壓表就成為一種必不可少的測(cè)量?jī)x器。數(shù)字電壓表(Digital Voltmeter)簡(jiǎn)稱DAM,它
12、是采用數(shù)字化測(cè)量技術(shù),把連續(xù)的模擬量轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。傳統(tǒng)的指針式電壓表功能單一、精度低,不能滿足數(shù)字化時(shí)代的需求,采用單片機(jī)的數(shù)字電壓表,有精度高、抗干擾能力強(qiáng)、集成方便,還可與PC進(jìn)行實(shí)時(shí)通信等優(yōu)點(diǎn)[1]。</p><p> 目前,由各種單片機(jī)和A/D轉(zhuǎn)換器構(gòu)成的數(shù)字電壓表,已被廣泛用于電子及電工測(cè)量、工業(yè)自動(dòng)化儀表、自動(dòng)測(cè)試系統(tǒng)等領(lǐng)域,顯示出了它極強(qiáng)的生命力。與此同時(shí),由DVM
13、擴(kuò)展而成的各種通用及專用數(shù)字儀表儀器,也把電量及非電量技術(shù)提高到嶄新水平[2]。新型數(shù)字電壓表以其高準(zhǔn)確度、高可靠性、高分辨率、高性價(jià)比等優(yōu)良特性備受人們的青睞。</p><p> 本文是以簡(jiǎn)易數(shù)字直流電壓表的設(shè)計(jì)為研究?jī)?nèi)容,本系統(tǒng)主要包括三大模塊:轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊及顯示模塊。其中,A/D轉(zhuǎn)換采用ADC0808對(duì)輸入的模擬信號(hào)進(jìn)行轉(zhuǎn)換,控制核心AT89C51再對(duì)轉(zhuǎn)換的結(jié)果進(jìn)行運(yùn)算處理,最后驅(qū)動(dòng)輸出裝置LE
14、D顯示數(shù)字電壓信號(hào)[3]。</p><p> 1 系統(tǒng)整體設(shè)計(jì)思路及方案</p><p><b> 1.1 設(shè)計(jì)思路</b></p><p> 1)根據(jù)設(shè)計(jì)要求,選擇AT89C51單片機(jī)為核心控制器件。</p><p> 2)A/D轉(zhuǎn)換采用ADC0808實(shí)現(xiàn),連接單片機(jī)的P0口和P3口的低四位引腳。</p
15、><p> 3)電壓顯示采用4位一體的LED數(shù)碼管。</p><p> 4)LED數(shù)碼管的段碼輸入由端口P1產(chǎn)生;位碼輸入用端口P2高四位產(chǎn)生。</p><p><b> 1.2 設(shè)計(jì)方案</b></p><p> 本設(shè)計(jì)選擇AT89C51單片機(jī)作為核心控制器件。A/D轉(zhuǎn)換采用ADC0808來(lái)實(shí)現(xiàn)。電壓顯示采用4位一
16、體的LED數(shù)碼管,LED數(shù)碼管的段碼輸人由端口P1輸出,位碼輸人由端口 P2高四位輸出。</p><p> 硬件電路設(shè)計(jì)由6個(gè)部分組成: A/D轉(zhuǎn)換電路,AT89C51單片機(jī)系統(tǒng),LED顯示系統(tǒng)、時(shí)鐘電路、復(fù)位電路以及測(cè)量電壓輸入電路。硬件電路設(shè)計(jì)如圖1-1所示。 </p><p> 圖1-1 系統(tǒng)設(shè)計(jì)框圖</p><p> 2 數(shù)字電壓表的硬件設(shè)計(jì)<
17、/p><p> 2.1 單片機(jī)主控制模塊的設(shè)計(jì)</p><p> 2.1.1 AT89C51性能簡(jiǎn)介</p><p> AT89C51是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含有4KB的可反復(fù)擦寫的只讀程序存儲(chǔ)器和128字節(jié)的隨機(jī)存儲(chǔ)器。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容,
18、由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,它為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案[4]。</p><p> AT89C51功能性能:與MCS-51成品指令系統(tǒng)完全兼容;4KB可編程閃速存儲(chǔ)器;壽命:1000次寫/擦循環(huán);數(shù)據(jù)保留時(shí)間:10年;全靜態(tài)工作:0-24MHz;三級(jí)程序存儲(chǔ)器鎖定;128*8B內(nèi)部RAM;32個(gè)可編程I/O口線;2個(gè)1
19、6位定時(shí)/計(jì)數(shù)器;5個(gè)中斷源;可編程串行UART通道;片內(nèi)震蕩器和掉電模式[5]。</p><p> 2.1.2 AT89C51各引腳功能</p><p> AT89C51提供以下標(biāo)準(zhǔn)功能:4KB的Flash閃速存儲(chǔ)器,128B內(nèi)部RAM,32個(gè)I/O口線,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)震蕩器及時(shí)鐘電路,同時(shí),AT89C51可降至0Hz靜態(tài)
20、邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作,掉電方式保存RAM中的內(nèi)容,但震蕩器停止工作并禁止其他所有工作直到下一個(gè)硬件復(fù)位。AT89C51采用PDIP封裝形式,引腳配置如圖2-1所示[6]。</p><p> 圖2-1 AT89C51引腳圖</p><p> AT89C51芯片的各引腳功能為:&l
21、t;/p><p> P0口:這組引腳共有8條,P0.0為最低位。這8個(gè)引腳有兩種不同的功能,分別適用于不同的情況,第一種情況是89C51不帶外存儲(chǔ)器,P0口可以為通用I/O口使用,P0.0-P0.7用于傳送CPU的輸入/輸出數(shù)據(jù),這時(shí)輸出數(shù)據(jù)可以得到鎖存,不需要外接專用鎖存器,輸入數(shù)據(jù)可以得到緩沖,增加了數(shù)據(jù)輸入的可靠性;第二種情況是89C51帶片外存儲(chǔ)器,P0.0-P0.7在CPU訪問(wèn)片外存儲(chǔ)器時(shí)先傳送片外存儲(chǔ)器
22、的低8位地址,然后傳送CPU對(duì)片外存儲(chǔ)器的讀/寫數(shù)據(jù)。P0口為開(kāi)漏輸出,在作為通用I/O使用時(shí),需要在外部用電阻上拉。</p><p> P1口:這8個(gè)引腳和P0口的8個(gè)引腳類似,P1.7為最高位,P1.0為最低位,當(dāng)P1口作為通用I/O口使用時(shí),P1.0-P1.7的功能和P0口的第一功能相同,也用于傳送用戶的輸入和輸出數(shù)據(jù)。</p><p> P2口:這組引腳的第一功能與上述兩組引腳
23、的第一功能相同即它可以作為通用I/O口使用,它的第一功能和P0口引腳的第二功能相配合,用于輸出片外存儲(chǔ)器的高8位地址,共同選中片外存儲(chǔ)器單元,但不像P0口那樣傳送存儲(chǔ)器的讀/寫數(shù)據(jù)。</p><p> P3口:這組引腳的第一功能和其余三個(gè)端口的第一功能相同,第二功能為控制功能,每個(gè)引腳并不完全相同,如下表2-1所示:</p><p> 表2-1 P3口各位的第二功能</p>
24、;<p> Vcc為+5V電源線,GND接地。</p><p> ALE:地址鎖存允許線,配合P0口的第二功能使用,在訪問(wèn)外部存儲(chǔ)器時(shí),89C51的CPU在P0.0-P0.7引腳線去傳送隨后而來(lái)的片外存儲(chǔ)器讀/寫數(shù)據(jù)。在不訪問(wèn)片外存儲(chǔ)器時(shí),89C51自動(dòng)在ALE線上輸出頻率為1/6震蕩器頻率的脈沖序列。該脈沖序列可以作為外部時(shí)鐘源或定時(shí)脈沖使用。</p><p> /E
25、A:片外存儲(chǔ)器訪問(wèn)選擇線,可以控制89C51使用片內(nèi)ROM或使用片外ROM,</p><p> 若/EA=1,則允許使用片內(nèi)ROM, 若/EA=0,則只使用片外ROM。</p><p> /PSEN:片外ROM的選通線,在訪問(wèn)片外ROM時(shí),89C51自動(dòng)在/PSEN線上產(chǎn)生一個(gè)負(fù)脈沖,作為片外ROM芯片的讀選通信號(hào)。</p><p> RST:復(fù)位線,可以使8
26、9C51處于復(fù)位(即初始化)工作狀態(tài)。通常89C51復(fù)位有自動(dòng)上電復(fù)位和人工按鍵復(fù)位兩種。</p><p> XTAL1和XTAL2:片內(nèi)震蕩電路輸入線,這兩個(gè)端子用來(lái)外接石英晶體和微調(diào)電容,即用來(lái)連接89C51片內(nèi)OSC(震蕩器)的定時(shí)反饋回路。</p><p> 2.1.3 AT89C51的復(fù)位電路和時(shí)鐘電路</p><p> 單片機(jī)中CPU每執(zhí)行一條指
27、令,都必須在統(tǒng)一的時(shí)鐘脈沖的控制下嚴(yán)格按時(shí)間節(jié)拍進(jìn)行,而這個(gè)時(shí)鐘脈沖是單片機(jī)控制中的時(shí)序電路發(fā)出的。CPU執(zhí)行一條指令的各個(gè)微操作所對(duì)應(yīng)時(shí)間順序稱為單片機(jī)的時(shí)序。MCS-51單片機(jī)芯片內(nèi)部有一個(gè)高增益反相放大器,用于構(gòu)成震蕩器,XTAL1為該放大器的輸入端,XTAL2為該放大器輸出端,但形成時(shí)鐘電路還需附加其他電路[7]。</p><p> 單片機(jī)AT89C51的時(shí)鐘電路如圖2-2所示,主要由電容C1- C3、
28、電阻R1、晶振X1等組成。AT 89C51的18腳(XTAL2)和19腳(XTAL1)接時(shí)鐘電路,其中19腳是AT89C51內(nèi)部振蕩器倒相放大器的輸入端,用于接外部晶振和微調(diào)電容的一端;18腳是AT89C51內(nèi)部振蕩器倒相放大器輸出端,用于接外部晶振和微調(diào)電容的另一端。</p><p> 圖2-2 AT89C51的時(shí)鐘電路圖</p><p> 單片機(jī)在啟動(dòng)運(yùn)行時(shí)都需要復(fù)位,使CPU和
29、系統(tǒng)中的其他部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作。MCS-51單片機(jī)有一個(gè)復(fù)位引腳RST,采用施密特觸發(fā)輸入。當(dāng)震蕩器起振后,只要該引腳上出現(xiàn)2個(gè)機(jī)器周期以上的高電平即可確保時(shí)器件復(fù)位。復(fù)位完成后,如果RST端繼續(xù)保持高電平,MCS-51就一直處于復(fù)位狀態(tài),只要RST恢復(fù)低電平后,單片機(jī)才能進(jìn)入其他工作狀態(tài)。單片機(jī)的復(fù)位方式有上電自動(dòng)復(fù)位和手動(dòng)復(fù)位兩種,圖2-2是51系列單片機(jī)統(tǒng)常用的上電復(fù)位和手動(dòng)復(fù)位組合電路。</
30、p><p> 圖2-3 AT89C51的復(fù)位電路</p><p> 2.2 A/D轉(zhuǎn)換電路設(shè)計(jì) </p><p> 現(xiàn)實(shí)世界的物理量都是模擬量,能把模擬量轉(zhuǎn)化成數(shù)字量的器件稱為模/數(shù)轉(zhuǎn)換器(A/D轉(zhuǎn)換器),A/D轉(zhuǎn)換器是單片機(jī)數(shù)據(jù)采集系統(tǒng)的關(guān)鍵接口電路,按照各種A/D芯片的轉(zhuǎn)化原理可分為逐次逼近型,雙重積分型等等。雙積分式A/D轉(zhuǎn)換器具有抗干擾能力強(qiáng)、轉(zhuǎn)換
31、精度高、價(jià)格便宜等優(yōu)點(diǎn)。與雙積分相比,逐次逼近式A/D轉(zhuǎn)換的轉(zhuǎn)換速度更快,而且精度更高,比如ADC0809、ADC0808等,它們通常具有8路模擬選通開(kāi)關(guān)及地址譯碼、鎖存電路等,它們可以與單片機(jī)系統(tǒng)連接,將數(shù)字量送到單片機(jī)進(jìn)行分析和顯示。一個(gè)n位的逐次逼近型A/D轉(zhuǎn)換器只需要比較n次,轉(zhuǎn)換時(shí)間只取決于位數(shù)和時(shí)鐘周期,逐次逼近型A/D轉(zhuǎn)換器轉(zhuǎn)換速度快,因而在實(shí)際中廣泛使用[8]。</p><p> 2.2.1
32、ADC0808的主要特性</p><p> ADC0808是CMOS單片型逐次逼近式A/D轉(zhuǎn)換器,帶有使能控制端,與微機(jī)直接接口,片內(nèi)帶有鎖存功能的8路模擬多路開(kāi)關(guān),可以對(duì)8路0-5V輸入模擬電壓信號(hào)分時(shí)進(jìn)行轉(zhuǎn)換,由于ADC0808設(shè)計(jì)時(shí)考慮到若干種模/數(shù)變換技術(shù)的長(zhǎng)處,所以該芯片適應(yīng)于過(guò)程控制,微控制器輸入通道的接口電路,智能儀器和機(jī)床控制等領(lǐng)域。</p><p> ADC0808是
33、分辨率為8位的、以逐次逼近原理進(jìn)行模/數(shù)轉(zhuǎn)換的器件。其內(nèi)部有一個(gè)8通道多路開(kāi)關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號(hào),只選通8路模擬輸入信號(hào)中的一個(gè)進(jìn)行A/D轉(zhuǎn)換。ADC0808是ADC0809的簡(jiǎn)化版本,功能基本相同。一般硬件仿真時(shí)采用ADC0808進(jìn)行A/D轉(zhuǎn)換,實(shí)際使用時(shí)采用ADC0809進(jìn)行A/D轉(zhuǎn)換[9]。 </p><p> 2.2.2 ADC0808各引腳功能</p><p>
34、; 圖2-4 ADC0808引腳圖</p><p> ADC0808芯片有28條引腳,采用雙列直插式封裝,其引腳圖如圖2-4所示。</p><p> 下面說(shuō)明各個(gè)引腳功能:</p><p> IN0-IN7(8條):8路模擬量輸入線,用于輸入和控制被轉(zhuǎn)換的模擬電壓。</p><p> ALE:地址鎖存允許輸入線,高電平有效,當(dāng)ALE
35、為高電平時(shí),為地址輸入線,用于選擇IN0-IN7上那一條模擬電壓送給比較器進(jìn)行A/D轉(zhuǎn)換。</p><p> ADDA,ADDB,ADDC:3位地址輸入線,用于選擇8路模擬輸入中的一路,其對(duì)應(yīng)關(guān)系如表2-2所示:</p><p> 表2-2 ADC0808通道選擇表</p><p> START:START為“啟動(dòng)脈沖”輸入法,該線上正脈沖由CPU送來(lái),寬度應(yīng)
36、大于100ns,上升沿清零SAR,下降沿啟動(dòng)ADC工作。</p><p> EOC: EOC為轉(zhuǎn)換結(jié)束輸出線,該線上高電平表示A/D轉(zhuǎn)換已結(jié)束,數(shù)字量已鎖入三態(tài)輸出鎖存器。</p><p> D1-D8:數(shù)字量輸出端,D1為高位。</p><p> OE:OE為輸出允許端,高電平能使D1-D8引腳上輸出轉(zhuǎn)換后的數(shù)字量。</p><p>
37、 REF+、REF-:參考電壓輸入量,給電阻階梯網(wǎng)絡(luò)供給標(biāo)準(zhǔn)電壓。</p><p> Vcc、GND: Vcc為主電源輸入端,GND為接地端,一般REF+與Vcc連接在一起,REF-與GND連接在一起.</p><p> CLK:時(shí)鐘輸入端。</p><p> 2.3 顯示電路的設(shè)計(jì)</p><p> LED是發(fā)光二極管顯示器的縮
38、寫。LED由于結(jié)構(gòu)簡(jiǎn)單、價(jià)格便宜、與單片機(jī)接口方便等優(yōu)點(diǎn)而得到廣泛應(yīng)用。LED顯示器是由若干個(gè)發(fā)光二極管組成顯示字段的顯示器件。在單片機(jī)中使用最多的是七段數(shù)碼顯示器。</p><p> 在應(yīng)用系統(tǒng)中,設(shè)計(jì)要求不同,使用的LED顯示器的位數(shù)也不同,因此就生產(chǎn)了位數(shù),尺寸,型號(hào)不同的LED顯示器供選擇,在本設(shè)計(jì)中,選擇4位一體的數(shù)碼型LED顯示器,簡(jiǎn)稱“4-LED”。本系統(tǒng)中前一位顯示電壓的整數(shù)位,即個(gè)位,后兩位顯
39、示電壓的小數(shù)位。</p><p> 4-LED顯示器引腳如圖2-5所示,是一個(gè)共陰極接法的4位LED數(shù)碼顯示管,其中a,b,c,e,f,g為4位LED各段的公共輸出端,1、2、3、4分別是每一位位數(shù)選端,DP是小數(shù)點(diǎn)引出端,4位一體LED數(shù)碼顯示管的內(nèi)部結(jié)構(gòu)是由4個(gè)單獨(dú)的LED組成,每個(gè)LED的段輸出引腳在內(nèi)部都并聯(lián)后,引出到器件的外部。</p><p> 圖2-5 4位LED引腳&
40、lt;/p><p> 本設(shè)計(jì)中LED和單片機(jī)的連接如圖2-6,圖中可以看出,本設(shè)計(jì)用單片機(jī)的P1.0~P1.7作為L(zhǎng)ED顯示的片選端口,P2端口的高四位作為L(zhǎng)ED的位選信號(hào)。</p><p> 圖2-6 顯示電路連接圖</p><p> 2.4 總體電路設(shè)計(jì)</p><p> 經(jīng)過(guò)以上的設(shè)計(jì)過(guò)程,可設(shè)計(jì)出基于單片機(jī)的簡(jiǎn)易數(shù)字電壓表硬件
41、電路原理圖如圖2-7所示。</p><p> 圖2-7 設(shè)計(jì)電路總圖</p><p> 此電路的工作原理是:+5V模擬電壓信號(hào)通過(guò)變阻器VR1分壓后由ADC0808的IN0通道進(jìn)入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低電平),經(jīng)過(guò)模/數(shù)轉(zhuǎn)換后,產(chǎn)生相應(yīng)的數(shù)字量經(jīng)過(guò)其輸出通道D0-D7傳送給AT89C51芯片的P0口,AT89C51負(fù)責(zé)把接收到的數(shù)字量經(jīng)過(guò)數(shù)據(jù)處
42、理,產(chǎn)生正確的7段數(shù)碼管的顯示段碼傳送給四位LED,同時(shí)它還通過(guò)其四位I/O口P2.4、P2.5、P2.6、P2.7產(chǎn)生位選信號(hào)控制數(shù)碼管的亮滅。此外,AT89C51還控制ADC0808的工作。其中,單片機(jī)AT89C51從外部中斷P3.3連接到D觸發(fā)器從而控制ADC0808的CLOCK,P3.0發(fā)正脈沖啟動(dòng)A/D轉(zhuǎn)換,P3.2檢測(cè)A/D轉(zhuǎn)換是否完成,轉(zhuǎn)換完成后,P3.1置高從P1口讀取轉(zhuǎn)換結(jié)果送給LED顯示出來(lái)[9]。</p>
43、;<p> 簡(jiǎn)易數(shù)字直流電壓表的硬件電路已經(jīng)設(shè)計(jì)完成,就可以選取相應(yīng)的芯片和元器件,利用Proteus軟件繪制出硬件的原理,并仔細(xì)地檢查修改,直至形成完善的硬件原理圖。</p><p> 3 數(shù)字電壓表的軟件設(shè)計(jì)</p><p> 3.1 設(shè)計(jì)流程圖</p><p> 主程序主要完成信號(hào)存儲(chǔ)、信號(hào)處理、A/ D轉(zhuǎn)換以及調(diào)用顯示等。</
44、p><p> 主程序流程圖:程序首先從ORG0000H開(kāi)始,然后無(wú)條件件跳轉(zhuǎn)至主程序的首地址開(kāi)始,初始化后,先調(diào)用模數(shù)轉(zhuǎn)換程序進(jìn)行輸入信號(hào)的數(shù)字化,然后調(diào)用顯示子程序?qū)⑻幚砗蟮臄?shù)字輸出,一次數(shù)據(jù)結(jié)束后,循環(huán)執(zhí)行調(diào)用的兩個(gè)子程序。</p><p> A/D轉(zhuǎn)換子程序流程圖:首先進(jìn)行開(kāi)始模數(shù)轉(zhuǎn)化,執(zhí)行后,如果檢測(cè)到轉(zhuǎn)化沒(méi)有完成則繼續(xù)轉(zhuǎn)化,如果轉(zhuǎn)化完成,執(zhí)行下一條指令,將取得模數(shù)轉(zhuǎn)化結(jié)果并轉(zhuǎn)換為
45、工程量,然后顯示轉(zhuǎn)換結(jié)果,此為一次模數(shù)轉(zhuǎn)換,如此循環(huán)可轉(zhuǎn)換下一組數(shù)據(jù),全部轉(zhuǎn)換完畢后,結(jié)束。</p><p> 圖3-1 程序設(shè)計(jì)流程圖</p><p> 3.2 各子程序簡(jiǎn)介</p><p> 所謂初始化,是對(duì)將要用到的MCS_51系列單片機(jī)內(nèi)部部件或擴(kuò)展芯片進(jìn)行 初始工作狀態(tài)設(shè)定,初始化子程序的主要工作是設(shè)置定時(shí)器的工作模式,初值預(yù)置,開(kāi)中斷和打開(kāi)定時(shí)
46、器等[9]。</p><p> A/D轉(zhuǎn)換子程序用來(lái)控制對(duì)輸入的模塊電壓信號(hào)的采集測(cè)量,并將對(duì)應(yīng)的數(shù)值存入相應(yīng)的內(nèi)存單元。</p><p> 顯示子程序采用動(dòng)態(tài)掃描實(shí)現(xiàn)四位數(shù)碼管的數(shù)值顯示,在采用動(dòng)態(tài)掃描顯示方式時(shí),要使得LED顯示的比較均勻,又有足夠的亮度,需要設(shè)置適當(dāng)?shù)膾呙桀l率,當(dāng)掃描頻率在70HZ左右時(shí),能夠產(chǎn)生比較好的顯示效果,一般可以采用間隔10ms對(duì)LED進(jìn)行動(dòng)態(tài)掃描一次,
47、每一位LED的顯示時(shí)間為1ms[10]。</p><p> 在本設(shè)計(jì)中,為了簡(jiǎn)化硬件設(shè)計(jì),主要采用軟件定時(shí)的方式,即用定時(shí)器0溢出中斷功能實(shí)現(xiàn)11μs定時(shí),通過(guò)軟件延時(shí)程序來(lái)實(shí)現(xiàn)5ms的延時(shí)。</p><p><b> 4 軟件調(diào)試</b></p><p><b> 4.1 軟件調(diào)試</b></p>
48、<p> 軟件調(diào)試的主要任務(wù)是排查錯(cuò)誤,錯(cuò)誤主要包括邏輯和功能錯(cuò)誤,這些錯(cuò)誤有些是顯性的,而有些是隱形的,可以通過(guò)仿真開(kāi)發(fā)系統(tǒng)發(fā)現(xiàn)逐步改正。Proteus軟件可以對(duì)基于微控制器的設(shè)計(jì)連同所有的周圍電子器件一起仿真。Proteus支持的微處理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80等等。Proteus可以完成單片機(jī)系統(tǒng)原理圖電路繪制、PCB設(shè)計(jì),更為顯著的特點(diǎn)是可以與u Visions3 IDE工具
49、軟件結(jié)合進(jìn)行編程仿真調(diào)試[11]。</p><p> 本系統(tǒng)的調(diào)試主要以軟件為主,其中,系統(tǒng)電路圖的繪制和仿真我采用的是Proteus軟件,程序方面,采用的是C語(yǔ)言,用Keil軟件將程序?qū)懭雴纹瑱C(jī)。</p><p><b> 4.2 誤差分析</b></p><p> 由于單片機(jī)AT89C51為8位處理器,當(dāng)輸入電壓為5.00V時(shí),AD
50、C0808輸出數(shù)據(jù)值為255(FFH),因此單片機(jī)最高的數(shù)值分辨率為0.0196V(5/255)。這就決定了電壓表的最高分辨率只能到0.0196V,從下表可看到,測(cè)試電壓一般以0.01V的幅度變化[11]。</p><p> 本文的數(shù)字電壓表可以測(cè)量0-5V的電壓值,最大分辯率為0.01V。通過(guò)仿真測(cè)量結(jié)果可得到簡(jiǎn)易數(shù)字電壓表與“標(biāo)準(zhǔn)”數(shù)字電壓表對(duì)比測(cè)試表。</p><p> 本次設(shè)計(jì)
51、的電壓表誤差分析采用多次測(cè)量求絕對(duì)差值的方法,并把各組數(shù)據(jù)列成表格,這樣能更加清晰地看出誤差的波動(dòng)范圍及大小,如下表4-1所示:</p><p> 表4-1 誤差分析</p><p> 從上表可以看出,簡(jiǎn)易數(shù)字電壓表測(cè)得的值基本上比標(biāo)準(zhǔn)電壓值偏小0-0.02V,這可以通過(guò)校正ADC0808的基準(zhǔn)電壓來(lái)解決。因?yàn)樵撾妷罕碓O(shè)計(jì)時(shí)直接用5V的供電電源作為電壓,所以電壓可能有偏差。當(dāng)要測(cè)量大
52、于5V的電壓時(shí),可在輸入口使用分壓電阻,而程序中只要將計(jì)算程序的除數(shù)進(jìn)行調(diào)整就可以了。</p><p><b> 5 結(jié)論 </b></p><p> 經(jīng)過(guò)近段時(shí)間的努力,基于AT89C51單片機(jī)的數(shù)字電壓表設(shè)計(jì)基本完成。但設(shè)計(jì)中仍然存在許多不足之處。這次設(shè)計(jì)是我第一次設(shè)計(jì)電路,并用Proteus實(shí)現(xiàn)了仿真。在這過(guò)程中,我對(duì)電路設(shè)計(jì),單片機(jī)的使用等都有了新的認(rèn)識(shí)
53、。通過(guò)這次設(shè)計(jì)學(xué)會(huì)了Proteus和Keil軟件的使用方法,掌握了從系統(tǒng)的需要、方案的設(shè)計(jì)、功能模塊的劃分、原理圖電路圖的仿真的設(shè)計(jì)流程,積累了不少經(jīng)驗(yàn)。</p><p> 基于單片機(jī)的數(shù)字電壓表使用性強(qiáng)、結(jié)構(gòu)簡(jiǎn)單、成本低、外接元件少。在實(shí)際應(yīng)用工作應(yīng)能好,測(cè)量電壓準(zhǔn)確,精度高。系統(tǒng)功能、指標(biāo)達(dá)到了論文的預(yù)期要求,本文設(shè)計(jì)主要實(shí)現(xiàn)了簡(jiǎn)易數(shù)字電壓表測(cè)量一路電壓的功能,詳細(xì)說(shuō)明了從原理圖的設(shè)計(jì)、電路圖的仿真再到軟件
54、的調(diào)試。</p><p> 通過(guò)本次設(shè)計(jì),我對(duì)單片機(jī)這門課有了進(jìn)一步的了解。無(wú)論是在硬件連接方面還是在軟件編程方面。本次設(shè)計(jì)采用了AT89C51單片機(jī)芯片,設(shè)計(jì)中還用到了模/數(shù)轉(zhuǎn)換芯片ADC0808,以前在學(xué)單片機(jī)課程時(shí)只是對(duì)其理論知識(shí)有了初步的理解。通過(guò)這次設(shè)計(jì),對(duì)它的工作原理有了更深的理解。在調(diào)試過(guò)程中遇到很多問(wèn)題,硬件上的理論知識(shí)學(xué)得不夠扎實(shí),對(duì)電路的仿真方面也不夠熟練。</p><p
55、> 總之這次電路的設(shè)計(jì)和仿真,基本上達(dá)到了設(shè)計(jì)的功能要求。在以后的實(shí)踐工作中,我將繼續(xù)努力學(xué)習(xí)電路設(shè)計(jì)方面的理論知識(shí),并理論聯(lián)系實(shí)際,爭(zhēng)取在電路設(shè)計(jì)方面能有所提升。</p><p><b> 參考文獻(xiàn):</b></p><p> [1]胡健.單片機(jī)原理及接口技術(shù).北京:機(jī)械工業(yè)出版社,2004年10月</p><p> [2]王毓
56、銀.數(shù)字電路邏輯設(shè)計(jì).高等教育出版社,2005年12月</p><p> [3]宋鳳娟,孫軍,李國(guó)忠.基于89C51單片機(jī)數(shù)字電壓表設(shè)計(jì)[J] .工業(yè)控制計(jì)算機(jī),2007/04</p><p> [4]謝維成、楊加國(guó).單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì)實(shí)例.電子工業(yè)出版社,2006年3月</p><p> [5]李廣弟.單片機(jī)基礎(chǔ).北京航空航天大學(xué)出版社,200
57、7年5月</p><p> [6]姜志海,黃玉清等著.單片機(jī)原理及應(yīng)用[M].北京:電子工業(yè)出版社.2005年7月 </p><p> [7]魏立峰.單片機(jī)原理及應(yīng)用技術(shù).北京大學(xué)出版社,2005年</p><p> [8]周潤(rùn)景.Protues在MCS-51&ARM7系統(tǒng)應(yīng)用百例.第一版.北京:電子工業(yè)出版社2006年</p><
58、p> [9]邊春遠(yuǎn)等著.MCS-51單片機(jī)應(yīng)用開(kāi)發(fā)實(shí)用子程序[M].北京:人民郵電出版社.2005/9</p><p> [10]苗紅霞.單片機(jī)實(shí)現(xiàn)數(shù)字電壓表的軟硬件設(shè)計(jì)[J] .河海大學(xué)常州分校學(xué)報(bào),2002,(03).</p><p> [11]于殿泓、王新年.單片機(jī)原理與程序設(shè)計(jì)實(shí)驗(yàn)教程.西安電子科技大學(xué)出版社,2007/5</p><p><
59、;b> 致 謝</b></p><p> 經(jīng)過(guò)近段時(shí)間的不懈努力,本次畢業(yè)設(shè)計(jì)即將接近尾聲,由于是初次嘗試設(shè)計(jì)電路,由于知識(shí)及經(jīng)驗(yàn)的匱乏,難免遇到很多困難,如果沒(méi)有指導(dǎo)老師的督促指導(dǎo)以及同學(xué)們的幫助,很難順利的完成此次畢業(yè)設(shè)計(jì)。從開(kāi)始選題到論文的順利完成,都離不開(kāi)老師、同學(xué)、朋友給以的幫助,在這里請(qǐng)接受我的謝意!</p><p> 首先,感謝在本次畢業(yè)設(shè)計(jì)過(guò)程中,從
60、選題、構(gòu)思、資料收集到最后定稿的各個(gè)環(huán)節(jié)給予細(xì)心指引與教導(dǎo)的吳老師,使我對(duì)課程的多方面的知識(shí)有了深刻的認(rèn)識(shí),使我得以最終完成畢業(yè)設(shè)計(jì),在此表示衷心感謝。</p><p> 本次設(shè)計(jì)的順利完成,還要特別感謝**老師,如果上學(xué)期沒(méi)跟隨*老師學(xué)習(xí)Protues軟件的使用,本次設(shè)計(jì)業(yè)不可能這么順利的完成。</p><p> 其次,感謝在做畢業(yè)設(shè)計(jì)中幫助我的同學(xué)們,感謝你們給我的幫助和鼓勵(lì),感謝
61、你們?cè)谖矣龅嚼щy時(shí)所給的幫助,正是有了你們的幫助和鼓勵(lì),此次畢業(yè)設(shè)計(jì)才得以順利的完成。</p><p> 最后,對(duì)大學(xué)四年以來(lái)曾經(jīng)關(guān)心支持過(guò)我的老師、同學(xué),還有我的親愛(ài)的室友們送上最真誠(chéng)的謝意。對(duì)于給我們提供了良好學(xué)習(xí)環(huán)境的--師范大學(xué),更是充滿了感激,由于母校的培養(yǎng),才使我成長(zhǎng)為一個(gè)合格的大學(xué)生。</p><p><b> 附錄:</b></p>
62、<p><b> 程序代碼:</b></p><p> #include <AT89X52.H> </p><p> unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f}; </p><p> unsigned ch
63、ar code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00}; </p><p> unsigned char dispbuf[8]={10,10,10,10,10,0,0,0}; </p><p> unsigned char dispcount; </p><p>
64、 unsigned char getdata; </p><p> unsigned int temp; </p><p> long int i; </p><p> sbit ST=P3^0; </p><p> sbit OE=P3^1; </p><p> sbit EOC=P3^2; </
65、p><p> sbit CLK=P3^3;</p><p> void main(void) </p><p><b> { </b></p><p><b> ST=0; </b></p><p><b> OE=0; </b></p>
66、;<p><b> ET0=1; </b></p><p><b> ET1=1; </b></p><p><b> EA=1; </b></p><p> TMOD=0x12; </p><p><b> TH0=216; </b&g
67、t;</p><p><b> TL0=216; </b></p><p> TH1=(65536-5000)/256; </p><p> TL1=(65536-5000)%256; </p><p><b> TR1=1; </b></p><p><b&g
68、t; TR0=1; </b></p><p><b> ST=1; </b></p><p><b> ST=0; </b></p><p><b> while(1) </b></p><p><b> { </b></p&g
69、t;<p> if(EOC==1) </p><p><b> { </b></p><p><b> OE=1; </b></p><p> getdata=P0; </p><p><b> OE=0; </b></p><p&g
70、t; i=getdata*196;</p><p> dispbuf[5]=i/10000; </p><p> i=i%10000; </p><p> dispbuf[6]=i/1000;</p><p> i=i%1000; </p><p> dispbuf[7]=i/100;</p>
71、<p><b> ST=1; </b></p><p><b> ST=0; </b></p><p><b> } } } </b></p><p> void t0(void) interrupt 1 using 0 //定時(shí)器0 中斷
72、服務(wù)</p><p><b> { </b></p><p> CLK=~CLK; </p><p><b> } </b></p><p> void t1(void) interrupt 3 using 0 //定時(shí)器1 中斷服務(wù)</p>
73、;<p><b> { </b></p><p> TH1=(65536-6000)/256; </p><p> TL1=(65536-6000)%256; </p><p> P1=dispcode[dispbuf[dispcount]]; </p><p> P2=dispbitcode[d
74、ispcount]; </p><p> if(dispcount==5) </p><p><b> { </b></p><p> P1=P1 | 0x80; </p><p><b> } </b></p><p> dispcount++; </p&g
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于at89c51單片機(jī)的數(shù)字電壓表設(shè)計(jì)(畢業(yè)論文)
- 畢業(yè)論文--基于at89c51單片機(jī)的數(shù)字電壓表的設(shè)計(jì)
- 基于at89c51單片機(jī)的數(shù)字電壓表設(shè)計(jì)
- 基于at89c51單片機(jī)的數(shù)字電壓表的仿真設(shè)計(jì)
- 數(shù)字電壓表畢業(yè)論文--基于51單片機(jī)的數(shù)字電壓表設(shè)計(jì)
- 基于51單片機(jī)的數(shù)字電壓表設(shè)計(jì) 畢業(yè)論文
- @基于AT89C51單片機(jī)的數(shù)字電壓表的Proteus仿真設(shè)計(jì)與應(yīng)用.pdf
- 基于at89c51的簡(jiǎn)易數(shù)字電壓表設(shè)計(jì)
- 2017畢業(yè)論文-基于at89c51單片機(jī)數(shù)字時(shí)鐘的設(shè)計(jì)
- 89c51單片機(jī)數(shù)字電壓表課程設(shè)計(jì)
- 基于STC89C51單片機(jī)的數(shù)字電壓表設(shè)計(jì).pdf
- 基于at89c51單片機(jī)的數(shù)字時(shí)鐘設(shè)計(jì)
- 畢業(yè)論文--基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)
- 基于at89s52單片機(jī)的數(shù)字電壓表設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文基于at89s52單片機(jī)的數(shù)字電壓表設(shè)計(jì)
- 基于單片機(jī)的數(shù)字電壓表畢業(yè)論文
- 單片機(jī)數(shù)字電壓表畢業(yè)論文
- (畢業(yè)論文)基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)
- 畢業(yè)論文——基于單片機(jī)的數(shù)字電壓表
- 基于at89c51單片機(jī)數(shù)字鐘設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論