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

下載本文檔

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

文檔簡介

1、<p>  數(shù)字電壓表的設(shè)計與仿真</p><p>  摘要:本文介紹的是數(shù)字電壓表的發(fā)展背景和利用單片機,A/D轉(zhuǎn)換芯片結(jié)合的方法設(shè)計一個交直流數(shù)字電壓表。它的具體功能是:最高量程為500V,分三個檔位量程,即5V,50V,500V,可以通過調(diào)檔開關(guān)來實現(xiàn)各個檔位。當測得電壓的數(shù)值小于1V時,系統(tǒng)會自動的將電壓數(shù)值轉(zhuǎn)換為以mV為電壓單位的電壓值。并且通過按鍵的方法能夠測得后五秒的平均電壓值。同時它也可

2、以用于交流電壓的測量,勝任一般的電壓測量工作。</p><p>  關(guān)鍵字:數(shù)字電壓表;單片機;A/D轉(zhuǎn)換 </p><p>  Digital voltmeter design and simulation</p><p>  Abstract:This article describes the background of the development of

3、 the digital voltmeter and designed microcontroller, a / d conversion chips combined with a DC digital voltmeter. Its specific functions are: the maximum range for 200v, three-stall range, that is, 2v, 20v, 200v, can dow

4、nshift switch to achieve the various stalls. When the measured voltage is less than 1v, the system automatically the voltage value converted to a voltage value mv voltage units. Five seconds and the key method to</p&g

5、t;<p>  Key words: Digital voltmeter ;Single-chip computer ;A/D converter</p><p><b>  目 錄</b></p><p>  1 數(shù)字電壓表簡介1</p><p><b>  2 設(shè)計方案3</b></p>

6、;<p>  2.1 由數(shù)字電路及芯片構(gòu)建3</p><p>  2.2 由單片機系統(tǒng)及A/D轉(zhuǎn)換芯片構(gòu)建3</p><p><b>  3 元件的選取5</b></p><p>  3.1 單片機簡介及本設(shè)計單片機的選擇5</p><p>  3.1.1 常用單片機的特點比較及本設(shè)計單片機的

7、選擇5</p><p>  3.1.2 本設(shè)計使用的單片機的簡介5</p><p>  3.2各種顯示器件的介紹和選擇7</p><p>  3.2.1 常用顯示器件簡介7</p><p>  3.2.2 1602液晶的參數(shù)資料7</p><p>  3.3 模數(shù)(A/D)轉(zhuǎn)換芯片的選擇10</p

8、><p>  3.3.1常用的A/D芯片簡介10</p><p>  3.3.2 模數(shù)(A/D)芯片TLC2543的資料11</p><p>  4. 總體設(shè)計14</p><p>  4.1 技術(shù)要求14</p><p>  4.2硬件電路系統(tǒng)模塊的設(shè)計15</p><p>  

9、4.3 系統(tǒng)軟件的設(shè)計19</p><p>  4.3.1 匯編語言和C語言的特點及選擇19</p><p>  4.3.2 主程序設(shè)計19</p><p>  5 系統(tǒng)的調(diào)試30</p><p><b>  6 仿真結(jié)果31</b></p><p><b>  7 總結(jié)

10、31</b></p><p><b>  參考文獻32</b></p><p><b>  致謝33</b></p><p><b>  1 數(shù)字電壓表簡介</b></p><p>  數(shù)字電壓表出現(xiàn)在50年代初,60年代末發(fā)起來的電壓測量儀表,簡稱DVM,它采

11、用的是數(shù)字化測量技術(shù),把連續(xù)的模擬量,也就是連續(xù)的電壓值轉(zhuǎn)變?yōu)椴贿B續(xù)的數(shù)字量,加以數(shù)字處理然后再通過顯示器件顯示。這種電子測量的儀表之所以出現(xiàn),一方面是由于電子計算機的應(yīng)用逐漸推廣到系統(tǒng)的自動控制的領(lǐng)域,提出了將各種被觀察量或被控制量轉(zhuǎn)換成數(shù)碼的要求,即為了實時控制及數(shù)據(jù)處理的需要[3],也是電子計算機的發(fā)展,帶動了脈沖數(shù)字電路技術(shù)的進步,為數(shù)字化儀表的出現(xiàn)提供了條件。所以,數(shù)字化測量儀表的產(chǎn)生與發(fā)展與電子計算機的發(fā)展是密切相關(guān)的;同時

12、,為革新電子測量中的繁瑣和陳舊方式也催促了它的飛速發(fā)展,如今,它又成為向智能化儀表發(fā)展的必要橋梁。</p><p>  如今,數(shù)字電壓表已絕大部分已取代了傳統(tǒng)的模擬指針式電壓表。因為傳統(tǒng)的模擬指針式電壓表功能單一,精度低,讀數(shù)的時候也非常不方便,很容易出錯。而采用單片機的數(shù)字電壓表由于測量精度高,速度快,讀數(shù)時也非常的方便,抗干擾能力強,可擴展性強等優(yōu)點已被廣泛的應(yīng)用于電子及電工的測量,工業(yè)自動化儀表,自動測試系

13、統(tǒng)等智能化測量領(lǐng)域[7]。顯示出強大的生命力。</p><p>  數(shù)字電壓表最初是伺服步進電子管比較式,其優(yōu)點是準確度比較高,但是采樣速度慢,重量達幾十公斤,體積大。繼之出現(xiàn)了斜坡式電壓表,它的速度方面稍有提高,但是準確度低,穩(wěn)定性差,再后來出現(xiàn)了比較式儀表改進逐次漸近式結(jié)構(gòu),它不僅保持了比較式準確度高的優(yōu)點,而且速度也有了很大的提高,但它有一缺點是抗干擾能力差,很容易受到外界各種因素的影響。隨后,在斜波式的基

