基于單片機的數(shù)字電流表的設計本科生_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  本科生畢業(yè)論文(設計)</p><p>  題目: 基于單片機的數(shù)字電流表的設計</p><p>  學 院 電子信息工程學院 </p><p>  學科門類 工 學 </p><p>  專 業(yè) 電子信息工程 </p><p>  學 號

2、 </p><p>  指導教師 </p><p>  2015年05月30日</p><p><b>  摘 要</b></p><p>  隨著時代的進步,電子科學技術的日益更新,傳統(tǒng)電工電子測量儀器——模擬測量儀表即使可以直觀地從刻度盤讀出表針偏

3、轉了多少格或占了滿刻度的百分之幾等,也滿足不了對測量數(shù)據(jù)的精確要求,那么就需要更高、更準精度的儀器來替代。同時傳統(tǒng)的模擬測量儀表在計算時需要對讀數(shù)加以換算和說明,而且不同的觀察者會帶來不同的人為“視差”,即使同一個觀察者處于不同的位置也可能會得到不同的結果和偏差。然而,數(shù)字電流表就能夠克服這些問題,它的測量結果直接以數(shù)字的形式在顯示屏上顯示出來。數(shù)字電流表不僅具有讀數(shù)準確,設計簡單,隨身攜帶的優(yōu)點,而且操作方法簡單,人們使用起來也非常方

4、便,這些優(yōu)點使數(shù)字電流表在近年來的電工電子的測量中應用更加廣泛。</p><p>  本文基于AT89C51單片機,論述數(shù)字電流表的工作原理及設計過程。利用Protel軟件設計、Keil C軟件和Proteus仿真軟件,根據(jù)所給數(shù)字電流表的技術指標和要求,確定電流表所需的元器件和最佳設計方案,這種方法簡單易行,最終得到比較理想,符合設計要求的數(shù)字電流表。</p><p>  關鍵詞:C51

5、單片機;A/D轉換器;數(shù)字電流表</p><p><b>  Abstract</b></p><p>  With the progress of time, increasingly updating electronic science and technology, traditional electric and electronic measuring i

6、nstruments - analogue measurement instruments, even intuitively read from the dial hands deflected the number of cells or accounted for a few percent of full scale, also can not meet the exact requirements of the measure

7、d data, then you need higher precision and more accurate instrument instead. While traditional analog measuring instruments need to be converted in t</p><p>  Based on AT89C51 microcontroller, digital ammete

8、r discussed the working principle and design process. Use Protel software design, Keil C software and Proteus simulation software, depending on the digital ammeter technical indicators and requirements, determine the req

9、uired components and ammeter best design, this method is simple, and ultimately get the ideal, in line with Digital ammeter design requirements.</p><p>  Key words: C51 microcontroller digital ammeter; A / D

10、 converter; digital ammeter</p><p><b>  目 錄</b></p><p><b>  摘 要I</b></p><p>  AbstractII</p><p><b>  目 錄III</b></p><

11、;p><b>  1.引言1</b></p><p>  1.1 研究背景及意義1</p><p>  1.2 國內外研究現(xiàn)狀2</p><p>  1.3 本文主要內容安排2</p><p>  2.數(shù)字電流表的理論2</p><p>  2.1 數(shù)字電流表的工作原理2<

12、/p><p>  2.2 A/D轉換器3</p><p>  2.3 AT89C51單片機5</p><p>  2.4 液晶顯示器8</p><p>  3.數(shù)字電流表的設計9</p><p>  3.1 方案論證9</p><p>  3.2 任務指標10</p>&l

13、t;p>  3.3 整體電路圖10</p><p><b>  4.軟件設計11</b></p><p>  4.1 軟件設計的主程序流程圖11</p><p>  4.2 編程語言介紹11</p><p>  4.3 Protel99SE軟件的介紹12</p><p>  5.系

14、統(tǒng)調試及實物制作13</p><p>  5.1 硬件系統(tǒng)的調試13</p><p>  5.2 系統(tǒng)軟件的調試13</p><p>  5.3 整體系統(tǒng)的調試14</p><p>  5.4 實際硬件制作結果14</p><p>  6.總結與展望14</p><p><b&

15、gt;  參考文獻16</b></p><p><b>  致 謝17</b></p><p><b>  附 錄18</b></p><p><b>  1.引言</b></p><p>  1.1 研究背景及意義</p><p>

16、;  數(shù)字電流表(Digital ammeter)簡稱AMP,它的測量原理是通過數(shù)字化測量技術,把輸入的連續(xù)模擬量(直流輸入電流)轉換成不連續(xù)、離散的數(shù)字形式,然后通過液晶顯示屏來顯示的儀表。過去傳統(tǒng)的指針式電流表不僅功能單一,而且精確度低,無法滿足現(xiàn)今數(shù)字化時代的需求,然而基于單片機的數(shù)字電流表,不僅具有精確度高、抗干擾能力強,可擴展性強、集成方便的特點,還可以與PC進行當前實時通信等信息的傳輸?,F(xiàn)今,基于各種型號單片機、A/D 轉換

