2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  單片機原理及系統(tǒng)課程設計</p><p>  專 業(yè): 電氣工程及其自動化 </p><p>  班 級: 電氣1001班 </p><p>  姓 名: </p><p>  學 號: </p>

2、<p>  指導教師: </p><p>  2013 年 3 月 14 日</p><p>  基于單片機的簡易數(shù)字電壓表的設計</p><p><b>  摘 要</b></p><p>  本文介紹了一種基于單片機的簡易數(shù)字電壓表的設計。該設計主要由三個模塊組成:

3、A/D轉(zhuǎn)換模塊,數(shù)據(jù)處理模塊及顯示模塊。A/D轉(zhuǎn)換主要由芯片ADC0808來完成,它負責把采集到的模擬量轉(zhuǎn)換為相應的數(shù)字量在傳送到數(shù)據(jù)處理模塊。數(shù)據(jù)處理則由芯片AT89C51來完成,其負責把ADC0808傳送來的數(shù)字量經(jīng)過一定的數(shù)據(jù)處理,產(chǎn)生相應的顯示碼送到顯示模塊進行顯示;此外,它還控制著ADC0808芯片工作。</p><p>  該系統(tǒng)的數(shù)字電壓表電路簡單,所用的元件較少,成本低,且測量精度和可靠性較高。此

4、數(shù)字電壓表可以測量0-5V的1路模擬直流輸入電壓值,并通過一個四位一體的7段數(shù)碼管顯示出來。</p><p>  關(guān)鍵詞:單片機;數(shù)字電壓表;A/D轉(zhuǎn)換</p><p>  Design of Simple Digital Voltmeter Based on Single-chip Microcontroller </p><p><b>  Abst

5、ract </b></p><p>  This paper which introduces a kind of simple digital voltmeter is based on single-chip microcontroller design. The circuit of the voltage meter is mainly consisted of three mould pie

6、ces: A/D converting mould piece, A/D converting is mainly completed by the ADC0808, it converts the collected analog data into the digital data and transmits the outcome to the manifestation controlling mould piece. Data

7、 processing is mainly completed by the AT89C51 chip, it processes the data produced by the ADC0808</p><p>  The voltmeter features in simple electrical circuit, lower use of elements, low cost, moreover, its

8、 measuring precision and reliability. The voltmeter is capable of measuring voltage inputs from 1 route ranging from 0 to 5 volt, and displaying the measurements though a digital code tube of 7 pieces of LED.</p>

9、<p>  Keywords :Single-chip microcontroller,Digital voltmeter,A/D converter</p><p>  1、引言 </p><p>  數(shù)字電壓表,簡稱D

10、VM,它是采用數(shù)字化測量技術(shù),把連續(xù)的模擬量轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。與此同時,由DVM擴展而成的各種通用及專用數(shù)字儀器儀表,也把電量及非電量測量技術(shù)提到了一個更高的水平。本設計主要用A/D 轉(zhuǎn)換器以及由它們構(gòu)成的基于單片機的數(shù)字電壓表的工作原理。目前,由各種單片A/D 轉(zhuǎn)換器構(gòu)成的數(shù)字電壓表,已被廣泛用于電子及電工測量、工業(yè)自動化儀表、自動測試系統(tǒng)等智能化測量領(lǐng)域,示出強大的生命力理。</p><

11、;p>  本設計采用AT89C51單片機的一種電壓測量電路,該電路采用ADC0808。本文介紹一種基于A/D轉(zhuǎn)換電路,測量范圍直流 0-5V的4路輸入電壓值,并在四位LED數(shù)碼管上顯示或單路選擇顯示。測量最小分辨率為0.019V,測量誤差約為正負0.02V。</p><p>  本設計以AT89C51系列單片機為核心器件,組成一個簡單的直流數(shù)字電壓。ADC0808采用1路模擬量輸入,能夠測量0-5V之間的直

12、流電壓值。電壓顯示屏采用4位一體的LED數(shù)碼管顯示,能夠顯示三位小數(shù)。設計盡量使用較少的元器件。 </p><p><b>  2、設計方案及原理</b></p><p><b>  2.1、設計方案</b></p><p>  硬件電路設計由4個部分組成:A/D轉(zhuǎn)換電路、AT89C51單片機系統(tǒng)、LED顯示系統(tǒng)以及測量