14、礎(chǔ)上雙引伸出階梯波式,它的唯一的進步是成本降低了,可是準確寬,速以及抗干擾能力都未能提高。而現(xiàn)在,數(shù)字電壓表的發(fā)展已經(jīng)是非常的成熟,就原理來講,它從原來的一、二種已發(fā)展到多種,在功能上講,則測單一參數(shù)發(fā)展到能測多種參數(shù);從制作元件來看,發(fā)展到了集成電路,準確度已經(jīng)有了很大的提高,精度高達1NV;讀數(shù)每秒幾萬次,而相對以前,它的價格也有了降低了很多[1]。</p><p>  目前實現(xiàn)電壓數(shù)字化測量的方法仍然模-數(shù)

15、(A/D)轉(zhuǎn)換的方法[8]。而數(shù)字電壓表種類繁多,型號新異,目前國際仍未有統(tǒng)一的分類方法。而常用的分類方法有如下幾種[11]:</p><p>  按用途來分:有直流數(shù)字電壓表,交、直流數(shù)字電壓表,交直流萬用表等。</p><p>  按顯示位數(shù)來分:有4位,5位,6位,7位,8位等。</p><p>  按測量速度來分:有低準確度,中準確度,高準確度等。</

16、p><p>  按測量速度來分:有低速,中速,高速,超高速等。</p><p>  但在日常生活中,數(shù)字電壓表一般是按照原理不同進行分類的,目前大致分為以下幾類:比較式,電壓——時間變換式,積分式等。</p><p>  在電量的測量中,電壓、電流和頻率是最基本的三個被測量。其中,電壓量的測量最為經(jīng)常。而且隨著電子技術(shù)的發(fā)展,更是經(jīng)常需要測量高精度的電壓,所以數(shù)字電壓表

17、就成為一種必不可少的測量儀器。另外,由于數(shù)字式儀器具有讀數(shù)準確方便、精度高、誤差小、靈敏度高和分辨率高、測量速度快等特點而倍受用戶青睞,數(shù)字式電壓表就是基于這種需求而發(fā)展起來的,是一種必不可少的電子測量儀表[15]。</p><p><b>  2 設(shè)計方案</b></p><p>  設(shè)計數(shù)字電壓表有多種的設(shè)計方法,方案是多種多樣的,由于大規(guī)模集成電路數(shù)字芯片的高速

18、發(fā)展,各種數(shù)字芯片品種多樣,導致對模擬數(shù)據(jù)的采集部分的不一致性,進而又使對數(shù)據(jù)的處理及顯示的方式的多樣性。又由于在現(xiàn)實的工作生活中,電壓表的測量測程范圍是比較大的,所以必須要對輸入電壓作分壓處理,而各個數(shù)據(jù)處理芯片的處理電壓范圍不同,則各種方案的分段也不同。下面介紹兩種數(shù)字電壓表的設(shè)計方案。</p><p>  2.1 由數(shù)字電路及芯片構(gòu)建 </p><p>  這種設(shè)計方案是由模擬電路與

19、數(shù)字電路兩大部分組成,模擬部分包括輸入放大器、A/D轉(zhuǎn)換器和基準電壓源;數(shù)字部分包括計數(shù)器、譯碼器、邏輯控制器、振蕩器和顯示器。其中,A/D轉(zhuǎn)換器是它的核心器件,它將輸入的模擬量轉(zhuǎn)換成數(shù)字量。模擬電路和數(shù)字電路是相互聯(lián)系的,由邏輯控制電路產(chǎn)生控制信號,按規(guī)定的時序?qū)/D轉(zhuǎn)換器中個組模擬開關(guān)接通或斷開,保證A/D轉(zhuǎn)換正常進行。A/D轉(zhuǎn)換結(jié)果通過計數(shù)譯碼電路變換成段碼,最后驅(qū)動顯示器顯示出相應(yīng)的數(shù)值。此方案設(shè)計其優(yōu)點是,設(shè)計成本低,能夠滿

20、足一般的電壓測量。但設(shè)計不靈活,都是采用純硬件電路。很難將其在原有的基礎(chǔ)上進行擴展。</p><p>  2.2 由單片機系統(tǒng)及A/D轉(zhuǎn)換芯片構(gòu)建</p><p>  這種方案是利用單片機系統(tǒng)與模數(shù)轉(zhuǎn)換芯片、顯示模塊等的結(jié)合構(gòu)建數(shù)字電壓表。由于單片機的發(fā)展已經(jīng)成熟,利用單片機系統(tǒng)的軟硬件結(jié)合,可以組裝出許多的應(yīng)用電路來。此方案的原理是模數(shù)(A/D)轉(zhuǎn)換芯片的基準電壓端,被測量電壓輸入端分

21、別輸入基準電壓和被測電壓。模數(shù)(A/D)轉(zhuǎn)換芯片將被測量電壓輸入端所采集到的模擬電壓信號轉(zhuǎn)換成相應(yīng)的數(shù)字信號,然后通過對單片機系統(tǒng)進行軟件編程,使單片機系統(tǒng)能按規(guī)定的時序來采集這些數(shù)字信號,通過一定的算法計算出被測量電壓的值[4 ]。最后單片機系統(tǒng)將計算好了的被測電壓值按一定的時序送入顯示電路模塊加以顯示。</p><p>  此方案不僅能夠繼承上一種方案的各種優(yōu)點,還能改進上一種設(shè)計方案設(shè)計不靈活,難與在原基礎(chǔ)

22、上進行功能擴展等不足。</p><p><b>  3 元件的選取</b></p><p>  3.1 單片機簡介及本設(shè)計單片機的選擇</p><p>  3.1.1 常用單片機的特點比較及本設(shè)計單片機的選擇</p><p>  綜合上一章提到的兩種設(shè)計方案的各方面優(yōu)點及其在現(xiàn)在的所設(shè)計電壓表的實用性,我選擇第二種電