17、器等設計成的數(shù)字電流表,已經(jīng)在電子電工測量、工業(yè)自動化儀表、自動檢測系統(tǒng)等許多智能化測量領域起到了舉足輕重的地位,得到了越來越多使用者的青睞,體現(xiàn)出數(shù)字電流表強大的生命力。與此同時,各種基于AMP擴展而成的通用及專用數(shù)字化儀表儀器,也把電量和非電量測量的技術水平提高到更高的位置。</p><p>  在進行課題設計之前,我們要學會如何在互聯(lián)網(wǎng)和圖書館查找所需的資料,同時復習過去所學的課程知識并加深理解記憶,不僅為

18、畢業(yè)設計打好良好基礎,同時也為以后的工作做充分的準備。通過對畢業(yè)設計題目的分析,了解數(shù)字電流表的組成特性和工作原理;學會如何使用數(shù)字電流表測量數(shù)據(jù)、調試、校準的方法;學會如何進行分流電路的連接設進和計算;學習了解過載電路保護的工作原理和功用。最終,通過本課程設計,我們掌握電子設計的基本步驟和方法,培養(yǎng)自己分析問題、解決問題和處理問題的能力。</p><p>  數(shù)字電流表和傳統(tǒng)的指針式電流表相比,具有如下優(yōu)點:&

19、lt;/p><p>  1.可以直觀準確的讀取數(shù)字;</p><p>  2.能夠顯示小數(shù)點后面的位數(shù);</p><p>  3.測量時數(shù)字分辨率高,準確度高;</p><p>  4.可以測量的量程范圍較大;</p><p><b>  5.能夠擴展;</b></p><p>

20、;<b>  6.工作效率高;</b></p><p><b>  7.輸入阻抗高;</b></p><p>  8.電路集成度高,功率消耗少;</p><p>  9. 抗干擾能力較強。</p><p>  綜上可知,數(shù)字型電流表代替?zhèn)鹘y(tǒng)指針電流表不僅是時代發(fā)展的必然趨勢,也是現(xiàn)今市場的迫切需求。

21、而此次課題的選擇和設計正是基于AT89C51單片機來進行設計的。</p><p>  1.2 國內外研究現(xiàn)狀</p><p>  數(shù)字電流表自問世以來,已經(jīng)經(jīng)過多年的發(fā)展和改進,大體上可以概括為五代產(chǎn)品。第一代產(chǎn)品是電子管數(shù)字電流表,問世于20世紀50年代,第二代產(chǎn)品是晶體管數(shù)字電流表,問世于20世紀60年代,第三代產(chǎn)品是中、小規(guī)模集成電路的數(shù)字電流表,研制于20世紀70年代。第四代、第五

22、代產(chǎn)品是近些年來由國內外相繼研制推出的由大規(guī)模集成電路(LSI)或者超大規(guī)模集成電路(VLSI)組成的數(shù)字電流表、智能數(shù)字電流表。這些數(shù)字電流表的問世不僅在電子測量的進程中開創(chuàng)了先河,更憑借著準確度高、可靠性強、分辨力高、性價比高等優(yōu)良特性而備受人們的喜愛。</p><p>  1.3 本文主要內容安排</p><p>  前期通過查閱大量的雜志、期刊、論文等相關重要的資料、文獻之后,對基

23、于單片機的數(shù)字電流表的設計思路進行大體的把握,具體的行文章節(jié)安排如下。</p><p>  第一章:引言中介紹數(shù)字電流表的研究背景和意義,發(fā)展現(xiàn)狀和取得的研究成果。</p><p>  第二章:詳細的介紹數(shù)字電流表的基本理論知識。</p><p>  第三章:詳細的介紹數(shù)字電流表的設計方案和數(shù)字電流表的任務指標以及整體電路圖的設計。</p><p

24、>  第四章:介紹Protel99SE軟件的使用和編程語言的學習。</p><p>  第五章:對數(shù)字電流表進行硬件、軟件和整體系統(tǒng)的調試。</p><p>  第六章:對論文進行總結和展望。</p><p>  2.數(shù)字電流表的理論</p><p>  2.1 數(shù)字電流表的工作原理</p><p>  數(shù)字電流

25、表是一個可以將輸入的連續(xù)模擬電流量經(jīng)過A/D轉換器轉變?yōu)椴贿B續(xù)、離散的數(shù)字形式,并通過液晶顯示屏顯示出電流讀數(shù)的儀表,和指針式電流表相比,數(shù)字式電流表有著測量數(shù)據(jù)準確明了,顯示的讀數(shù)位數(shù)精度高等特點,類似于常用的數(shù)字式萬用表,其使用性能相當廣泛實用。</p><p>  首先我們通過單片機和外部擴展電路做成一個理想的電壓[1],硬件電路設計由7個部分組成:主控模塊AT89C51單片機系統(tǒng),A/D轉換電路,顯示系統(tǒng)

26、,驅動電路,復位電路,晶振電路以及測量電壓輸入電路。硬件電路設計框圖如圖2-1所示:</p><p>  圖2-1 系統(tǒng)硬件設計框圖</p><p>  人們常說的電流表指的是靈敏電流計,由于其量程太小,不能直接測量電流,只能通過它檢測有無電流和電流的流向,所以需將一個理想電壓表改裝成一個多量程或者量程較大的數(shù)字電流表。本次課題設計是基于一個內阻為無窮大數(shù)字電壓表的基礎上,并聯(lián)上一個分流電