13、電壓輸入電路。硬件電路設計框圖如圖1所示。</p><p>  圖1 數(shù)字電壓表系統(tǒng)硬件設計框圖</p><p>  2.2、數(shù)字電壓表設計原理</p><p>  利用A/D轉(zhuǎn)換電路將待測的模擬信號轉(zhuǎn)換成數(shù)字信號,通過相應換算后將測試結(jié)果以數(shù)字形式顯示出來。在高精度數(shù)字電壓表中,常采用由積分式和比較式相結(jié)合起來的復合式A/D轉(zhuǎn)換器。本設計以AT89C51單片機為

14、核心,以逐次比較型A/D轉(zhuǎn)換器ADC0808、LED四位數(shù)碼管為主體。</p><p><b>  3、硬件設計</b></p><p>  3.1、AT89C51的功能介紹</p><p>  AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲器的低電壓、高性能CMOS8位微處理器,俗稱單片機。AT89C51是一種帶2K字節(jié)閃存可編程可擦

15、除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。外形及引腳排如圖2所示。 </p><p&

16、gt;  圖2 AT89C51芯片模型</p><p>  3.1.1、AT89C51芯片的各引腳功能</p><p>  P0口:這組引腳共有8條,P0.0為最低位。這8個引腳有兩種不同的功能,分別適用于不同的情況,第一種情況是AT89C51不帶外存儲器,P0口可以為通用I/O口使用,P0.0-P0.7用于傳送CPU的輸入/輸出數(shù)據(jù),這時輸出數(shù)據(jù)可以得到鎖存,不需要外接專用鎖存器,輸入

17、數(shù)據(jù)可以得到緩沖,增加了數(shù)據(jù)輸入的可靠性。</p><p>  P1口:這8個引腳和P0口的8個引腳類似,P1.7為最高位,P1.0為最低位,當P1口作為通用I/O口使用時,P1.0-P1.7的功能和P0口的第一功能相同,也用于傳送用戶的輸入和輸出數(shù)據(jù)。</p><p>  P2口:這組引腳的第一功能與上述兩組引腳的第一功能相同即它可以作為通用I/O口使用,它的第一功能和P0口引腳的第二功

18、能相配合,用于輸出片外存儲器的高8位地址,共同選中片外存儲器單元,但并不是像P0口那樣傳送存儲器的讀/寫數(shù)據(jù)。</p><p>  P3口:這組引腳的第一功能和其余三個端口的第一功能相同,第二功能為控制功能,每個引腳并不完全相同,</p><p>  Vcc為+5V電源線,Vss接地。</p><p>  ALE:地址鎖存允許線,配合P0口的第二功能使用,在訪問外部

19、存儲器時,AT89C51的CPU在P0.0-P0.7引腳線去傳送隨后而來的片外存儲器讀/寫數(shù)據(jù)。在不訪問片外存儲器時,AT89C51自動在ALE線上輸出頻率為1/6震蕩器頻率的脈沖序列。該脈沖序列可以作為外部時鐘源或定時脈沖使用。</p><p>  /EA:片外存儲器訪問選擇線,可以控制AT89C51使用片內(nèi)ROM或使用片外ROM,若/EA=1,則允許使用片內(nèi)ROM, 若/EA=0,則只使用片外ROM。<

20、/p><p>  /PSEN:片外ROM的選通線,在訪問片外ROM時,AT89C51自動在/PSEN線上產(chǎn)生一個負脈沖,作為片外ROM芯片的讀選通信號。</p><p>  RST:復位線,可以使AT89C51處于復位(即初始化)工作狀態(tài)。通常AT89C51復位有自動上電復位和人工按鍵復位兩種。</p><p>  XTAL1和XTAL2:片內(nèi)震蕩電路輸入線,這兩個端子

21、用來外接石英晶體和微調(diào)電容,即用來連接AT89C51片內(nèi)OSC(震蕩器)的定時反饋回路。</p><p>  Vcc為+5V電源線,Vss接地。</p><p>  3.2、ADC0808的引腳及功能介紹</p><p>  ADC0808是一種典型的A/D轉(zhuǎn)換器。ADC 0808和ADC 0809除精度略有差別外(前者精度為8位、后者精度為7位),其余各方面完全相