23、壓表設(shè)計方案,即由單片機系統(tǒng)及數(shù)字芯片構(gòu)建的方法來我們本次設(shè)計。</p><p>  在這一設(shè)計中,我涉及到了一個關(guān)鍵系統(tǒng)模塊——單片機系統(tǒng)模塊,而目前單片機的種類是很繁多的,主要有主流的8位單片機和高性能的32位單片機,結(jié)合本設(shè)計各方面因素,8位單片機對于本設(shè)計已經(jīng)是綽綽有余了,但將用哪一種類8的單片機呢。在這里,不得不先簡單的介紹一下幾種常用的8單片機。單片機是指一個集成在一塊芯片上的完整計算機系統(tǒng),具有一個

24、完整計算機所需要的大部分部件:CPU,內(nèi)存,總線系統(tǒng)等。而目前常用的單片機的8位有51系列單片機,AVR單片機,PIC單片機。應(yīng)用最廣的8位單片機還是intel的51系列單片機。51系列單片機的特點是:硬件結(jié)構(gòu)合理,指令系統(tǒng)規(guī)范,加之生產(chǎn)歷史悠久,世界有許多芯片公司都買了51的芯片核心專利技術(shù),并在其基礎(chǔ)上擴充其性能,使得芯片的運行速度變得更快,性價比更高[10]。AVR單片機是atmel公司推出較新的單片機,它的顯著特點是:高性能,低

25、功能,高速度,指令單周期為主,但性格方面比51單片機要高。有專門的I/O方向寄存器。雖然有轉(zhuǎn)強的驅(qū)動電壓,但I/O口使用不比51單片機方便[11]。PIC單片機系列是美國微芯公司的產(chǎn)品,也是市面上增長最快的單片機之一,屬精簡指令集</p><p>  3.1.2 本設(shè)計使用的單片機的簡介</p><p>  本設(shè)計中選用是51系列的AT89C52,它是低電壓、低功耗、高性能的CMOS8位

26、單片機,片內(nèi)含8KB的可反復擦寫的只讀程序存儲器和256B的隨機存取數(shù)據(jù)存儲器,32個I/O口線,3個16位定時/計數(shù)器,片內(nèi)振蕩器及時鐘電路,并與MCS-51系列單片機兼容。在設(shè)計中,單片機起著連接硬件電路與程序運行及存儲數(shù)據(jù)的任務(wù),一方面,它將A/D轉(zhuǎn)換器、顯示器和語音芯片等通過I/O口地址線和數(shù)據(jù)線連接起來;另一方面,它將用戶下載的程序通過控制總線控制數(shù)據(jù)的輸入輸出,從而實現(xiàn)測電壓的功能。</p><p>

27、  3.2各種顯示器件的介紹和選擇</p><p>  3.2.1 常用顯示器件簡介</p><p>  本次設(shè)計中有顯示模塊,而常用的顯示器件比較多,有數(shù)碼管,LED點陣,1602液晶,12864液晶等。數(shù)碼管是最常用的一種顯示器件,它是由幾個發(fā)光二極管組成的8字段顯示器件,其特點是價格非常的便宜,使用也非常的方便,顯示效果非常的清楚。小電流下可以驅(qū)動每光,發(fā)光響應(yīng)時間極短,體積小,重量

28、輕,抗沖擊性能好,壽命長。但數(shù)碼管只能是顯示0——9的數(shù)據(jù)。不能夠顯示字符。這也是數(shù)碼管的不足之處。LED點陣顯示器件是由好多個發(fā)光二極管組成的。具有高亮度,功耗低,視角大,壽命長,耐濕,冷,熱等特點,LED點陣顯示器件可以顯示數(shù)字,英文字符,中文字符等。但用LED點陣顯示的軟件程序設(shè)計比較麻煩。1602液晶是工業(yè)字符型液晶,能夠同時顯示16*2即32個字符。1602液晶模塊內(nèi)部的字符發(fā)生存儲器已經(jīng)存儲了160個不同的點陣字符圖形,這些

29、字這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼。使用時直接編寫軟件程序按一定的時序驅(qū)動即可。它的特點是顯示字跡清楚,價格相對便宜[2]。12864液晶也是一種工業(yè)字符型液晶,它不僅能夠顯示1602液晶所可以顯示的字符,數(shù)字</p><p>  3.2.2 1602液晶的參數(shù)資料</p><p>  我們選擇了1602液晶作為本設(shè)計的顯示

30、模塊的顯示器件。以下是1602液晶的各方面參數(shù)如表4.1所示:</p><p>  表3.1 接口信號說明</p><p><b>  2.基本操作時序:</b></p><p>  讀狀態(tài):輸入:RS=0,RW=1,E=1。輸出:D0-D7為狀態(tài)字</p><p>  寫狀態(tài):輸入:RS=0,RW=0,D0-D7為指令

31、碼,E為高脈沖。輸出:無</p><p>  讀數(shù)據(jù):輸入:RS=1,RW=1,E=1。輸出:D0-D7為數(shù)據(jù)。</p><p>  寫數(shù)據(jù):輸入:RS=1,RW=0,D0-D7為數(shù)據(jù),E為高脈沖。輸出:無</p><p>  3.狀態(tài)字說明如表4.2所示</p><p>  表3.2 狀態(tài)字說明表</p><p> 

32、 4.指令的說明如表4.3,4.4,4.5所示。</p><p><b>  3.3顯示模式設(shè)置</b></p><p>  3.4顯示開/關(guān)及光標設(shè)置</p><p><b>  3.5數(shù)據(jù)控制</b></p><p>  3.3 模數(shù)(A/D)轉(zhuǎn)換芯片的選擇</p><p&