27、阻來構成的數(shù)字電流表,其工作原理如圖2-2所示,電路圖用G表示。當待測電流流過電阻,電流表的量程就由G的滿量程電壓和電阻的阻值來決定,記U為G的滿量程電壓,根據(jù)歐姆定律U=RI,當U和R已知,則電流表的滿量程電流就是I的數(shù)值。</p><p>  圖2-2 數(shù)字電流表的基本工作原理</p><p>  2.2 A/D轉換器</p><p>  數(shù)模轉換器,又稱D/A

28、轉換器,簡稱DAC,它的主要功能是把數(shù)字量轉變成模擬量。D/A轉換器的組成基本上包括4個部分,即權電阻網(wǎng)絡、運算放大器、基準電源和模擬開關。模數(shù)轉換器中一般都要用到數(shù)模轉換器,模數(shù)轉換器即A/D轉換器,簡稱ADC,它的主要功能是把連續(xù)的模擬信號轉變?yōu)殡x散的數(shù)字信號[2]。通過對轉換器的了解與本設計的要求,同時考慮到具體轉換器的具有性能指標等特點,我們選擇PCF8591作為本設計的A/D轉換器。</p><p> 

29、 PCF8591轉換器是一個具有單片集成、能夠進行獨立供電、功耗低、8-bit CMOS數(shù)據(jù)獲取的器件。PCF8591有著4個模擬輸入、1個模擬輸出和1個串行I2C總線接口。PCF8591的地址引腳有3個,分別為A0、A1和A2,可用來進行硬件地址的編程,可以在不添加額外硬件的情況下,在同一個I2C總線上接入8個PCF8591器件。在PCF8591器件上輸入地址、輸出地址、控制信號和數(shù)據(jù)信號通常都是通過雙線雙向的I2C總線以串行的方式進

30、行傳輸信息的[3]。</p><p>  PCF8591具有多路模擬量輸入、內置跟蹤保持、8-bit模數(shù)和數(shù)模轉換等功能,而且I2C總線的最大速率決定了PCF8591的最大轉化速率。</p><p><b>  特征如下:</b></p><p>  [1]獨立的供電系統(tǒng)</p><p>  [2]PCF8591的電壓操

31、作范圍是2.5V-6V</p><p>  [3]待機消耗電流低</p><p>  [4]通過I2C總線串行輸入/輸出</p><p>  [5]PCF8591通過3個硬件地址引腳尋址</p><p>  [6]PCF8591的采樣率由I2C總線速率決定</p><p>  [7]4個模擬輸入可以編程為單端型或差分輸

32、入</p><p>  [8]自動增量頻道選擇</p><p>  [9]PCF8591模擬電壓的范圍從VSS到VDD</p><p>  [10]PCF8591內置跟蹤保持電路</p><p>  [11]8-bit逐次逼近A/D轉換器</p><p>  [12]實現(xiàn)DAC增益可以通過1路模擬輸出來實現(xiàn)</p

33、><p>  原理圖如圖2-3所示:</p><p>  圖2-3 PCF8591原理圖</p><p>  PCF8591引腳信息[4]如圖2-4所示:</p><p>  圖2-4 PCF8591引腳</p><p>  AIN0~AIN3:模擬信號的輸入端。</p><p>  A0~A2:引

34、腳地址端。</p><p>  VDD、VSS:電源端(2.5V~6V)。</p><p>  SDA、SCL:I2C 總線的數(shù)據(jù)線、時鐘線。</p><p>  OSC:外部時鐘的輸入端,內部時鐘的輸出端。</p><p>  EXT:內部、外部時鐘的選擇線,EXT 接地時使用內部時鐘。</p><p>  AGND

35、:模擬信號地。</p><p>  AOUT:A/D 轉換輸出端。</p><p>  VREF:基準電源端。</p><p>  2.3 AT89C51單片機</p><p>  單片機(Microcontrollers)是一種集成電路芯片,通過超大規(guī)模集成電路技術把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多

36、種I/O口和中斷系統(tǒng)、定時器/計數(shù)器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的微型計算機系統(tǒng),在工業(yè)控制領域得到廣泛應用[5]。</p><p>  AT89C51是一種可以編程、可以擦除的只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓微型處理器,ATM

37、EL生產(chǎn)的AT89C51是一種將多功能8位CPU和閃爍存儲器組合在單個芯片中的高效微控制器。采用其AT89C51單片機制作的很多嵌入式控制系統(tǒng)不僅靈活性高而且設計方案價廉,從而深受人們青睞。</p><p>  圖2-5 AT89C51單片機</p><p>  AT89C51單片機各引腳結構如圖2-5所示[6]。</p><p><b>  引腳功能介

38、紹:</b></p><p>  [1]VCC——接電源引腳。</p><p>  [2]GND——接地引腳。</p><p>  [3]P0口:8位,漏極開路的準雙向I/O口,具有內部上拉電阻,該引腳可驅動8個LS型TTL負載。當P0口的管腳第一次寫入“1”時,被定義為高阻輸入。P0口能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FL