22、同。它們都是CMOS器件,不僅包括一個8位的逐次逼近型的ADC部分,而且還提供一個8通道的模擬多路開關(guān)和通道尋址邏輯,因而又把它作為簡單的“數(shù)據(jù)采集系統(tǒng)”。利用它可直接輸入8個單端的模擬信號分時進行A/D轉(zhuǎn)換,在多點巡回檢測和過程控制、運動控制中應用十分廣泛。它是由8位A/D轉(zhuǎn)換器,一個8路模擬量開關(guān),8位模擬量地址鎖存譯碼器和一個三態(tài)數(shù)據(jù)輸出鎖存器組成;+5V單電源供電,轉(zhuǎn)化時間在100us左右;內(nèi)部沒有時鐘電路,故需外部提供時鐘信號

23、。芯片模型如圖3所示。</p><p>  圖3 ADC0808芯片模型</p><p>  3.2.1、引腳簡介 </p><p>  (1)IN0~IN7:8路模擬量輸入端。</p><p>  (2)D0~D7:8位數(shù)字量輸出端口。</p><p>  (3)START:A/D轉(zhuǎn)換啟動信號輸入端。</p&

24、gt;<p>  (4)ALE:地址鎖存允許信號,高電平有效。</p><p>  (5)EOC:輸出允許控制信號,高電平有效。</p><p>  (6)OE:輸出允許控制信號,高電平有效。</p><p>  (7)CLK:時鐘信號輸入端。</p><p>  (8)A、B、C:轉(zhuǎn)換通道地址,控制8路模擬通道的切換。A、B、

25、C分別與地址線或數(shù)據(jù)線相連,三位編碼對應8個通道地址端口,A、B、C=000~111分別對應IN0~IN7通道的地址端口。</p><p>  3.2.2、ADC0808的轉(zhuǎn)換原理</p><p>  ADC0808采用逐次比較的方法完成A/D轉(zhuǎn)換,由單一的+5V電源供電。片內(nèi)帶有鎖存功能的8路選1的模擬開關(guān),由A、B、C的編碼來決定所選的通道。ADC0808完成一次轉(zhuǎn)換需100μs左右,

26、它具有輸出TTL三態(tài)鎖存緩沖器,可直接連接到AT89C51的數(shù)據(jù)總線上。通過適當?shù)耐饨与娐?,ADC0808可對0~5V的模擬信號進行轉(zhuǎn)換。</p><p>  3.3、LED顯示器的選擇</p><p>  在應用系統(tǒng)中,設計要求不同,使用的LED顯示器的位數(shù)也不同,因此就生產(chǎn)了位數(shù),尺寸,型號不同的LED顯示器供選擇,在本設計中,選擇4位一體的數(shù)碼型LED顯示器。本系統(tǒng)中前一位顯示電壓的

27、整數(shù)位,即個位,后兩位顯示電壓的小數(shù)位。</p><p>  4-LED顯示器引腳如圖4所示,是一個共陰極接法的4位LED數(shù)碼顯示管,其中a,b,c,e,f,g為4位LED各段的公共輸出端,1、2、3、4分別是每一位的位數(shù)選端,dp是小數(shù)點引出端,4位一體LED數(shù)碼顯示管的內(nèi)部結(jié)構(gòu)是由4個單獨的LED組成,每個LED的段輸出引腳在內(nèi)部都并聯(lián)后,引出到器件的外部。</p><p>  對于這

28、種結(jié)構(gòu)的LED顯示器,它的體積和結(jié)構(gòu)都符合設計要求,由于4位LED陰極的各段已經(jīng)在內(nèi)部連接在一起,所以必須使用動態(tài)掃描方式顯示。</p><p>  圖4 4位LED引腳</p><p>  3.4、LED顯示器與單片機接口設計</p><p>  由于單片機的并行口不能直接驅(qū)動LED顯示器,所以,在一般情況下,必須采用專用的驅(qū)動電路芯片,使之產(chǎn)生足夠大的電流,顯

29、示器才能正常工作。如果驅(qū)動電路能力差,即負載能力不夠時,顯示器亮度就低,而且驅(qū)動電路長期在超負荷下運行容易損壞,因此,LED顯示器的驅(qū)動電路設計是一個非常重要的問題。</p><p>  為了簡化數(shù)字式直流電壓表的電路設計,在LED驅(qū)動電路的設計上,可以利用單片機P0口上外接的上拉電阻來實現(xiàn),即將LED的A-G段顯示引腳和DP小數(shù)點顯示引腳并聯(lián)到P0口與上拉電阻之間,這樣,就可以加大P0口作為輸出口的驅(qū)動能力,使