33、gt;  在本設(shè)計中,模數(shù)(A/D)轉(zhuǎn)換模塊是一個重要的模塊,它關(guān)系到最后數(shù)電壓表電壓值的精確度。所以,A/D芯片的選擇是設(shè)計過程中一個很重要的環(huán)節(jié)。</p><p>  3.3.1常用的A/D芯片簡介</p><p>  常用的A/D芯片有AD0809,AD0832,TLC2543C等幾種。下面簡單介紹一下這三種芯片。AD0809是8位逐次逼近型A/D轉(zhuǎn)換器,它是由一個8路的模擬開關(guān)、一

34、個地址鎖存譯碼器、一個A/D 轉(zhuǎn)換器和一個三態(tài)輸出鎖存器組成。多路開關(guān)可選通8個模擬通道,允許8 路模擬量分時輸入,共用A/D 轉(zhuǎn)換器進行轉(zhuǎn)換。些A/D轉(zhuǎn)換器是的特點是8位精度,屬于并行口,如果輸入的模擬量變化大快,必須在輸入之前增加采樣電路[3]。</p><p>  AD0832也是8位逐次逼近型A/D轉(zhuǎn)換器,可支持致命三個單端輸入通道和一個差分輸入通道。它易于和微處理器接口或獨立使用;可滿量程工作;可用地址

35、邏輯多路器選通各輸入通道。</p><p>  TLC2543C是12位開關(guān)電容逐次逼近A/D轉(zhuǎn)換,每個器件有三個控制輸入端,片選,輸入/輸出時鐘以及地址輸入端。它可以從主機高速傳輸轉(zhuǎn)換數(shù)據(jù)。它有高速的轉(zhuǎn)換,通用的控制能力,具有簡化比率轉(zhuǎn)換,刻度以及模擬電路與邏輯電路和電源噪聲隔離,耐高溫等特點[6]。</p><p>  綜合上述幾種A/D轉(zhuǎn)換芯片的特點,前兩種芯片的性能和精度都不如第三

36、種芯片。在本設(shè)計中,我的目標是設(shè)計高精度的電壓表,因此在此,我們選擇精度為12位的TLC2543芯片。</p><p>  3.3.2 模數(shù)(A/D)芯片TLC2543的資料</p><p>  綜合本設(shè)計的各方面考慮,我們選了TLC2543模數(shù)轉(zhuǎn)換芯片。下面就介紹此芯片的各方面資料。</p><p>  TLC2543芯片的封裝引腳圖和引腳說明如下:</

37、p><p>  圖1 TLC2543芯片封裝</p><p><b>  表3.6引腳說明</b></p><p><b>  。</b></p><p>  各引腳的使用詳細介紹。</p><p>  AIN0-AIN10這11個模擬信號輸入由內(nèi)部多路選器選擇。對4.1MHZ的

38、I/O clk,驅(qū)動源阻抗必須小于或等于50歐并且能夠?qū)⒛M電壓由60PF的電容來限制其斜率。</p><p>  在CS端的一個由高低變化將復位內(nèi)部計數(shù)器并控制使能data out,data input和I/O clk。一個由低至高的變化將在一個設(shè)置時間內(nèi)禁止data input和I/O clk.</p><p>  串行數(shù)據(jù)輸入端data input是一個4位的串行地址選擇下一個即將被

39、轉(zhuǎn)換的所需的模擬輸入或測試電壓。串行數(shù)據(jù)以MSB為前導并在I/O clk的前4個上升沿被移入。在4個地址位被讀入地址寄存器后,I/O clk 將剩下的幾位依次輸入。</p><p>  Data out在CS為高時處于高阻抗狀態(tài),而當CS為低時處于激活狀態(tài)。CS一旦有效,按照前一次轉(zhuǎn)換結(jié)果的MSB/LSB值將data out從高阻抗狀態(tài)轉(zhuǎn)變成相應(yīng)的邏輯電平,I/O clk 的下一個下降沿將根據(jù)下一個MSB/LS

40、B將data out驅(qū)動成相應(yīng)的邏輯電平,剩下的各位依次移出。</p><p>  EOC在最后的I/O clk 下降沿之后,從高電平變?yōu)榈碗娖讲⒈3值椭钡睫D(zhuǎn)換完成及數(shù)據(jù)準備傳輸。</p><p>  GND端是內(nèi)部電路的地回路端,除加有說明外,所有電壓測量都相對于GND</p><p>  I/O clk端串行輸入并完成以下四個功能:第一,在I/O clk的前8個

41、上升沿,它將8個輸入數(shù)據(jù)信鍵入輸入數(shù)據(jù)寄存器。在第4個上升沿之后為多路器的地址。第二,在I/O clk的第4個下降沿,在選定的多路器的輸入端上的模擬輸入電壓開始和電容器充電并繼續(xù)到I/O clk的最后一個下降沿。第三,它將前一次轉(zhuǎn)換的數(shù)據(jù)的其余11位移出data out端。在I/O clk的下降沿時數(shù)據(jù)變化。第四,在I/O clk的最后一個下降沿它將轉(zhuǎn)換的控制信號傳送到內(nèi)部的狀態(tài)控制位。</p><p>  RE

42、F+端通常接VCC,最大輸入電壓范圍取決于加于本端與加于REF-端的電壓差。</p><p>  REF-端通常接地。</p><p><b>  4. 總體設(shè)計</b></p><p>  4.1 技術(shù)要求</p><p>  最高量程為:500V。</p><p>  分為三檔量程:5V,

43、50V,500V??梢酝ㄟ^調(diào)檔開關(guān)實現(xiàn)各檔位。最高精度為0.01mv。</p><p><b>  能測交流電壓。</b></p><p>  被測電壓的電壓值小于1V時,有自動換以MV為單位顯示。</p><p>  通過按鍵可以顯示5秒的平均電壓的電壓值。</p><p><b>  2.設(shè)計方案:<

44、/b></p><p>  根據(jù)上述,我選擇單片機與A/D轉(zhuǎn)換芯片結(jié)合的方法實現(xiàn)本設(shè)計。使用的基本元器件是:AT89C51單片機,TLC2543模數(shù)轉(zhuǎn)換芯片,1602液晶顯示器,開關(guān),按鍵,電容,電阻,晶振,標準電源等等。</p><p>  設(shè)計的基本框圖如下:</p><p><b>  圖2 系統(tǒng)設(shè)計框圖</b></p>