39、ASH編程時,P0 口作為原碼輸入口,當FLASH進行校驗時,P0輸出原碼,此時P0口外部必須被拉高。</p><p>  [4]P1口:8位,具有內部上拉電阻的準雙向I/O口,P1口緩沖器允許接收輸出4個LS型TTL負載。P1口管腳寫入“1”后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH進行編程和校驗時,P1口作為第八位地址接收。</p>

40、<p>  [5]P2口:8位,具有內部上拉電阻的準雙向I/O口,P2口緩沖器允許接收輸出4個LS型TTL負載,當P2口被寫“1”后,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。當P2口用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出

41、其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p>  [6]P3口:8位,具有內部上拉電阻的準雙向I/O口,可接收輸出4個LS型TTL負載。當P3口寫入“1”后,它被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL),這是由于上拉的緣故。</p><p>  P3口也可作為AT89C52的一些特殊功能

42、口,如下所示[7]:</p><p>  P3.0/RXD:8位準雙向并行口,串行數(shù)據(jù)輸入口</p><p>  P3.1/TXD:8位準雙向并行口,串行數(shù)據(jù)輸出口</p><p>  P3.2/:8位準雙向并行口,外部中斷0申請信號輸入端</p><p>  P3.3/:8位準雙向并行口,外部中斷1申請信號輸入端</p>&l

43、t;p>  P3.4—T0:8位準雙向并行口,定時器/計數(shù)器0外部脈沖的輸入端</p><p>  P3.5—T1:8位準雙向并行口,定時器/計數(shù)器1外部脈沖的輸入</p><p>  P3.6/:8位準雙向并行口,外部數(shù)據(jù)存儲器(RAM)寫選通</p><p>  P3.7/:8位準雙向并行口,外部數(shù)據(jù)存儲器(RAM)讀選通</p><p

44、>  P3口同時也為閃爍編程和編程校驗接收一些控制信號。</p><p>  [7]RST——復位輸入口。當振蕩器處于復位器件時,要保持RST腳的兩個機器周期的高電平時間。</p><p>  [8]ALE/——當訪問外部存儲器時,地址鎖存允許輸出電平用于鎖存地址的低位字節(jié)。在FLASH進行編程期間,其引腳能夠用于輸入編程脈沖。在平時,ALE端口以恒定不變的頻率周期輸出正脈沖信號,此

45、頻率為振蕩器頻率的1/6,所以它可用作外部輸出的脈沖或用于定時目的。但要注意的是:當作為外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如果想要禁止ALE的輸出可以在SFR8EH地址上置0。這時,ALE只有在執(zhí)行MOVX,MOVC指令時才起作用。另外,該引腳略微被拉高。微處理器在外部執(zhí)行狀態(tài)如果ALE被禁止,則置位無效。</p><p>  [9]——外部程序存儲器的選通信號。當處于外部程序存儲器取指期間,每個機器周期兩

46、次有效。但處于訪問外部數(shù)據(jù)存儲器時,這兩次有效的信號將不會出現(xiàn)。</p><p>  [10]/VPP——當保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,EA將內部鎖定為RESET;當EA端保持高電平時,此間內部程序存儲器。在FLASH進行編程的時候,此引腳也可以用于施加12V編程電源(VPP)。</p><p><b&

47、gt;  2.4 液晶顯示器</b></p><p>  LCD(Liquid Crystal Display)是液晶顯示器名稱的縮寫,我們在日常生活中隨處可見。液晶顯示器不僅具有顯示圖像質量高,而且采用數(shù)字式接口、體積小、質量輕、功耗低等優(yōu)點,所以在生活中得到廣泛應用。</p><p>  LCD1602是專門用來顯示數(shù)字、字母、符號等點陣式字符型液晶顯示模塊,常見的幾種規(guī)格

48、主要有16*1,16*2,20*2和40*2等,常見的有字符型、點陣型和筆段型。模塊內部元器件的主要構成有LCD顯示屏、控制器、列驅動器和偏壓產(chǎn)生電路[8]。本課題設計以長沙太陽人電子有限公司生產(chǎn)制造的1602液晶顯示器為例來簡單介紹其用法。常見的1602字符型液晶顯示器引腳如圖2-6所示:</p><p>  圖2-6 LCD1602引腳</p><p>  LCD1602引腳采用的是標

49、準16腳接口,其各引腳的功能如下[9]:</p><p>  引腳1:GND為接地電源。</p><p>  引腳2:VCC接5V正極電源。</p><p>  引腳3:VO為調整液晶顯示器的對比度端口,當正電源接在其端口時,對比度處于最弱狀態(tài);當?shù)仉娫唇釉谄涠丝跁r,對比度處于最高狀態(tài)(當對比度過高時就會產(chǎn)生“鬼影”,在使用時,可以通過一個10K的電位器來調整對比度

50、)。</p><p>  引腳4:RS是選擇寄存器,當其處于高電平1時,選擇數(shù)據(jù)寄存器;當其處于低電平0時,選擇指令寄存器。</p><p>  引腳5:RW是讀寫信號線,當其是高電平1時,進行讀操作;當其處于低電平時,進行寫操作。</p><p>  引腳6:E(或EN)端是使能(enable)端口,當其處于高電平1時,讀取信息;負跳變時執(zhí)行此指令。</p&