30、得LED能按照正常的亮度顯示出數(shù)字。</p><p>  軟件設計 </p><p>  主程序的內(nèi)容包括:起始地址、中斷服務程序的起始地址、有關(guān)內(nèi)存單元及相關(guān)部件的初始化和一些子程序的調(diào)用等。根據(jù)設計要求,設計出如圖5所示的主程序流程圖。</p><p>  A/D轉(zhuǎn)換子程序設計:模數(shù)轉(zhuǎn)換采用逐次比較的方法完成A/D轉(zhuǎn)換,由單一的+5V

31、電源供電。片內(nèi)帶有鎖存功能的8路選1的模擬開關(guān),由A、B、C的編碼來決定所選的通道。A/D轉(zhuǎn)換程序的功能是采集數(shù)據(jù),當系統(tǒng)置好后,當輸入為高電平則轉(zhuǎn)換完成,將轉(zhuǎn)換的數(shù)值顯示輸出。若輸入為低電平,則繼續(xù)掃描。程序流程圖如圖6所示。</p><p>  圖5 主程序流程圖</p><p>  圖6 A/D轉(zhuǎn)換流程圖</p><p>  4.1、顯示子程序

32、 </p><p>  顯示子程序采用動態(tài)掃描實現(xiàn)四位數(shù)碼管的數(shù)值顯示,在采用動態(tài)掃描顯示方式時,要使得LED顯

33、示的比較均勻,又有足夠的亮度,需要設置適當?shù)膾呙桀l率,當掃描頻率在70HZ左右時,能夠產(chǎn)生比較好的顯示效果,一般可以采用間隔10ms對LED進行動態(tài)掃描一次,每一位LED的顯示時間為1ms。</p><p>  在本設計中,為了簡化硬件設計,使結(jié)構(gòu)圖簡單、明確,主要采用軟件定時的方式,即用定時器0溢出中斷功能實現(xiàn)11μs定時,通過軟件延時程序來實現(xiàn)5ms的延時。</p><p>  4.2

34、、總體電路設計</p><p>  經(jīng)過以上的設計過程,可設計出基于單片機的簡易數(shù)字直流電壓表硬件電路原理圖如圖7所示。</p><p>  圖7 硬件電路總圖</p><p>  5、系統(tǒng)仿真及其調(diào)試</p><p><b>  5.1、顯示結(jié)果</b></p><p>  (1)當IN0口輸

35、入電壓值為1.50V時,顯示結(jié)果如圖8所示,測量誤差為0.009V。</p><p>  圖8 1.5V顯示結(jié)果 圖9 5.0V顯示結(jié)果</p><p>  (2)當IN0口輸入電壓值為5.00V時,顯示結(jié)果如圖9。測量誤差為0.002V。</p><p><b>  5.2、誤差分析</b>&l

36、t;/p><p>  由于單片機AT89C51為8位處理器,當輸入電壓為5.00V時,ADC0808輸出數(shù)據(jù)值為255,因此單片機最高的數(shù)值分辨率為0.0196V(5/255)。這就決定了電壓表的最高分辨率只能到0.0196V,從上表可看到,測試電壓一般以0.01V的幅度變化。</p><p>  從仿真可以看出,簡易數(shù)字電壓表測得的值基本上與標準電壓值偏離0-0.01V,這可以通過校正ADC

37、0808的基準電壓來解決。因為該電壓表設計時直接用5V的供電電源作為電壓,所以電壓可能有偏差。若要測量大于5V的電壓時,可在輸入口使用分壓電阻,而程序中只要將計算程序的除數(shù)進行調(diào)整就可以進行其他電壓值得測量了。</p><p><b>  6、總結(jié)</b></p><p>  經(jīng)過一段時間的努力,課程設計基于單片機的簡易數(shù)字電壓表基本完成。但設計中還是有許多的不做之