45、<p>  4.2硬件電路系統(tǒng)模塊的設(shè)計</p><p>  根據(jù)上述選擇的各元器件,各電路模塊的電路圖如下描述。</p><p><b>  1.單片機系統(tǒng)</b></p><p>  單片機最小系統(tǒng)包括晶振電路,復位電路,電源。其原理圖如下:</p><p>  圖3 單片機最小系統(tǒng)原理圖</p&

46、gt;<p>  此模塊中,單片機的晶振是12MHZ,C1和C2的電容是10UF,C3可選1-10UF。R1電阻為1K。</p><p><b>  2.輸入電路</b></p><p>  由于輸入電路的電壓比基準電壓(2V)高很多,因此在輸入電路必須加電壓衰減器。衰減電路可由開關(guān)來選擇不同的衰減率,從而切換檔位。</p><p&g

47、t;  則完整輸入電路如下:</p><p><b>  圖4 輸入電路</b></p><p>  通過計算,可知設(shè)計衰減器用的電阻R2,R3和R4分別為:9M,900K,100K控制檔位的開關(guān)是雙開關(guān)的,目地是能夠使單片機CPU自動識別檔位,即可用相應(yīng)的檔位的數(shù)據(jù)轉(zhuǎn)換的算法計算出正確的電壓值。被測電壓輸入端、整理過的模擬電壓輸入端,開關(guān)與單片機的連接如圖所示。&l

48、t;/p><p>  3.A/D轉(zhuǎn)換芯片與單片機的連接</p><p>  此設(shè)計中選擇的是A/D轉(zhuǎn)換芯片的通道0,A/D芯片的數(shù)據(jù)輸入口連接單片機的P1.3口,數(shù)據(jù)輸出口連接單片機的P1.4口,芯片使能端連接單片機的P1.5口,脈沖端連接單片機的P1.6口。模塊連接如圖5所示。</p><p><b>  圖5模塊連接圖</b></p>

49、;<p>  交流輸入端與A/D 芯片的連接</p><p>  交流電壓不能直接輸入A/ D 芯片,必需通過整流、濾波 才能輸入A/D轉(zhuǎn)換器[13]。如圖所示:</p><p><b>  圖6 芯片連接</b></p><p>  交流電壓從out1輸入,通過以上電路 整流 濾波,從out2 輸出較穩(wěn)定的直流電壓。</p

50、><p>  5.1602液晶與單片機連接</p><p>  此模塊液晶的RS,RW和E端分別連接單片機的P1.2,P1.1和P1.0口;液晶的數(shù)據(jù)各端口連接單片機的P0口[11]。具體如下圖所示。</p><p><b>  圖7液晶連接模塊</b></p><p>  6. 鍵盤與單片機的連接如下。</p>

51、<p>  此鍵盤的一端與單片機的P2.0口連接,另一端接地。原理圖如下所示。</p><p><b>  圖8 開關(guān)連接</b></p><p>  該鍵盤的功能:當鍵盤被按下時,即可計算后5秒的平均電壓值。</p><p>  4.3 系統(tǒng)軟件的設(shè)計</p><p>  4.3.1 匯編語言和C語言的

52、特點及選擇</p><p>  本設(shè)計是硬件電路和軟件編程相結(jié)合的設(shè)計方案,選擇合適的編程語言是一個重要的環(huán)節(jié)。在單片機的應(yīng)用系統(tǒng)程序設(shè)計時,常用的是匯編語言和C語言。匯編語言的特點是占用內(nèi)存單元少,執(zhí)行效率高。執(zhí)行速度快。但它依賴于計算機硬件,程序可讀性和可移植性比較差。而C語言雖然執(zhí)行效率沒有匯編語言高,但語言簡潔,使用方便,靈活,運算豐富,表達化類型多樣化,數(shù)據(jù)結(jié)構(gòu)類型豐富,具有結(jié)構(gòu)化的控制語句,程序設(shè)計自

53、由度大,有很好的可重用性,可移植性等特點[9]。</p><p>  由于現(xiàn)在單片機的發(fā)展已經(jīng)達到了很高的水平,內(nèi)部的各種資源相當?shù)呢S富,CPU的處理速度非常的快。用C語言來控制單片機無疑是一個理想的選擇。所以在本設(shè)計中采用C語言編寫軟件程序。</p><p>  4.3.2 主程序設(shè)計</p><p>  主程序設(shè)計包括以下方面:</p><

54、p>  按照硬件電路對單片機位定義。</p><p><b>  編寫延時模塊程序。</b></p><p>  編寫驅(qū)動LED數(shù)碼管顯示模塊程序。</p><p>  編寫驅(qū)動A/D轉(zhuǎn)換模塊程序。</p><p>  編寫鍵盤掃描模塊程序。</p><p>  主程序的總體流程如下圖:&l

55、t;/p><p><b>  圖9 主程序流程圖</b></p><p><b>  全部軟件程序如下:</b></p><p>  #include<reg52.h></p><p>  #define uchar unsigned char</p><p>  #

56、define uint unsigned int</p><p>  #define key_state0 0 //鍵盤掃描的各個狀態(tài)</p><p>  #define key_state1 1</p><p>  #define key_state2 2</p><p>  #define key_state3 3</p>

57、<p>  sbit rs=P1^2;//1602液晶寫命令/數(shù)據(jù)標志,0時寫命令</p><p>  sbit rw=P1^1;//1602液晶寫入/讀出標志,0時寫入數(shù)據(jù)</p><p>  sbit ep=P1^0;</p><p>  sbit input=P1^4;</p><p>  sbit output=P1^3;&