51、gt;<p>  引腳7~14:DB0~DB7是8位的雙向數(shù)據(jù)端。</p><p>  引腳15~16:空腳或背燈電源端。15引腳是背光正極端口,16引腳是背光負極[10]端口。</p><p>  3.數(shù)字電流表的設計</p><p><b>  3.1 方案論證</b></p><p><b>

52、;  (一)設計方案</b></p><p>  該數(shù)字電流表的設計主要由電壓信號采樣電路、A/D(PCF8591)轉換電路以及LCD顯示電路構成,其中采樣電路部分包括采樣電阻和差分放大電路,以及芯片電路三個模塊。</p><p>  數(shù)字電流表的設計方案如圖3-1所示。</p><p>  圖3-1 數(shù)字電流表設計方案</p><p

53、><b> ?。ǘ┯布娐访枋?lt;/b></p><p>  首先通過對論文題目的分析,根據(jù)題目要求考慮所用到的單片機,鑒于合理選取及實例的具體分解,同時考慮到本課題的單片機需求,選取AT89C51單片機作為本課題設計的單片機。AT89C51不僅可以按照常規(guī)編程方法進行,而且還可以實現(xiàn)在線編程。它能夠將通用的微處理器和Flash存儲器結合在一起,同時Flash存儲器具有可反復擦寫功能,

54、有效地降低開發(fā)成本。</p><p>  AT89C51是一種功耗低、性能高的CMOS8位微控制器,具有4K系統(tǒng)可編程Flash 存儲器,由Atmel 公司高密度非易失性存儲器技術制造。片上的Flash允許程序存儲器在系統(tǒng)可編程,也適用于常規(guī)的編程器。在單芯片上,AT89C51擁有靈巧的8 位CPU 和可在系統(tǒng)編程Flash,眾多的嵌入式控制應用系統(tǒng)都采用其作為核心部件,并且得到廣泛應用。</p>

55、<p>  再次,在進行電流測量時,電流輸入的是模擬量,而單片機只能處理數(shù)字信號,所以需要通過A/D轉換芯片進行轉換,通過篩選和分析,本課題采用PCF8591作為A/D轉換芯片。</p><p>  A/D轉換器的概念:即模數(shù)轉換(Analog to Digital Conversion),當輸入端輸入模擬量(比如電壓信號)時,會相應輸出一個與模擬量相對應的數(shù)字量(通常以二進制形式表示)。例如在參考電壓

56、VREF為5V,8位的模數(shù)轉換器情況下,當輸入的電壓為0V時,輸出的數(shù)字量為0000 0000,當輸入的電壓為5V時,輸出的數(shù)字量為1111 1111。當輸入的電壓在0V到5V之間變化時,輸出的數(shù)字量會在0000 0000到1111 1111之間變化。這樣每次輸入的電壓值都會對應輸出一個數(shù)字量,從而實現(xiàn)了模數(shù)轉換功能。</p><p>  最后,電路顯示屏部分采用的是LCD1602液晶顯示。</p>

57、<p><b>  3.2 任務指標</b></p><p>  本課題設計要求以單片機為基礎制作出數(shù)字電流表。通過該設計了解A/D轉換器的原理、51系列單片機的使用和LCD液晶顯示器的使用方法、顯示過程。</p><p>  功能要求為:(1)三位直流數(shù)字電流表;(2)量程范圍為0-100mA;(3)通過LCD顯示屏顯示待測電流的數(shù)值;(4)8通道進行電

58、流值采集。</p><p>  本設計系統(tǒng)主要通過硬件設計、軟件編程的手段來實現(xiàn)相應的要求功能。第一,根據(jù)題目設計的要求制作出能相應功能的電路圖。第二,根據(jù)電路圖編寫程序控制單片機(可以使用C語言或者VB語言,本課題采用的是C語言),使單片機能夠控制A/D轉換器進行模數(shù)轉換,并通過LCD顯示屏直接顯示出來相對應的電流值。</p><p><b>  3.3 整體電路圖</b

59、></p><p>  整體電路圖設計如圖3-2所示。</p><p>  圖3-2 數(shù)字電流表整體電路圖</p><p><b>  4.軟件設計</b></p><p>  4.1 軟件設計的主程序流程圖</p><p>  主程序設計流程圖如圖4-1所示:</p><

60、;p>  圖4-1 主程序設計流程圖</p><p>  4.2 編程語言介紹</p><p>  C語言是一門通用計算機程序設計語言,美國貝爾實驗室的Dennis M. Ritchie在1972年推出的,它的工作單元是由高級語言的基本語句與低級語言的實用性結合而成的,它不僅具有高級語言的特點,還具有匯編語言的特點。1978年后,C語言先后被移植到大、中、小及微型機上,它不僅可以作為

61、工作系統(tǒng)設計語言,編寫系統(tǒng)的應用程序,還可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它有著廣泛的應用范圍,超強的數(shù)據(jù)處理能力,不僅在軟件開發(fā)上,而且各類科研工作上都需要用到C語言,可以用來編寫系統(tǒng)軟件,三維、二維圖形和動畫,具體應用體現(xiàn)在單片機以及嵌入式系統(tǒng)開發(fā)。</p><p>  單片機C語言的優(yōu)點[11]:</p><p>  1.語言簡潔緊湊、使用靈活方便。C語言總共