38、處。這次是我第一次設計電路,并用Proteus實現(xiàn)了仿真。在這過程中,我對電路設計,單片機的原理和使用等都有了新的認識。通過這次設計,我學會了Proteus和Keil軟件的使用方法,掌握了從系統(tǒng)的需要、方案的設計、原理圖的設計和電路圖的仿真的設計流程,積累了不少經(jīng)驗。</p><p>  通過本次設計,我對單片機這門課有了進一步的了解。無論是在硬件連接方面還是在軟件編程方面。本次設計采用了AT89C51單片機芯片

39、,與以往的單片機相比增加了許多新的功能,使其功能更為完善,應用領(lǐng)域也更為廣泛。設計中還用到了模/數(shù)轉(zhuǎn)換芯片ADC0808,以前在學單片機課程時只是對其理論知識有了初步的理解。通過這次設計,對它的工作原理有了更深的理解。在調(diào)試過程中遇到很多問題,硬件上的理論知識學得不夠扎實,對電路的仿真方面也不夠熟練。在以后的實踐中,我將繼續(xù)努力學習電路設計方面的理論知識,并理論聯(lián)系實際,爭取在電路設計方面能有所提升。</p><p&

40、gt;<b>  參考文獻</b></p><p>  [1]王思明,張金敏.單片機原理及應用系統(tǒng)設計[M].北京:科學出版社,2012.</p><p>  [2]李華,王思明.單片機原理及應用[M].蘭州:蘭州大學出版社,2001</p><p>  [3]唐穎,任條娟.單片機原理與應用及C51程序設計[M].北京:北京大學出版社,2008

41、 </p><p>  [4]謝維成,楊加國.單片機原理與應用及C51程序設計實例[M].北京:電子工業(yè)出版社,2006 </p><p>  [5]宋鳳娟,孫軍,李國忠.基于89C51單片機的數(shù)字電壓表設計[J

42、].上海:工業(yè)控制計算機,2007</p><p><b>  附錄</b></p><p><b>  源程序代碼</b></p><p>  #include<reg51.h></p><p>  #define uchar unsigned char#define uint un

43、signed int</p><p>  #define AD_data P3 </p><p>  //AD0808 數(shù)據(jù)輸出端#define LED_port P0 //數(shù)碼管段#define LED_pos P1 //數(shù)碼管位</p><p>  sbit START=P2^5;sbit O E=P2^6;sbit EOC=P

44、2^7; sbit ALE=P2^2;</p><p>  uint DCtemp=0; //電壓臨時數(shù)據(jù)</p><p>  uchar code LED_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar code pos[4]={0x01,0x02,0x04,0x08};function

45、: input: output:explain: 延時函數(shù),void Delay(uchar t) //延時函數(shù) { uchar i,j,k; for(i=0;i<t;i++) for(j=0;j<20;j++) for(k=0;k<20;k++) ;}function: input: output: //采集到的數(shù)值explain: //AD0808控

46、制,實現(xiàn)模數(shù)轉(zhuǎn)換uchar AD_get(){ uchar DCdata; START=0; ALE=1; </p><p>  //因為模擬輸入只采用一路,地址段直 </p><p>  接接地,使用IN0作為輸入端 START=1; START=0; ALE=0; while(EOC==0) ; OE=1; DCdata=AD_dat

47、a; OE=0; Delay(10); return DCdata;}function: input: output:explain: </p><p>  //將ADC0808讀取數(shù)值轉(zhuǎn)化為電壓值(擴大了100倍)void AD_shift(uchar DCdata){ uchar i; float DC=0; for(i=0;i<8;i++) { if(DCdata&a

48、mp;1<<i) { DC+=(1<<i)*19.6; } } DCtemp=(int)DC; }function: shift input: output:explain: </p><p>  //將電壓值的每一位放到數(shù)組中void value_shift(uchar value[]){ value[0]=DCtemp/1000; v

49、alue[1]=DCtemp/100%10; value[2]=DCtemp/10%10; value[3]=DCtemp%10;}function: display input: output:explain: //數(shù)碼管顯示void Display(uchar value[]){ uchar i; for(i=0;i<4;i++) { LED_pos=pos[i];

50、 //位控制 if(i==0) LED_port=LED_seg[value[i]]+0x80; //段碼 </p><p>  input: output:explain: void main() else LED_port=LED_seg[value[i]]; Delay(1</p><p>  } }function:<

51、/p><p>  { uchar value[4]; </p><p>  while(1) { AD_shift(AD_get()); value_shift(value); Display(value); }</p><p><b>  }</b></p><p>  input: out

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論