58、lt;/p><p>  sbit cs=P1^5;</p><p>  sbit clk=P1^6;</p><p>  sbit key=P2^0;</p><p>  sbit flag_1=P2^1;//定義電壓表檔位相關(guān)標志</p><p>  sbit flag_2=P2^2;</p><p&

59、gt;  sbit flag_3=P2^3;</p><p>  sbit flag_4=P2^4;</p><p>  uchar code tab0[]="V "; //顯示的單位及有關(guān)的字符</p><p>  uchar code tab1[]="MV";</p><p>  uchar cod

60、e tab2[]="Power:";</p><p>  uchar code tab3[]="Aver_V:";//平均電壓值標志符</p><p><b>  uchar t;</b></p><p>  void delay(int z)//延時函數(shù)</p><p><

61、b>  {</b></p><p><b>  int x,y;</b></p><p>  for(x=z;x>0;x--)</p><p>  for(y=10;y>0;y--);</p><p><b>  }</b></p><p>  

62、void write_com(uchar com)//往1602液晶寫命令函數(shù)</p><p><b>  {</b></p><p><b>  rs=0;</b></p><p><b>  P0=com;</b></p><p><b>  delay(5);&

63、lt;/b></p><p><b>  ep=1;</b></p><p><b>  delay(5);</b></p><p><b>  ep=0;</b></p><p><b>  }</b></p><p>  

64、void write_dat(uchar dat)//往1602液晶寫數(shù)據(jù)函數(shù)</p><p><b>  {</b></p><p><b>  rs=1;</b></p><p><b>  P0=dat;</b></p><p><b>  delay(5);

65、</b></p><p><b>  ep=1;</b></p><p><b>  delay(5);</b></p><p><b>  ep=0;</b></p><p><b>  }</b></p><p> 

66、 void init_1602()//對1602液晶的初始化函數(shù)</p><p><b>  {</b></p><p><b>  rs=0;</b></p><p><b>  rw=0;</b></p><p>  write_com(0x38);</p>

67、<p><b>  delay(1);</b></p><p>  write_com(0x0c);</p><p><b>  delay(1);</b></p><p>  write_com(0x06);</p><p><b>  delay(1);</b>&

68、lt;/p><p>  write_com(0x01);</p><p><b>  delay(1);</b></p><p><b>  }</b></p><p>  void init_timer0()//定時計數(shù)器0初值化函數(shù),</p><p><b>  {

69、</b></p><p>  TMOD=0x01;//方式一</p><p>  TH0=(65536-50000)/256;//每50ms中斷一次</p><p>  TL0=(65536-50000)%256;</p><p>  IE=0x82;//打開中斷</p><p>  TR0=0;//定時器

70、首先不可工作</p><p><b>  }</b></p><p>  void display(uchar x,uchar y,uint dat)//顯示電壓值的函數(shù),x行y列開始顯示</p><p><b>  {</b></p><p><b>  uint add;</b&

71、gt;</p><p>  uchar i,a[5];</p><p><b>  switch(x)</b></p><p><b>  {</b></p><p>  case 0:add=0x80;break;</p><p>  case 1:add=0x80+0x4

72、0;break;</p><p><b>  }</b></p><p>  add=add+y;</p><p>  write_com(add);</p><p>  for(i=0;i<5;i++)</p><p><b>  {</b></p>&

73、lt;p>  a[i]=dat%10;</p><p>  dat=dat/10;</p><p><b>  }</b></p><p>  write_dat(a[4]+0x30);</p><p>  write_dat(a[3]+0x30);</p><p>  write_dat(

74、a[2]+0x30);</p><p>  write_dat('.');</p><p>  write_dat(a[1]+0x30);</p><p>  write_dat(a[0]+0x30);</p><p><b>  }</b></p><p>  void disp

75、lay_zifu(uchar x,uchar y,uchar *str)//顯示字符函數(shù),x行y列開始顯示</p><p><b>  {</b></p><p><b>  uint add;</b></p><p><b>  switch(x)</b></p><p>&

76、lt;b>  {</b></p><p>  case 0:add=0x80;break;</p><p>  case 1:add=0x80+0x40;break;</p><p><b>  }</b></p><p>  add=add+y;</p><p>  write

77、_com(add);</p><p>  while(*str!='\0')</p><p><b>  {</b></p><p>  write_dat(*str);</p><p><b>  str++;</b></p><p><b>  

78、}</b></p><p><b>  }</b></p><p>  uint read_AD(uchar con_way)//讀取AD轉(zhuǎn)換值操作函數(shù)</p><p><b>  {</b></p><p>  uint dat=0;</p><p><b

79、>  uchar i;</b></p><p><b>  cs=0;</b></p><p><b>  clk=0;</b></p><p>  con_way<<=4;</p><p>  for(i=0;i<12;i++)</p><p

80、><b>  {</b></p><p>  con_way<<=1;/*選擇0通道,在輸入該控制數(shù)據(jù)的同時輸出前一次AD轉(zhuǎn)結(jié)果*/</p><p><b>  input=CY;</b></p><p><b>  dat<<=1;</b></p><

81、;p>  if(output)/*輸出AD轉(zhuǎn)換結(jié)果*/</p><p>  dat=dat|0x01;</p><p><b>  delay(2);</b></p><p><b>  clk=1;</b></p><p><b>  delay(5);</b><

82、/p><p><b>  clk=0;</b></p><p><b>  }</b></p><p><b>  cs=1;</b></p><p>  return dat;</p><p><b>  }</b></p>