62、只有32個關鍵字,9種控制語句,程序書寫形式自由,區(qū)分大小寫。</p><p>  2.豐富的運算符。C語言有著廣泛的運算符范圍,總共有34種運算符。在C語言中,賦值符號、括號、強制類型轉換等都會當作運算符處理,這樣使得C語言的運算類型極其豐富,表達式類型也呈現(xiàn)多樣化。</p><p>  3.豐富的數(shù)據(jù)類型。C語言的數(shù)據(jù)類型有整型、實型、字符型、數(shù)組類型、指針類型、結構體類型、共用體類型

63、等。能夠實現(xiàn)各種復雜的數(shù)據(jù)結構的運算,同時引入指針概念,使其具有更高的程序效率。</p><p>  4.靈活使用的表達方式。C語言具有多種運算符和表達式值的方法,可通過多種途徑對問題的表達,其程序設計更主動、靈活。</p><p>  5.可以直接訪問物理地址,對硬件進行操作。</p><p>  6.生成的目標代碼質量高,程序執(zhí)行效率高。</p>

64、<p>  7.具有很好的移植性能。</p><p>  8.很強的表達力。C語言的數(shù)據(jù)結構和運算符非常豐富,包含整型、數(shù)組類型、指針類型和聯(lián)合類型等,可以實現(xiàn)各種數(shù)據(jù)結構的運算。</p><p>  4.3 Protel99SE軟件的介紹</p><p>  Protel99SE是澳大利亞Protel Technology公司研制開發(fā)的,是一個全32位的

65、電路板設計軟件,在電子行業(yè)的CAD軟件中,是一款常用的電子電路設計軟件,也是電子設計者的首選軟件。早期的Protel主要作為印制板自動布線工具使用,對運行的環(huán)境要求很低,但它的功能也較少,只有電路原理圖繪制與印制板設計功能,其印制板自動布線的布通率也低,而現(xiàn)今的Protel安裝于Windows9X/2000/NT操作系統(tǒng)下,采用設計庫管理模式,可以進行聯(lián)網(wǎng)設計,具有很強的數(shù)據(jù)交換能力和開放性及3D模擬功能,可以用于設計原理圖、設計印制電

66、路板、設計可編程邏輯器件和電路仿真等,可以設計32個信號層,16個電源--地層和16個機加工層,同時還兼容一些其它設計軟件的文件格式,如ORCAD,PSPICE,EXCEL等,其多層印制線路板的自動布線可實現(xiàn)高密度PCB的100%布通率[12]。用戶如果需要進行軟件升級或獲取更詳細的資料,可以到公司網(wǎng)址:www.protel.com查詢。</p><p>  Protel99SE中主要功能模塊如下:</p&

67、gt;<p> ?。?)Advanced Schematic 99SE(原理圖設計系統(tǒng))</p><p>  該模塊包括電路圖編輯器、電路圖元器件編輯器和各種文本編輯器,主要用于電路原理圖的設計、原理圖元件的設計和生成各種原理圖報表等。</p><p> ?。?)Advanced PCB 99SE(印刷電路板設計系統(tǒng))</p><p>  該模塊提供了

68、一個功能強大,可以交互友好的PCB設計環(huán)境,主要用來進行PCB設計、元器件封裝設計、報表的生成及PCB輸出。</p><p> ?。?)Advanced Route 99SE(自動布線系統(tǒng))</p><p>  該模塊是一個集成無網(wǎng)格自動進行布線的系統(tǒng),有著高效的布線效率。</p><p>  (4)Advanced Integrity 99SE(PCB信號完整性分

69、析)</p><p>  該模塊能夠進行精確的板級物理信號分析,可以檢查串擾、過沖、下沖、延時和阻抗等問題,并自動給出相應的具體解決方案。</p><p> ?。?)Advanced SIM 99SE(電路仿真系統(tǒng))</p><p>  該模塊是一個基于最新的Spice3.5標準仿真器,給用戶的設計前端提供了完整、直觀的問題解決方案。</p><

70、p> ?。?)Advanced PLD 99SE(可編程邏輯器件設計系統(tǒng))</p><p>  該模塊是一個集成性PLD開發(fā)環(huán)境,可通過原理圖或者CUPL硬件描述語言來作為設計前端,能夠提供工業(yè)標準的JEDEC輸出。</p><p>  5.系統(tǒng)調試及實物制作</p><p>  5.1 硬件系統(tǒng)的調試</p><p><b>

71、;  (一)元器件焊接</b></p><p>  在進行焊接前先要對整個電路板進行詳細的檢查。首先用萬用表對印制的電路板進行檢查,主要是檢測電路板是否存在斷路等情況,然后對照著電路原理圖與PCB圖將相應的元器件進行焊接。</p><p><b> ?。ǘ╇娐窚y試</b></p><p>  電路板焊接完成后,在進行通電測試之前先

72、對元器件的引腳主要進行兩個方面的檢查:第一檢查引腳是否出現(xiàn)虛焊或者其他信號線是否存在短路情況;第二是針對引腳功能的檢查。</p><p>  5.2 系統(tǒng)軟件的調試</p><p>  在硬件調試進行一切正常之后,接下來我們需要做的就是軟件調試。具體調試步驟如下:</p><p>  1.調試存儲模塊。確保存儲模塊能夠進行讀寫信息。</p><p

