單片機(jī)技術(shù)課程設(shè)計說明書 數(shù)字電壓表
《單片機(jī)技術(shù)課程設(shè)計說明書 數(shù)字電壓表》由會員分享,可在線閱讀,更多相關(guān)《單片機(jī)技術(shù)課程設(shè)計說明書 數(shù)字電壓表(31頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 《單片機(jī)技術(shù)》課程設(shè)計說明書 數(shù)字電壓表 院、 部: 電子與信息工程學(xué)院 學(xué)生姓名: xxxxx 指導(dǎo)教師: xx 職稱: 講師 專 業(yè): 自動化 班 級: 自本1001班 完成時間: 2012年12月25日 摘 要 本文介紹了一種基于單片機(jī)的簡易數(shù)字電壓表的設(shè)計,該電路采用ADC0809 A/D轉(zhuǎn)換元件,實(shí)現(xiàn)數(shù)字電壓表的硬件電路與軟件設(shè)計。該系統(tǒng)的數(shù)字電壓表電路簡單, 可
2、以測量0~5V的電壓值,并在lED數(shù)碼管上顯示 該設(shè)計主要由三個模塊組成:A/D轉(zhuǎn)換模塊,數(shù)據(jù)處理模塊及顯示模塊。A/D轉(zhuǎn)換主要由芯片ADC0809來完成,它負(fù)責(zé)把采集到的模擬量轉(zhuǎn)換為相應(yīng)的數(shù)字量在傳送到數(shù)據(jù)處理模塊。數(shù)據(jù)處理則由單片機(jī)AT89C51來完成,其負(fù)責(zé)把ADC0809傳送來的數(shù)字量經(jīng)過一定的數(shù)據(jù)處理,產(chǎn)生相應(yīng)的顯示碼送到顯示模塊進(jìn)行顯示;此外,它還控制著ADC0809芯片工作。 該系統(tǒng)的數(shù)字電壓表電路簡單,所用的元件較少,成本低,且測量精度和可靠性較高。此數(shù)字電壓表可以測量0-5V的1路模擬直流輸入電壓值,并通過一個四位一體的7段數(shù)碼管顯示出來。 關(guān)鍵字:單片機(jī);數(shù)字電壓
3、表;A/D轉(zhuǎn)換;AT89C51;ADC0809 ABSTRACT This paper introduces a kind of chip based on a digital voltage meter design, the circuit uses ADC0809 A\/D converter, digital voltage meter to achieve hardware circuit and software design. The system of the digital volta
4、ge meter circuit is simple, can be measured by 0~ 5V voltage value, and in the LED digital tube display This design mainly consists of three modules: A\/D module, data processing module and display module. Conversion of A\/D mainly by the chip ADC0809 to complete, it is responsible for the acquisit
5、ion of analog quantity is converted into corresponding digital quantity in transmitted to a data processing module. Data processing by the MCU to complete the AT89C51, its responsible for the ADC0809 transmission to a digital quantity after a certain amount of data processing, to produce a correspon
6、ding display code to the display module for display; in addition, it also controls the operation of the ADC0809 chip. The system of the digital voltage meter circuit is simple, with less elements, low cost, and high measuring precision and reliability. The digital voltage meter can measure 0-5V 1 a
7、nalog input DC voltage value, and through a four one of the 7 digital tube display. Key words: single-chip microcontroller; digital voltmeter; A/D converter; AT89C51; ADC0808 I 目 錄 1 設(shè)計總體方案 1 1.1 設(shè)計要求 1 1.2 設(shè)計思路 1 1.3 設(shè)計方案 1 2 設(shè)計課題硬件系統(tǒng)的設(shè)計 2
8、 2.1 AT89C51單片機(jī) 2 2.2 ADC0809引腳功能 4 2.3 復(fù)位電路設(shè)計 5 2.4 時鐘電路設(shè)計 5 2.5 LED顯示系統(tǒng)設(shè)計 6 2.5.1 LED的基本結(jié)構(gòu) 6 2.5.2 LED顯示器的選擇 7 2.5.3 LED譯碼方式 7 2.5.4 LED顯示器與單片機(jī)接口設(shè)計 8 2.6 總體電路設(shè)計 9 3 程序設(shè)計 10 3.1 程序設(shè)計總方案 10 3.2 系統(tǒng)子程序設(shè)計 10 3.2.1
9、 初始化程序 10 3.2.2 A/D轉(zhuǎn)換子程序 10 3.2.3 顯示子程序 11 3.3 軟件程序清單 11 4 仿真 12 4.1 軟件調(diào)試 12 4.2 顯示結(jié)果及誤差分析 12 4.2.1 顯示結(jié)果 12 4.2.2 誤差分析 14 結(jié)束語 15 致謝 16 參考文獻(xiàn) 17 附錄A 程序清單 18 附錄B 實(shí)物圖 22 附錄C PCB圖 23 附錄D 電路原理圖 25 附錄E 原器件清單 26 I 1 設(shè)計總體方案
10、 1.1 設(shè)計要求 設(shè)計一個能夠測量直流電壓的數(shù)字電壓表。測量電壓范圍0~5V,測量精度小數(shù)點(diǎn)后兩位。該電壓表上電或按鍵復(fù)位后能自動顯示系統(tǒng)提示符“P.”, 進(jìn)入測量準(zhǔn)備狀態(tài),按測量開始鍵則開始測量,并將測量值顯示在顯示器上,按測量結(jié)束鍵則自動返回“P.”狀態(tài)。 1.2 設(shè)計思路 (一)根據(jù)設(shè)計要求,選擇AT89C51單片機(jī)為核心控制器件。 (二)A/D轉(zhuǎn)換采用ADC0809實(shí)現(xiàn),與單片機(jī)的接口為P0口和P2口中的高位引腳。 (三)電壓顯示采用4位一體的LED數(shù)碼管。 (四)LED數(shù)碼的段碼輸入,由并行端口P1產(chǎn)生:位碼輸入,用并行端口P3低四位產(chǎn)生。 1.3
11、設(shè)計方案 硬件電路設(shè)計由6個部分組成,A/D轉(zhuǎn)換電路、AT89C51單片機(jī)系統(tǒng)LED顯示系統(tǒng)、時鐘電路、復(fù)位電路以及測量電壓輸入電路。硬件電路設(shè)計框圖如圖1所示: 圖1 數(shù)字電壓表系統(tǒng)硬件設(shè)計框圖 2 設(shè)計課題硬件系統(tǒng)的設(shè)計 2.1 AT89C51單片機(jī) 本設(shè)計的核心就是運(yùn)用了單片機(jī)去實(shí)現(xiàn)軟件控制信號,達(dá)到了軟件和硬件的結(jié)合,下面就是介紹89C51單片機(jī),單片機(jī)的引腳圖如圖2所示:
12、 圖2 AT89C51的引腳圖 AT89C51芯片的各引腳功能為: P0口:這組引腳共有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使用時
13、,需要在外部用電阻上拉。 P1口:這8個引腳和P0口的8個引腳類似,P1.7為最高位,P1.0為最低位,當(dāng)P1口作為通用I/O口使用時,P1.0-P1.7的功能和P0口的第一功能相同,也用于傳送用戶的輸入和輸出數(shù)據(jù)。 P2口:這組引腳的第一功能與上述兩組引腳的第一功能相同即它可以作為通用I/O口使用,它的第一功能和P0口引腳的第二功能相配合,用于輸出片外存儲器的高8位地址,共同選中片外存儲器單元,但并不是像P0口那樣傳送存儲器的讀/寫數(shù)據(jù)。 P3口:這組引腳的第一功能和其余三個端口的第一功能相同,第二功能為控制功能,每個引腳并不完全相同,如下表1所示: 表1 P3口各位的第二功能
14、 P3口各位 第二功能 P3.0 RXT(串行口輸入) P3.1 TXD(串行口輸出) P3.2 /INT0(外部中斷0輸入) P3.3 /INT1(外部中斷1輸入) P3.4 T0(定時器/計數(shù)器0的外部輸入) P3.5 T1(定時器/計數(shù)器1的外部輸入) P3.6 /WR(片外數(shù)據(jù)存儲器寫允許) P3.7 /RD(片外數(shù)據(jù)存儲器讀允許) Vcc為+5V電源線,Vss接地。 ALE:地址鎖存允許線,配合P0口的第二功能使用,在訪問外部存儲器時,89C51的
15、CPU在P0.0-P0.7引腳線去傳送隨后而來的片外存儲器讀/寫數(shù)據(jù)。在不訪問片外存儲器時,89C51自動在ALE線上輸出頻率為1/6震蕩器頻率的脈沖序列。該脈沖序列可以作為外部時鐘源或定時脈沖使用。 /EA:片外存儲器訪問選擇線,可以控制89C51使用片內(nèi)ROM或使用片外ROM,若/EA=1,則允許使用片內(nèi)ROM, 若/EA=0,則只使用片外ROM。 /PSEN:片外ROM的選通線,在訪問片外ROM時,89C51自動在/PSEN線上產(chǎn)生一個負(fù)脈沖,作為片外ROM芯片的讀選通信號。 RST:復(fù)位線,可以使89C51處于復(fù)位(即初始化)工作狀態(tài)。通常89C51復(fù)位有自動上電復(fù)位和人工按鍵復(fù)
16、位兩種。 XTAL1和XTAL2:片內(nèi)震蕩電路輸入線,這兩個端子用來外接石英晶體和微調(diào)電容,即用來連接89C51片內(nèi)OSC(震蕩器)的定時反饋回路。 2.2 ADC0809引腳功能 ADC0809的引腳如圖3所示,下面對引腳功能做簡要說明: 圖3 ADC0809引腳 IN0~IN7:8個模擬量的輸入端。 D0~D7:8位數(shù)字量輸出端。 START:啟動A/D轉(zhuǎn)換,加正脈沖后A/D轉(zhuǎn)換開始。 EOC:轉(zhuǎn)換結(jié)束信號。轉(zhuǎn)換開始時,EOC信號變低電平;轉(zhuǎn)換結(jié)束時,EOC信號返回高電平。該信號可以作為CPU查詢A/D轉(zhuǎn)換
17、是否完成的信號,也可以作為向CPU發(fā)出中斷申請的信號。 OE:輸出允許信號,輸入高電平有效。OE端的電平由低變高時,轉(zhuǎn)換結(jié)果被送到數(shù)據(jù)線上。此信號有效時,CPU可以從ADC0809中讀取數(shù)據(jù),同時也可以作為ADC0809的片選信號。 CLK:實(shí)時時鐘,頻率范圍為10KHZ~1280KHZ,典型值為640KHZ。 ALE:通道地址鎖存允許信號,輸入高電平有效。在ALE=1時,鎖存ADDA~ADDC,選中模擬量輸入。 ADDC~ADDC:通道地址選擇輸入,其排列順序從低到高依次為ADDA 、ADDB、 ADDC。該地址與8個模擬量輸入,通道的對應(yīng)關(guān)系如表1所示: VREF+、VREF-正
18、負(fù)參考電壓。一般情況下,VREF+接+5V,VREF-接地。此時的轉(zhuǎn)換關(guān)系如表2所示: VCC\GND:工作電源和接地 ADC0809的模擬通道選擇表2所示: 表2 地址與模擬量通道之間的對應(yīng)關(guān)系 ADDC ADDB ADDA 選中通道 0 0 0 IN0 0 0 1 IN1 0 1 0 IN2 0 1 1 IN3 1 0 0 IN4 1 0 1 IN5 1 1 0 IN6 1 1 1 IN7 2.3 復(fù)位電路設(shè)計 單片機(jī)在啟動運(yùn)行時都需要復(fù)位,使CPU和系統(tǒng)中的其他部件都處于一個確定的初始狀
19、態(tài),并從這個狀態(tài)開始工作。MCS-51單片機(jī)有一個復(fù)位引腳RST,采用施密特觸發(fā)輸入。當(dāng)震蕩器起振后,只要該引腳上出現(xiàn)2個機(jī)器周期以上的高電平即可確保時器件復(fù)位。復(fù)位完成后,如果RST端繼續(xù)保持高電平,MCS-51就一直處于復(fù)位狀態(tài),只要RST恢復(fù)低電平后,單片機(jī)才能進(jìn)入其他工作狀態(tài)。單片機(jī)的復(fù)位方式有上電自動復(fù)位和手動復(fù)位兩種,圖4是51系列單片機(jī)統(tǒng)常用的上電復(fù)位和手動復(fù)位組合電路,只要VCC上升時間不超過1ms,它們都能很好的工作。 圖4 復(fù)位電路 2.4 時鐘電路設(shè)
20、計 單片機(jī)中CPU每執(zhí)行一條指令,都必須在統(tǒng)一的時鐘脈沖的控制下嚴(yán)格按時間節(jié)拍進(jìn)行,而這個時鐘脈沖是單片機(jī)控制中的時序電路發(fā)出的。CPU執(zhí)行一條指令的各個微操作所對應(yīng)時間順序稱為單片機(jī)的時序。MCS-51單片機(jī)芯片內(nèi)部有一個高增益反相放大器,用于構(gòu)成震蕩器,XTAL1為該放大器的輸入端,XTAL2為該放大器輸出端,但形成時鐘電路還需附加其他電路。 本設(shè)計系統(tǒng)采用內(nèi)部時鐘方式,利用單片機(jī)內(nèi)部的高增益反相放大器,外部電路簡,只需要一個晶振和 2個電容即可,如圖5所示: 圖5 時鐘電路
21、 電路中的器件選擇可以通過計算和實(shí)驗(yàn)確定,也可以參考一些典型電路的參數(shù),電路中,電容器C1和C2對震蕩頻率有微調(diào)作用,通常的取值范圍是3010pF,在這個系統(tǒng)中選擇了33pF;石英晶振選擇范圍最高可選24MHz,它決定了單片機(jī)電路產(chǎn)生的時鐘信號震蕩頻率,在本系統(tǒng)中選擇的是12MHz,因而時鐘信號的震蕩頻率為12MHz。 2.5 LED顯示系統(tǒng)設(shè)計 2.5.1 LED的基本結(jié)構(gòu) LED是發(fā)光二極管顯示器的縮寫。LED由于結(jié)構(gòu)簡單、價格便宜、與單片機(jī)接口方便等優(yōu)點(diǎn)而得到廣泛應(yīng)用。LED顯示器是由若干個發(fā)光二極管組成顯示字段的顯示器件。在單片機(jī)中使用最多的是七段數(shù)碼顯示器。LED七段數(shù)碼
22、顯示器由8個發(fā)光二極管組成顯示字段,其中7個長條形的發(fā)光二極管排列成“日”字形,另一個圓點(diǎn)形的發(fā)光二極管在顯示器的右下角作為顯示小數(shù)點(diǎn)用,其通過不同的組合可用來顯示各種數(shù)字。LED引腳排列如下圖6所示: 圖6 LED引腳排列 2.5.2 LED顯示器的選擇 在應(yīng)用系統(tǒng)中,設(shè)計要求不同,使用的LED顯示器的位數(shù)也不同,因此就生產(chǎn)了位數(shù),尺寸,型號不同的LED顯示器供選擇,在本設(shè)計中,選擇4位一體的數(shù)碼型LED顯示器,簡稱“4-LED”。本系統(tǒng)中前一位顯示電壓的整數(shù)位,即個位,后兩位顯示電壓的小數(shù)位。 4-LED顯示器引腳如圖7
23、所示,是一個共陰極接法的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個單獨(dú)的LED組成,每個LED的段輸出引腳在內(nèi)部都并聯(lián)后,引出到器件的外部。 圖7 4位LED引腳 對于這種結(jié)構(gòu)的LED顯示器,它的體積和結(jié)構(gòu)都符合設(shè)計要求,由于4位LED陰極的各段已經(jīng)在內(nèi)部連接在一起,所以必須使用動態(tài)掃描方式(將所有數(shù)碼管的段選線并聯(lián)在一起,用一個I/O接口控制)顯
24、示。 2.5.3 LED譯碼方式 譯碼方式是指由顯示字符轉(zhuǎn)換得到對應(yīng)的字段碼的方式,對于LED數(shù)碼管顯示器,通常的譯碼方式有硬件譯碼和軟件譯碼方式兩種。 硬件譯碼是指利用專門的硬件電路來實(shí)現(xiàn)顯示字符碼的轉(zhuǎn)換。 軟件譯碼就是編寫軟件譯碼程序,通過譯碼程序來得到要顯示的字符的字段碼,譯碼程序通常為查表程序。 本設(shè)計系統(tǒng)中為了簡化硬件線路設(shè)計,LED譯碼采用軟件編程來實(shí)現(xiàn)。由于本設(shè)計采用的是共陰極LED,其對應(yīng)的字符和字段碼如下表3所示: 表3 共陰極字段碼表 顯示字符 共陰極字段碼 0 3FH 1 06H 2 5BH
25、3 4FH 4 66H 5 6DH 6 7DH 7 07H 8 7FH 9 6FH 2.5.4 LED顯示器與單片機(jī)接口設(shè)計 由于單片機(jī)的并行口不能直接驅(qū)動LED顯示器,在一般情況下,必須采用專用的驅(qū)動電路芯片,使之產(chǎn)生足夠大的電流,顯示器才能正常工作。如果驅(qū)動電路能力差,即負(fù)載能力不夠時,顯示器亮度就低,而且驅(qū)動電路長期在超負(fù)荷下運(yùn)行容易損壞,LED顯示器的驅(qū)動電路設(shè)計是一個非常重要的問題。 為了簡化數(shù)字式直流電壓表的電路設(shè)計,在LED驅(qū)動電路的設(shè)計上,可以利用單片機(jī)P0口上外接的上拉電阻來實(shí)
26、現(xiàn),即將LED的A-G段顯示引腳和DP小數(shù)點(diǎn)顯示引腳并聯(lián)到P1口與上拉電阻之間,這樣,就可以加大P1口作為輸出口德驅(qū)動能力,使得LED能按照正常的亮度顯示出數(shù)字,如圖8所示: 圖8 LED與單片機(jī)接口間的設(shè)計 2.6 總體電路設(shè)計 經(jīng)過以上的設(shè)計過程,可設(shè)計出基于單片機(jī)的簡易數(shù)字直流電壓表硬件電路原理圖如圖9所示: 圖9 簡易數(shù)字電壓表電路圖 此電路的工作原理是:+5V模擬電壓信號通過變阻器VR1分壓后ADC0809的IN0通道進(jìn)入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低電平),經(jīng)過模/數(shù)轉(zhuǎn)換后,產(chǎn)生相應(yīng)的數(shù)字量經(jīng)
27、過其輸出通道D0-D7傳送給AT89C51芯片的P0口,AT89C51負(fù)責(zé)把接收到的數(shù)字量經(jīng)過數(shù)據(jù)處理,產(chǎn)生正確的7段數(shù)碼管的顯示段碼傳送給四位LED,同時它還通過其四位I/O口P3.0、P3.1、P3.2產(chǎn)生位選信號控制數(shù)碼管的亮滅。此外,AT89C51還控制ADC0809的工作。其中,單片機(jī)AT89C51通過定時器的中斷從P2.4口輸出方波,接到ADC0809的CLOCK,P2.6發(fā)正脈沖啟動A/D轉(zhuǎn)換,P2.5檢測A/D轉(zhuǎn)換是否完成,轉(zhuǎn)換完成后,P2.7置高從P0口讀取轉(zhuǎn)換結(jié)果送給LED顯示出來。 3 程序設(shè)計 3.1 程序設(shè)計總方案 根據(jù)模
28、塊的劃分原則,將該程序劃分初始化模塊,A/D轉(zhuǎn)換子程序和顯示子程序,這三個程序模塊構(gòu)成了整個系統(tǒng)軟件的主程序,如圖10所示: 圖10 數(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)換子程序 A/D轉(zhuǎn)換子程序用來控制對輸入的模塊電壓信號的采集測量,并將對應(yīng)的數(shù)值存入相應(yīng)的內(nèi)存單元,其轉(zhuǎn)換流程圖如圖11所示: 圖1
29、1 A/D轉(zhuǎn)換流程圖 3.2.3 顯示子程序 顯示子程序采用動態(tài)掃描實(shí)現(xiàn)四位數(shù)碼管的數(shù)值顯示,在采用動態(tài)掃描顯示方式時,要使得LED顯示的比較均勻,又有足夠的亮度,需要設(shè)置適當(dāng)?shù)膾呙桀l率,當(dāng)掃描頻率在70HZ左右時,能夠產(chǎn)生比較好的顯示效果,一般可以采用間隔10ms對LED進(jìn)行動態(tài)掃描一次,每一位LED的顯示時間為1ms。 在本設(shè)計中,為了簡化硬件設(shè)計,主要采用軟件定時的方式,即用定時器0溢出中斷功能實(shí)現(xiàn)11μs定時,通過軟件延時程序來實(shí)現(xiàn)5ms的延時。 3.3 軟件程序清單 程序清單見附錄A 4 仿真 4.1 軟件調(diào)試 軟件調(diào)試的
30、主要任務(wù)是排查錯誤,錯誤主要包括邏輯和功能錯誤,這些錯誤有些是顯性的,而有些是隱形的,可以通過仿真開發(fā)系統(tǒng)發(fā)現(xiàn)逐步改正。Proteus軟件可以對基于微控制器的設(shè)計連同所有的周圍電子器件一起仿真,用戶甚至可以實(shí)時采用諸如LED/LCD、鍵盤、RS232終端等動態(tài)外設(shè)模型來對設(shè)計進(jìn)行交互仿真。Proteus支持的微處理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80等等。Proteus可以完成單片機(jī)系統(tǒng)原理圖電路繪制、PCB設(shè)計,更為顯著點(diǎn)的特點(diǎn)是可以與u Visions3 IDE工具軟件結(jié)合進(jìn)行編程仿真調(diào)試。 本系統(tǒng)的調(diào)試主要以軟件為主,其中,系統(tǒng)電路圖的繪制和仿真我采用的是
31、Proteus軟件,而程序方面,采用的是匯編語言,用Keil軟件將程序?qū)懭雴纹瑱C(jī)。 4.2 顯示結(jié)果及誤差分析 4.2.1 顯示結(jié)果 (1)當(dāng)IN0口輸入電壓值為0V時,顯示結(jié)果如圖12所示,測量誤差為0V。 圖12 輸入電壓為0V時,LED的顯示結(jié)果 (2)當(dāng)IN0輸入電壓值為1.64V時,顯示結(jié)果如圖13所示。測量誤差為0.0V。 圖13 輸入電壓為1.64 V的顯示結(jié)果 (3) 當(dāng)IN0口輸入電壓值為3.74時,顯示結(jié)果如圖14所示。測量誤差為0.0V。 圖14 輸入電壓為3.74時,LED的顯示結(jié)果 4.2.2 誤差分析
32、 通過以上仿真測量結(jié)果可得到簡易數(shù)字電壓表與“標(biāo)準(zhǔn)”數(shù)字電壓表對比測試表,如下表3所示: 表3 簡易數(shù)字電壓表與“標(biāo)準(zhǔn)”數(shù)字電壓表對比測試表 標(biāo)準(zhǔn)電壓值/V 簡易電壓表測量值/V 絕對誤差 /V 0.00 0.00 0.00 0.50 0.51 0.01 1.00 1.00 0.00 1.64 1.64 0.00 2.00 2.00 0.00 2.50 2.50 0.00 3.00 3.00 0.00 3.74 3.74 0.00 4.00 4.00 0.00 4.99 5.00 0.01 由于單片機(jī)AT89C5
33、1為8位處理器,當(dāng)輸入電壓為5.00V時,ADC0809輸出數(shù)據(jù)值為255(FFH),因此單片機(jī)最高的數(shù)值分辨率為0.0196V(5/255)。這就決定了電壓表的最高分辨率只能到0.0196V,從上表可看到,測試電壓一般以0.01V的幅度變化。 從上表可以看出,簡易數(shù)字電壓表測得的值基本上比標(biāo)準(zhǔn)電壓值偏大0-0.01V,這可以通過校正ADC0809的基準(zhǔn)電壓來解決。因?yàn)樵撾妷罕碓O(shè)計時直接用5V的供電電源作為電壓,所以電壓可能有偏差。當(dāng)要測量大于5V的電壓時,可在輸入口使用分壓電阻,而程序中只要將計算程序的除數(shù)進(jìn)行調(diào)整就可以了。 結(jié)束語 將本設(shè)計的程序下
34、載到單片機(jī)中,通過測試,基本上完成了任務(wù)書的要求,并且搶答的精確度也比較高,有一使用價值和商業(yè)利用價值。本次設(shè)計的電壓表小巧玲瓏,攜帶方便,具有一定的使用價值。 致 謝 通過這次比較完整的設(shè)計,使我們擺脫了單純的理論知識學(xué)習(xí)狀態(tài),達(dá)到了理論與實(shí)踐的結(jié)合鍛煉了我的綜合運(yùn)用所學(xué)的專業(yè)基礎(chǔ)知識,解決實(shí)際設(shè)計問題的能力,同時,也提高了我們查閱文獻(xiàn)資料、設(shè)計手冊、設(shè)計規(guī)范以及電腦制圖等專業(yè)能力水平,而且通過整體的掌握對布局的取舍以及對細(xì)節(jié)的斟酌處理,都使我們能力得到了
35、鍛煉、經(jīng)驗(yàn)得到了豐富,抗壓能力以及耐力在不同程度上得到了提高,這是我們都想看到的也是我們進(jìn)行設(shè)計的目的所在。雖然這次設(shè)計內(nèi)容繁多、過程繁瑣但我們收獲很多,在這次設(shè)計過程中我們不僅對A/D轉(zhuǎn)換芯片ADC0809有了進(jìn)一步熟悉,隨著設(shè)計的不斷深入對它的工作原理、啟動設(shè)置、轉(zhuǎn)換結(jié)束判斷及輸出等都基本掌握,在和老師的溝通交流的過程中我們對設(shè)計有了新的認(rèn)識,并且對實(shí)物的連接與布局有了新的看法,對我們的專業(yè)有了進(jìn)一步的認(rèn)識。感謝凌云老師對本次課程設(shè)計的精心指導(dǎo),感謝眾多同學(xué)對我們的關(guān)心與幫助。讓我對學(xué)習(xí)單片機(jī)的有了很大的幫助。 參考文獻(xiàn) [1]馬忠梅,籍順心,張凱,馬巖.單片機(jī)的C
36、語言應(yīng)用程序設(shè)計[M].北京: 北京航空航天大學(xué)出版社,2006 Ma Zhongmei,J, Zhang Kai, MaYan. MCU C language program design [M] .beijing: Beijing aerospace university press, 2006 [2]李廣弟,朱月秀,冷祖祁.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版 社,2007 Li Guangdi, ZhuYuexiu, Leng Zuqi. Microcontroller [M] .beijing: Beijing university
37、 of aeronautics and press, 2007 [3]李光飛.單片機(jī)課程設(shè)計實(shí)例指導(dǎo)[M].北京:北京航空航天大學(xué)出版社, 2004.9 Li Guangfei. This course design example guide [M] .beijing: Beijing university of aeronautics and press, 2004.9 [4]邢增平.Protel 99 SE設(shè)計專家指導(dǎo)[M].北京:中國鐵道出版社,2004 Xing Zengping. Protel 99 SE design expert guidance
38、 [M] .beijing: China railway publishing house, 2004 附錄A 程序清單 ORG 0000H //程序開始地址 LJMP START //跳轉(zhuǎn)到開始程序 ORG 000BH //定時計數(shù)器0中斷向量 LJMP NT
39、 //跳到子程序 START: MOV A, #00H //初始化 SETB P3.7 //EOC值1 CLR P3.0 //位選信號 CLR P3.1 CLR P3.2 MOV P2, A //P2口置0 MOV A, #0FFH
40、 //P0,P1口置1 MOV P0, A MOV P1, A MAIN: MOV SP, #60H //開辟堆棧 MOV IE, #82H //選擇中斷方式 MOV TMOD, #02H //選擇工作方式 MOV P1, #0CH
41、 //亮P SETB P3.0 LOOP103: SETB P2.7 //判斷是否開始 MOV A, P2 JB ACC.7, LOOP103 //判斷轉(zhuǎn)換是否結(jié)束 MOV TH0, #0FFH //賦初值 MOV TL0, #0FFH SETB TR0
42、 //開啟計數(shù)器 MAIN2: LCALL ADZH //長調(diào)用AD轉(zhuǎn)換 LCALL SMZH //長調(diào)用數(shù)模轉(zhuǎn)換 LCALL SMXS //長調(diào)用數(shù)模顯示 LJMP MAIN2 //跳至MAIN2 ADZH: MOV A, #00H //AD轉(zhuǎn)換 MOV P2
43、, A MOV R0, #70H AJMP ADCY WAIT: JB P3.7, DATASAVE //判斷采樣是否結(jié)束 AJMP WAIT //跳回等待 ADCY: SETB P2.3 //AD采樣單元 SETB P2.4 //上升沿,清除數(shù)據(jù) NOP
44、 //延遲 NOP //延遲 CLR P2.3 //產(chǎn)生下降沿 開始工作 CLR P2.4 NOP //延遲 NOP AJMP WAIT //跳回單元 DATASAVE: SETB P2.5
45、 //數(shù)據(jù)傳輸單元 MOV P0 , #0FFH //掃面前置1 MOV A, P0 //掃描P0口狀態(tài) MOV @R0, A //將值送至R0 RET //返回主程序 SMZH: MOV A, @R0 //數(shù)值轉(zhuǎn)換子程序 MOV B, #51
46、 //對輸入數(shù)據(jù)進(jìn)行處理 DIV AB //掃描的數(shù)除以51 MOV 78H, A //商存放到78H這個單元 MOV A, B //余數(shù)存放到A CLR F0 //清楚用戶自定義標(biāo)識 SUBB A, #1AH MOV F0, C //C位
47、放到F0中 MOV A, #10 //乘以10余數(shù)變整數(shù) MUL AB MOV B, #51 //對十分位數(shù)進(jìn)行處理 DIV AB JB F0, LOOP1 //判斷是否借位 ADD A, #5 LOOP1: MOV 79H, A //百分位顯示 MOV A,
48、 B //對百分位進(jìn)行顯示 CLR F0 //清除F0 SUBB A, #1AH //A減去25 MOV F0, C //標(biāo)志位存放到F0 MOV A, #10 MUL AB MOV B, #51 DIV AB JB F0, LOOP2
49、 ADD A, #5 LOOP2: MOV 7AH, A RET SMXS: MOV R0, #78H //數(shù)碼顯示 LCALL PLAY //長調(diào)用PLAY子程序 SETB P3.0 //位選 CLR P1.7 //小數(shù)點(diǎn) MOV R7, #0FFH
50、 //延時顯示 LOOP: DJNZ R7, LOOP //延時等待 CLR P3.0 INC R0 //顯示十分位 LCALL PLAY SETB P3.1 MOV R7, #0FFH //計數(shù)初值 LOOP3: DJNZ R7, LOOP3 //延時顯示 CLR P3.1
51、 //給低電平 INC R0 //顯示百分位 LCALL PLAY //調(diào)用顯示子程序 SETB P3.2 //給高電平 MOV R7, #0FFH LOOP4: DJNZ R7, LOOP4 //延時等待 CLR P3.2 //給低電平 RET
52、 //返回 PLAY: MOV A, @R0 //查表法數(shù)碼管顯示 MOV DPTR, #TABLE //表格放入DPTR MOVC A, @A+DPTR //查表 MOV P1, A //顯示的數(shù)從P1口輸出 RET //返回主程序 NT: CPL P2.6
53、 //脈沖信號取反 RETI //返回 TABLE: DB 0C0H,0F9H,0A4H,0B0H //段碼表 DB 99H,92H,82H,0F8H DB 80H,90H,0CH END 25 附錄B 實(shí)物圖 附錄C PCB圖 圖C1 PCB底層圖 圖C2 PCB頂層圖 圖C3 PCB元器件分布圖 附錄D 電路原理圖 附錄E 原器件清單 元器件清單 規(guī)格 數(shù)量 AT89C51 1 ADC0809 1 電阻 10k 1 電阻 480k 8 瓷片電容 103u 2 電位器 10k 1 四腳開關(guān) 2 底座 40腳 1 數(shù)碼管 1 USB線接口 1 晶振 12MHz 1 底座 28腳 1 雙面板 1 極性電容 1uF 1
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。