83、;<p>  uint read_value()</p><p><b>  {</b></p><p>  long float dq;</p><p>  long float dat_v;</p><p>  dq=read_AD(0);//把讀取得的AD轉(zhuǎn)換值給變量dq</p><

84、;p>  if(!flag_3)</p><p>  dat_v=(200*dq)/4096*100;//三檔,量程為200V</p><p>  else if(!flag_2)</p><p>  dat_v=(20*dq)/4096*100;//二檔,量程為20V</p><p>  else if(!flag_1)</p&

85、gt;<p>  dat_v=(2*dq)/4096*100;//一檔,量程2V</p><p>  return dat_v;</p><p><b>  }</b></p><p>  void read_key()//鍵盤掃描函數(shù)</p><p><b>  {</b></

86、p><p>  static uchar key_state=0;</p><p>  switch(key_state)</p><p><b>  {</b></p><p>  case key_state0:</p><p>  if(key==0)</p><p> 

87、 key_state=key_state1;</p><p><b>  break;</b></p><p>  case key_state1:</p><p>  if(key==0)</p><p><b>  {</b></p><p><b>  TR0

88、=1;</b></p><p>  display_zifu(1,0,tab3);</p><p>  key_state=key_state2;</p><p><b>  }</b></p><p><b>  else</b></p><p>  key_s

89、tate=key_state0;</p><p><b>  break;</b></p><p>  case key_state2:</p><p><b>  if(key)</b></p><p>  key_state=key_state0;</p><p><

90、;b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  long float

91、 dat;</p><p>  long float dat_aver,dat1,dat2,dat3,dat4,dat5;//定義5個隨機電壓值變量</p><p>  uchar flag;//后五秒取隨機電壓的標志</p><p>  init_timer0();</p><p>  init_1602();</p><

92、;p>  delay(10);</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  dat=read_value();</p><p>  if(dat>=100)//當電壓值大于1V時,用V顯示,否則用mV顯示</p&

93、gt;<p><b>  {</b></p><p>  display_zifu(0,1,tab2);</p><p>  display(0,7,dat);</p><p>  display_zifu(0,13,tab0);</p><p><b>  }</b></p&g

94、t;<p><b>  else</b></p><p><b>  {</b></p><p>  display_zifu(0,1,tab2);</p><p>  display(0,7,dat*1000);</p><p>  display_zifu(0,13,tab1);&

95、lt;/p><p><b>  }</b></p><p>  read_key(); //當鍵盤按下時,計算后五秒的平均電壓值</p><p><b>  if(t==20)</b></p><p><b>  {</b></p><p><b&

96、gt;  t=0;</b></p><p><b>  flag++;</b></p><p><b>  }</b></p><p>  if(flag==1)</p><p><b>  dat1=dat;</b></p><p>  i

97、f(flag==2)</p><p><b>  dat2=dat;</b></p><p>  if(flag==3)</p><p><b>  dat3=dat;</b></p><p>  if(flag==4)</p><p><b>  dat4=dat

98、;</b></p><p>  if(flag==5)</p><p><b>  {</b></p><p><b>  dat5=dat;</b></p><p>  dat_aver=(dat1+dat2+dat3+dat4+dat5)/5;</p><p>

99、;  display(1,7,dat_aver);</p><p>  display_zifu(1,13,tab0);</p><p>  dat_aver=0;</p><p><b>  }</b></p><p>  if(flag==8)</p><p><b>  {<

100、;/b></p><p><b>  flag=0;</b></p><p>  write_com(0x01);</p><p><b>  TR0=0;</b></p><p><b>  }</b></p><p><b>  }

101、</b></p><p><b>  }</b></p><p>  void timer0() interrupt 1//定時器中斷函數(shù)</p><p><b>  {</b></p><p>  TH0=(65536-50000)/256;//重新放入初始值</p>&

102、lt;p>  TL0=(65536-50000)%256;</p><p><b>  t++;</b></p><p><b>  }</b></p><p><b>  5 系統(tǒng)的調(diào)試</b></p><p>  完成了系統(tǒng)的硬件設(shè)計,制作和軟件編程之后,要使系統(tǒng)能夠

103、按設(shè)計意圖正常運行,必須進行系統(tǒng)調(diào)試。調(diào)試分了硬件和軟件調(diào)試。</p><p>  硬件調(diào)試的主要任務(wù)是排除硬件故障,其中包括設(shè)計的錯誤和工藝性故障等。</p><p>  檢查所設(shè)計的硬件電路板所有的器件和引腳是否正確,尤其是電源的連接是否正確;檢查各總線是否有短路的故障。檢查開關(guān)/按鍵是否正常,是否連接正確,為了保護芯片,應(yīng)先對各IC座電位進行檢查,確認無誤后再插入芯片。</p&

104、gt;<p>  將40芯片的仿真插頭插入單片機插座進行調(diào)試,檢查各接口是否滿足設(shè)計的要求,有正常的程序測試硬件電路的好壞。</p><p>  軟件調(diào)試的任務(wù)是利用開發(fā)工具進行在線仿真調(diào)試,發(fā)現(xiàn)和糾正程序的錯誤,同時也能發(fā)現(xiàn)硬件的故障。軟件調(diào)試是一個模塊進行的。首先單獨調(diào)試各子程序是否能夠按照預期的功能,接口電路的控制是否正常。最后調(diào)試整個程序[9]。尤其注意的是各模塊間能否正確的傳遞參數(shù)。<

105、;/p><p>  檢查液晶顯示模塊程序。在主程序中調(diào)用display()和dislay_zifu()函數(shù),觀察在1602液晶上是否能夠顯示相應(yīng)的字符。如果不能,則在相關(guān)的子程序中設(shè)計斷點,反復調(diào)試直到能夠顯示。</p><p>  檢查按鍵模塊程序。本設(shè)計的按鍵模塊程序是用狀態(tài)機的方法,可以在key_state1狀態(tài)下加一個任務(wù),如顯示一個字符在液晶上。觀察是否正確顯示。</p>