73、>  2.調試單片機和數(shù)模轉換模塊。</p><p><b>  3.調試顯示模塊。</b></p><p>  5.3 整體系統(tǒng)的調試</p><p>  在進行完硬件和軟件部分的調試和檢測之后,最后我們需要將程序捎入單片機中。提供3V的電壓源,使整個模塊均處于正常的工作狀態(tài),對電流表分別進行最大值和最小值的檢測。在已知大致估計的電流數(shù)

74、值的情況下,如果數(shù)字電流表顯示屏測試的數(shù)值沒有較大的偏差,則整體調試成功。</p><p>  5.4 實際硬件制作結果</p><p>  根據(jù)電路圖自己制作出實物,其測試結果:能正常測量0——100mA電流,達到畢業(yè)設計的大部分設計要求。實物測試結果如圖5-1所示:</p><p>  圖5-1 實際制作效果圖</p><p><b

75、>  6.總結與展望</b></p><p>  至此為止,本課題設計論文的整體內容已經(jīng)基本完成,本章主要講述對前面內容的撰寫以及實物制作的總結,并在此基礎上,提出對以后的工作建議和設想。隨著電子科學技術的快速發(fā)展,未來的數(shù)字電流表需要向更精準,更智能方向發(fā)展。數(shù)字電流表由于其讀數(shù)準確,精度高,測量量程大,效率快等優(yōu)點,在日常生活中得到較為廣泛的應用。</p><p> 

76、 本設計是以單片機AT89C51芯片為核心的數(shù)字電流表,介紹了51單片機和A/D轉換器的結構,從而更深層次地分析數(shù)字電流表的設計原理、軟件仿真及其檢測調試等一系列的內容。先從數(shù)字電流表理論入手結合數(shù)字電壓表的設計原理,利用取電阻上的電流來達到測試相應電流的目的。同時給出了使用Protel軟件來設計原理圖的步驟以及實物制作的流程。</p><p>  當今社會是信息化的時代,而數(shù)字電流的測量又在其中占據(jù)著一個非常重

77、要的地位,電流表作為測量儀器中非常關鍵的器件,有著非常廣闊的應用前景。研究出精度高、性能優(yōu)的電流表有重大的實際價值和更深遠的意義。</p><p><b>  參考文獻</b></p><p>  [1]胡紅博. 基于單片機控制的新型交流電壓表系統(tǒng)[C]. 貴州:遵義師范學院,2008. </p><p>  [2]康華光. 模擬電子技術基礎(

78、第五版)[M]. 北京:高等教育出版社,2006.</p><p>  [3]康華光. 數(shù)字電子技術基礎(第五版)[M]. 北京:高等教育出版社,2006.</p><p>  [4]萬文略. 單片機原理及應用技術[M]. 重慶:重慶大學出版社,2004.</p><p>  [5]張毅剛. 單片機原理及接口技術[M]. 北京:人民郵電出版社,2011.</p

79、><p>  [6]王彥朋. 大學生電子設計與應用[M]. 北京:中國電力出版社,2007.</p><p>  [7]張毅剛,彭喜元,董繼成. 單片機原理及應用[M]. 北京:高等教育出版社,2003.</p><p>  [8]先鋒工作室. 單片機程序設計實例[M]. 北京:清華大學出版社,2003.</p><p>  [9]萬福君,淵松峰

80、. 單片微機原理系統(tǒng)設計與應用[M]. 合肥:中國科學技術大學出版社, 2001.</p><p>  [10]戴佳,陳斌. 51單片機應用系統(tǒng)開發(fā)典型實例[M]. 北京:中國電力出版社,2005.</p><p>  [11]紀綱. C程序設計實用教程[G]. 北京:中國鐵道出版社,2009.</p><p>  [12]關健. 電子CAD技術[S]. 北京:電子

81、工業(yè)出版社出版社,2006.</p><p><b>  致 謝</b></p><p>  光陰似箭,歲月如梭。經(jīng)過幾個月的時間終于把畢業(yè)論文撰寫完成,在寫作畢業(yè)論文的過程中遇到了許多問題,讓我也發(fā)現(xiàn)了自己的很多不足之處,未能深刻理解以前學習的理論知識,比如未能熟練掌握Protel軟件的使用、對單片機C語言匯編程序掌握得不嫻熟,但都在老師和同學的大力幫助下順利解決

82、。經(jīng)過本次設計過程,我不僅把以前所學的知識重新溫故一遍,而且也學到了許多課外理論知識,更重要是把所學的知識學以致用,提高了動手能力,最終完成了本次設計。在此特別感謝我的指導老師-王**老師,她對我無私的指導和幫助。在論文撰寫過程中王老師給我提供了很多有使用價值的建議和指導,王老師嚴謹?shù)膽B(tài)度,一絲不茍的作風讓我深受感動。如果沒有王老師的大力幫助我不可能獨自完成整個畢業(yè)論文的設計。在此向王老師深深的感謝和敬意。</p><

83、;p>  同時感謝這篇論文所涉及的各位學者和研究者。本文借鑒了數(shù)位學者的研究成果,如果沒有這些學者的學術研究成果啟發(fā)和幫助,我也很難獨立完成本篇論文的撰寫。感謝我的同學和朋友,在我寫撰論文過程中給予我了很多資料支持和寶貴的意見,還在論文的撰寫提供意見和排版的難題過程中提供幫助。在此我一一表示衷心的感謝!</p><p>  由于我的水平有限,所寫的論文中肯定會有不足之處,望請各位老師批評和指正!</p