106、<p>  檢查A/D轉(zhuǎn)換模塊程序??梢栽谟布娐返妮斎攵溯斎胍阎膸讉€電壓,分別觀察液晶上是否顯示相應(yīng)的電壓值。</p><p>  檢查數(shù)據(jù)的轉(zhuǎn)換模塊程序。可以撥動硬件電路的檔位開關(guān),輸入相應(yīng)的電壓,觀察液晶顯示的電壓值是否一致。如果一致。則數(shù)據(jù)轉(zhuǎn)換的算法正確的。</p><p>  總調(diào)試。當相應(yīng)的各模塊環(huán)節(jié)都正確后,可程序下載到單片機。接上電源運行。再檢查所有功能,觀

107、察是否能預期的一樣。如果一樣,說明設(shè)計成功完成。</p><p><b>  6 仿真結(jié)果</b></p><p>  經(jīng)過以上設(shè)計,反復調(diào)試,仿真結(jié)果如圖所示:</p><p><b>  圖 10</b></p><p>  在輸入端輸入直流電壓是可以準確的測量其電壓值,檔位選擇模塊有三個檔位—

108、—5V、50V和500V,可以選擇合適的檔位測量500V以內(nèi)的電壓。</p><p>  在輸入端輸入交流電壓時,通過交流模塊的整流濾波,輸出較為穩(wěn)定的直流電壓,由于整流濾波后輸出的是交流電壓的平均值,而電壓表需測出有效值,因此在軟件設(shè)計時顯示電壓應(yīng)該是所測電壓的1.1倍[13]。</p><p>  通過以上仿真,完成了設(shè)計的任務(wù)。</p><p><b&g

109、t;  7 總結(jié)</b></p><p>  由于本設(shè)計使用的是高效的51系列單片機作為核心的測量系統(tǒng),以及高精度,高速度,高抗干擾的A/D轉(zhuǎn)換器。使得本直流電壓表具體精度高,靈敏度強,性能可靠,電路簡單,成本低的特點。因為平時所需要測量的被測電壓的電壓值不是一個定值,多多少少都有一些微小的變化。因此本設(shè)計為之增加了可測5秒內(nèi)平均電壓的電壓值。大大的提高了測量的準確性。使直流電壓表有著較高的智能水平。

110、</p><p>  此設(shè)計是單片機應(yīng)用系統(tǒng)的開發(fā)性實驗。通過此設(shè)計可知在單片機系統(tǒng)開發(fā)過程應(yīng)注意以下事項。</p><p>  1)硬件的選擇。選擇適合設(shè)計目地的元器件是一個重要的方設(shè)計環(huán)節(jié)。不能以元器件是否是最高性能作為選擇元器件的標準。往往高性能器件的價格也是較高的。應(yīng)根據(jù)項目設(shè)計的需要選擇元器件,能夠滿足設(shè)計需要作為標準選擇元器件。</p><p>  2)

111、因為單片機系統(tǒng)設(shè)計是硬件和軟件相結(jié)合的設(shè)計,所以系統(tǒng)和硬件和軟件必須緊密配合,協(xié)調(diào)一致。應(yīng)不斷調(diào)整硬軟件設(shè)計,以提高系統(tǒng)工作效率。</p><p>  單片機的應(yīng)用如今已經(jīng)是在工業(yè),電子等方面展示出了它的優(yōu)越性,利用單片機在設(shè)計電路逐漸成了趨勢,它與外圍電路再加上軟件程序就可以構(gòu)建任意的產(chǎn)品,使得本設(shè)計成為現(xiàn)實[13]。隨著單片機的日益發(fā)展,它必將在未來顯示出更大的活力,為電子設(shè)計更多精彩。對于數(shù)字電壓表而言,功

112、能將會越來越強大[14]。</p><p><b>  參考文獻</b></p><p>  [1] 、徐仁貴.《單片微型計算機應(yīng)用技術(shù)》.機械工業(yè)出版社,2001年.</p><p>  [2] 張凱.《MCS-51單片機綜合系統(tǒng)及設(shè)計開發(fā)》.科學出版社,1996年.</p><p>  [3]吳國經(jīng).單片機應(yīng)用技術(shù)[

113、M].北京:中國電力出版社,2003.</p><p>  [4] 董少明.《單片機原理及應(yīng)用》.中國鐵道出版社,2007年. </p><p>  [5] 梅麗鳳.《單片機原理及接口技術(shù)》.清華大學出版社,2004年</p><p>  [6]侯振鵬.嵌入式C語言程序設(shè)計[M].北京:人民郵電出版社,2006.</p><p>  [7]李

114、光飛 李良兒.單片機C程序設(shè)計[M].北京:北京航空航天大學出版社,2005</p><p>  [8]王港元.電工電子實踐指導[M].江西:江西科學技術(shù)出版社,2005年</p><p>  [9] 余永全.《FLASH單片機原理及應(yīng)用》.電子工業(yè)出版社,1997年. </p><p>  [10]梅麗鳳等.單片機原理及接口技術(shù).北京:清華大學出版社,2004

115、 </p><p><b>  致謝</b></p><p>  我要向給予我悉心指導的**老師致以最誠摯的謝意。本文是在**導師的大力支持和精心指導下完成的,在忙碌的教學工作中擠出時間來指導我的論文寫作。從查閱資料和撰寫論文,從定稿到修改格式無處不體現(xiàn)著**老師的辛勤指導,**老師不厭其煩,反復審查論文,指出論文中每一點的不足直到問題越來越小越少。在**老師的指導和

116、影響下,對數(shù)字電壓表的了解越來越多,對單片機的設(shè)計流程越來越熟悉。**老師治學嚴謹、學識淵博、實事求是、勇于進取,他以自己高尚的品格、嚴謹?shù)膶W風、寬廣的胸懷和敏銳的洞察力影響著我,**老師指導我期間學到的很多東西使我受益匪淺。</p><p>  在感謝**老師的同時也感謝在一起愉快的度過畢業(yè)論文小組的同學們,我們一起相互詢問對方的論文進度,關(guān)注著彼此的實驗結(jié)果,正是由于你們的幫助、支持和鼓勵,我才能克服一個一個

溫馨提示

  • 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

提交評論