84、><p><b>  附 錄</b></p><p>  //////////////////////////////////////////////////////////////////顯示函數(shù)</p><p>  #include"MAIN_HEADER.h"</p><p>  #include

85、"LCD1602.h"</p><p>  #include"KEY.h"</p><p>  /*******************************************************************/</p><p>  /*

86、 */</p><p>  /* 延時函數(shù) */</p><p>  /* */</p>

87、<p>  /*******************************************************************/</p><p>  void Delayms(uint a)</p><p><b>  {</b></p><p><b>  uchar i;</b><

88、/p><p>  while(a--)</p><p><b>  {</b></p><p>  for(i=0;i<120;i++);</p><p><b>  }</b></p><p><b>  }</b></p><p

89、>  /*******************************************************************/</p><p>  /* */</p><p>  /* LCD初始化設定

90、 */</p><p>  /* */</p><p>  /*******************************************************************/&l

91、t;/p><p>  void Lcd_Init()</p><p><b>  { </b></p><p>  LCD_RS = 0;</p><p>  LCD_RW = 0;</p><p>  LCD_EN = 0;</p><p>  Lcd_Wcmd(0x01);

92、 </p><p>  Lcd_Wcmd(0x38); </p><p>  Lcd_Wcmd(0x0c); </p><p>  Lcd_Wcmd(0x06); </p><p>  Lcd_Wcmd(0xd0);</p><p><b>  }</b&g

93、t;</p><p>  /*******************************************************************/</p><p>  /* */</p><p>  /* 清屏函數(shù)

94、 */</p><p>  /* */</p><p>  /**************************************************

95、*****************/</p><p>  void Lcd_Clear()</p><p><b>  {</b></p><p>  Lcd_Wcmd(0x01);</p><p>  Delayms(1);</p><p><b>  }</b></

96、p><p>  /*******************************************************************/</p><p>  /* */</p><p>  /*寫指令數(shù)據(jù)到LCD

97、 */</p><p>  /*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。 */</p><p>  /* */&

98、lt;/p><p>  /*******************************************************************/</p><p>  void Lcd_Wcmd(uchar cmd)</p><p>  { </p><p>  LCD_RS =

99、0;</p><p>  LCD_RW = 0;</p><p>  LCD_EN = 0; </p><p><b>  P0 = cmd;</b></p><p>  Delayms(1);</p><p>  LCD_EN = 1;</p><p>  Delayms

100、(1);</p><p>  LCD_EN = 0; </p><p><b>  }</b></p><p>  /*******************************************************************/</p><p>  /*

101、 */</p><p>  /*寫顯示數(shù)據(jù)到LCD */</p><p>  /*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。 */<

102、/p><p>  /* */</p><p>  /*******************************************************************/</p><p>  void Lcd_Wdat(uch

103、ar dat)</p><p>  { </p><p>  LCD_RS = 1;</p><p>  LCD_RW = 0;</p><p>  LCD_EN = 0;</p><p><b>  P0 = dat;</b></p>

104、<p>  Delayms(1);</p><p>  LCD_EN = 1;</p><p>  Delayms(1);</p><p>  LCD_EN = 0; </p><p><b>  }</b></p><p>  /**************************

105、*****************************************/</p><p>  /* */</p><p>  /* 設定顯示位置 */

106、</p><p>  /* */</p><p>  /*******************************************************************/</p><p>  void Lcd_Set_

107、xy(uchar hang,uchar lie)</p><p><b>  {</b></p><p><b>  uchar a;</b></p><p>  if(hang == 1) a = 0x80;</p><p>  if(hang == 2) a = 0xc0;</p>

108、<p>  a = a + lie - 1;</p><p>  Lcd_Wcmd(a);</p><p>  Delayms(1);</p><p><b>  }</b></p><p>  /********************************************************

109、***********/</p><p>  /* */</p><p>  /* 寫字符串函數(shù) */</p><p>  /*

110、 */</p><p>  /*******************************************************************/</p><p>  void Lcd_String(uchar *p)</p><p&

111、gt;<b>  {</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if(*p == '\0') break;</p><p>  Lcd_Wdat(*p); </p>&

112、lt;p><b>  p++;</b></p><p>  Delayms(1);</p><p><b>  }</b></p><p><b>  }</b></p><p>  ////////////////////////////////////////////

113、////////////////////顯示頭文件</p><p>  #ifndef_LCD1602_</p><p>  #define _LCD1602_</p><p>  #include <reg52.h></p><p>  #include <intrins.h></p><p&g

114、t;  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit LCD_RS = P1^0; </p><p>  sbit LCD_RW = P1^1;</p><p>  sbit LCD_EN = P1^2;&

115、lt;/p><p>  extern void Delayms(uint a);</p><p>  extern void Lcd_Init();//LCD1602初始化函數(shù)</p><p>  extern void Lcd_Wcmd(uchar cmd);//LCD1602寫命令函數(shù)</p><p>  e

溫馨提示

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

評論

0/150

提交評論