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

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b> ?。?013屆)</b></p><p> 題 目基于單片機的雙機通信數字電壓表</p><p> 學 院理學院</p><p> 專 業(yè)光信息科學與技術</p><p> 班

2、 級</p><p> 學 號</p><p> 學生姓名</p><p> 任課教師</p><p> 完成日期2013年05月05日</p><p><b>  摘 要</b></p><p>  在日常的生活,學習和科研活動中電壓作為一個最常被測量的物理量起

3、著舉足輕重的作用,作為一個如此重要的參量,電壓的測量方式對其有很大的影響。在以數字化、智能化、科技化為主的今天,數字電壓表以其高精度、高抗干擾能力、高擴展性、高集成能力和方便的數據傳輸,逐步取代指針式電壓表成為電壓測量的主流方式。本論文主要對數字電壓表的發(fā)展歷史和趨勢,單片機的發(fā)展歷史和趨勢,單片機的應用,單片機的外部電路,單片機之間的數據傳輸,數碼管顯示電路,硬件制作和軟件設計進行分析。</p><p>  經

4、過實驗的證明,本論文設計的基于單片機的雙機通信數字電壓表無論在功能還是實際應用上都具有傳統(tǒng)指針電壓表無法比擬的優(yōu)點。它可以被廣泛地應用于學校、科研、國防等各個領域,為推動數字信息化作出應有的貢獻。</p><p>  關鍵詞:PIC16F877A;數字電壓表;電壓;雙機通信;數碼管顯示</p><p><b>  ABSTRACT</b></p><

5、;p>  In daily life, learning and research activities of the voltage as one of the most frequently measured physical quantity plays an important role. As such an important parameter, voltage measurement has a great inf

6、luence on it. In the digital, intelligent, technology of today, digital voltmeter with its high precision, high anti-interference ability, high scalability and high integration ability and convenient data transmission, g

7、radually replace the pointer voltmeter has become the mainstream in </p><p>  After experiments, the digital communication voltmeter of this paper based on MCU both in function and practical application has

8、the traditional pointer voltmeter incomparable advantages. It can be widely used in schools, scientific research, national defense and other fields, and make due contributions to the promotion of digital information.<

9、/p><p>  Keywords: PIC16F877A; Digital voltmeter; Voltage; Communication; Digital tube display</p><p><b>  目 錄</b></p><p><b>  1.緒論1</b></p><p> 

10、 1.1數字電壓表的發(fā)展歷程1</p><p>  1.2國內外的發(fā)展現狀與趨勢2</p><p>  1.3課題的意義和目的3</p><p>  1.4本文所做的主要工作4</p><p><b>  2.硬件設計5</b></p><p><b>  2.1基礎設計5&

11、lt;/b></p><p>  2.1.1設計指標5</p><p>  2.1.2器件的選擇5</p><p>  2.2單片機介紹5</p><p>  2.2.1單片機基本介紹5</p><p>  2.2.2單片機基本結構6</p><p>  2.2.3采用PIC16

12、F877A的原因7</p><p>  2.2.4 PIC16F877A芯片主要性能參數8</p><p><b>  2.3總體設計9</b></p><p>  2.4仿真電路圖及工作過程簡介10</p><p>  2.5總體制作流程11</p><p>  2.6 雙機通信SPI

13、介紹11</p><p>  2.6.1 主控發(fā)送模式12</p><p>  2.6.2 主控接收模式13</p><p><b>  3.軟件設計15</b></p><p>  3.1總體設計流程15</p><p>  3.2編程語言的選擇16</p><p

14、>  3.3主要模塊簡單程序17</p><p>  4.開發(fā)環(huán)境介紹20</p><p><b>  參考文獻22</b></p><p><b>  1.緒論</b></p><p>  1.1數字電壓表的發(fā)展歷程</p><p>  數字電壓表(digita

15、l voltmeter)簡稱DVM。市一中利用模—數轉換原理測量電壓值,并以數字形式顯示測量結果的儀表。它是諸多數字化儀表的基礎與核心,電壓表的數字化是將連續(xù)的模擬量如直流電壓轉換成不連續(xù)的離散的數字形式并加以顯示,這就明確區(qū)別于傳統(tǒng)的以指針加刻度盤進行讀數的方法。避免了讀數因視差和視覺疲勞而產生的誤差。目前,A/D轉換器是數字電壓表的內部核心部件,轉換器的精度很大程度上影響著數字電壓表的準確度。</p><p>

16、;  數字電壓表開始出現于20世紀50年代。那時的數字電壓表的特點是運用各種原理來實現數模轉換。由于精密點測量的需求,數字電壓表開始向高精度、高位數方向發(fā)展,于是出現了所謂復合性原理的儀表。如1971年日本研制的TR-6567;1973年英國研制的SM-215.從此電壓表進入了高精度階段。在后來,由于電子技術、大規(guī)模集成電路及計算機技術的發(fā)展,人們很快就研制出了微處理器數字電壓表。實現了數字電壓表可變程序和數據自動化處理。</p&

17、gt;<p>  從性能來看:數字電壓表的發(fā)展從一九五二年美國NLS公司由四位電子管數字電壓表精度千分之一到現在已經出現8位數字電壓表。參數可測量直流電壓、交流電壓、電流、阻抗等。測量自動化程度不斷提高,可以和計算機配合顯示、計算結果、然后打印出來。目前世界上美國FLUKE公司,在直流和低頻交流電量的校準領域居國際先進水平。例如該公司生產的“4700A”多功能校準器和“8505”危機數字多用電壓表,可用8位顯示,直流精度可

18、達到±5/10-6,讀書分辨力為0.1μV。帶有A/D變換模式、數據輸出接口形式IEEE-488。具有比率測量軟件校準和有交流電阻、電流選件。還具有高精度電壓校準器“5400A”、“5200A”、“5450A”等數字儀表,都是作為一級計量站和國家級計量站使用的標準儀表。還有英國的“7055”數字電壓表采用脈沖調制技術。日本橫河公司的“2501”型采用三次采樣等等在不斷的蓬勃發(fā)展。</p><p>  從

19、總的發(fā)展歷程來看:數字電壓表自1952年問世以來,已有50年多年的發(fā)展史,大致經歷了五代產品。第一代產品是20世紀50年代問世的電子管數字電壓表,第二代產品屬于20世紀60年代出現的晶體管數字電壓表,第三帶產品為20世紀70年代研制的中、小規(guī)模集成電路的數字電壓表。近年來,國內外相繼推出有大規(guī)模集成電路(LSI)或超大規(guī)模集成電路(VLSI)構成的數字電壓表、智能數字電壓表,分別屬于第四代、第五代產品。它們不僅開創(chuàng)了電子測量的先河,更以

20、高準確度、高可靠性、高分辨力、高性價比等優(yōu)良特性而受到人民的青睞。</p><p>  1.2國內外發(fā)展現狀與趨勢 </p><p>  這些年來,隨著科技化進程的加快,數字電壓表作為電壓表的一個分支,在近幾十年間得到了巨大的發(fā)展,構成數字電壓表的核心器件已從早起的中小規(guī)模電路跨入到大規(guī)模ASIC(專用集成電路)階段。數字電壓表涉及的范圍也從傳統(tǒng)的測量擴展至自動控制、傳感、通信等領域,展示

21、了廣闊的應用前景。</p><p>  傳統(tǒng)電壓表的設計思路主要分為:用電流計和電阻構成的電壓表;用中小規(guī)模集成電路構成的電壓表;用大規(guī)模ASIC(專用集成電路)構成的電壓表。這幾種電壓表的設計方式各有優(yōu)勢和缺陷,分別適用于幾種特定的應用環(huán)境,同時,也為之后很多特殊功用的電壓表的設計提供了借鑒和依據。</p><p>  進入21世紀,隨著信息大爆炸時代的來臨,與信息技術相關方面的發(fā)展也一

22、日千里,電壓表也經歷了從單一測量電壓值向數據處理、自動控制等多功能過度的這一歷程,特別是隨著計算機技術的發(fā)展智能化技術必將被更加廣泛地使用。因此,將電壓表與計算機技術相結合的智能化電壓表成為了21世紀的新的主題。目前微處理器技術取得了跨越性的進展,一個內含微處理器的電壓表意味著計算機技術向電壓表等這類儀器儀表的移植,微處理器所具有的軟件功能使儀器 呈現出有某種延伸,強化的作用。這相對于過去傳統(tǒng)的、純硬件的儀器來說是一種新的突破,其發(fā)展?jié)?/p>

23、力十分巨大,這已為70年代以來儀表發(fā)展的歷史所證實。</p><p>  下面從幾個方面闡述新型數字儀表的發(fā)展趨向。</p><p> ?。?)廣泛采用新技術,不斷開發(fā)新的產品</p><p>  隨著科學技術的不斷發(fā)展,高新技術研究成果的廣泛采用、跨學科的綜合設計、高精尖的制造技術等,使儀器儀表領域發(fā)生了根本性的邊個?,F代儀器儀表作為典型的高科技產品,突破了傳統(tǒng)的

24、光、機、電構架,向著計算機化、網絡化、智能化、多功能化的方向迅速發(fā)展。例如:A/D轉換器。20世紀90年代世界各國相繼研發(fā)了新的A/D轉換技術。其中有四斜率A/D轉換技術(美國)、余數再循環(huán)技術(美國)、自動校準技術(英國)、固態(tài)真有效值轉換技術(英國)、約瑟夫森效應基準源(2個納米穩(wěn)定度)、智能化專用芯片(80C51系列,荷蘭)等,這些新技術使數字電壓表向高準確度、高可靠性及智能化、低成本方向發(fā)展。另外,集成電路的發(fā)展使電壓表只在外圍

25、配置少量元器件,即可構成完整的智能儀表,可以完成儲存、計算、比較、控制等多項功能</p><p><b> ?。?)向模塊化發(fā)展</b></p><p>  新一代數字儀表正向著標準模塊化的方向發(fā)展。今后許多數字儀表將由標準化、通用化、系列化的模塊所構成,這樣可以使整個數字儀表的布局更加合理,給電路設計和安裝調試以及維修帶來很大的方便。</p><

26、p><b> ?。?)多重顯示儀表</b></p><p>  為徹底解決數字儀表不便于觀察連續(xù)變化量的技術難題;“數字/模擬條圖”雙顯示儀表已成為國際流行款式,它兼有數字儀表準確度高、模擬式儀表便于觀察被測量的變化過程及變化趨勢這兩大優(yōu)點。模擬條圖大致可分為液晶條圖、等離子光柱顯示器和LED光柱三大類,依據其不同的使用場所選擇不同的顯示方式。</p><p>

27、<b>  (4)可擴展能力強</b></p><p>  例如:直流數字電壓表本身可以擴展成交流電壓表、交直電流表、峰值表、功率表等還可以附加智能化??梢詫χ绷鲾底蛛妷罕砀郊佑嬎?、保持、測量值比較、時間設定,上、下限設定及自動控制等多種功能。</p><p><b> ?。?)操作簡單化</b></p><p>  集成

28、電路的發(fā)展使數字電壓表只在外圍配置少量元件,即可構成完整的智能儀表,可以完成儲存、計算、比較、控制等多項功能。這使得按鍵變少,操作簡單。但是數字電壓表并不能完全取代指針式的電壓表,在反映電壓的連續(xù)變化和變化趨勢方面不如指針表的直觀。這也是亟待解決的問題之一。</p><p>  綜上所述,近年來雖然智能儀器儀表有了很大的發(fā)展,但是總的看來,硬件的發(fā)展在一定程度上是軟件無法比擬的,各種新的元器件,集成電路的發(fā)展將硬

29、件在智能化儀器儀表中的作用展現得淋漓盡致。然而,智能儀器儀表的內涵是軟件,從如今的發(fā)展程度來看,軟件的作用還遠遠沒有發(fā)揮出來。目前智能儀器儀表還處于蓬勃發(fā)展時期,數字電壓表未來的發(fā)展趨勢會朝著具有微控制處理芯片的方向,甚至可以與人工智能相結合出現全新的工作模式。</p><p>  1.3課題的意義和目的</p><p>  在電量的測量中,頻率、電壓和電流是三個最基本的被測量量,其中電壓

30、量是最為經常的被測量。點穴參量的測量技術所射擊的范圍極廣,運用于學校、科研、國防等各種領域,為實驗室和工業(yè)現場提供測試。而且隨著電子技術的不斷發(fā)展,在數字化、智能化、科技化為主的今天。數字電壓表已成為電壓表設計的主要趨勢,在當前電壓測量系統(tǒng)中起著非常重要的作用。更是在需要測量高精度的電壓時,數字電壓表就是一種必不可少的測量儀器。電氣測量中,,電壓是一個非常重要的參數。如何精確地測量模擬信號的電壓值,一直是電測儀器研究的內容之一。而數字電

31、壓表是通用儀器中被廣泛使用的一種測試儀器,很多電量或非電量經變化后都需要數字電壓表完成測試。因此,數字電壓表被普遍地使用于科研和生產測試中。</p><p>  傳統(tǒng)的指針式電壓表精度低、功能單一,不能滿足數字化時代的需求,采用單片機的數字電壓表不僅精度高、抗干擾能力強、可擴展性強、集成方便,還可與PC進行實時通信。所以,這種類型的電壓表無論在功能和實際應用上都具有傳統(tǒng)指針電壓表無法比擬的有點,這使得它的開發(fā)和應

32、用都具有良好的前景。</p><p>  如今是一個信息爆炸的時代,信息之間的傳輸成為了主流,課題中pic單片機的雙機通信系統(tǒng)很好地完成了信息之間的傳遞及共享,此課題還可進一步形成多機之間的數據傳遞 </p><p>  1.4本文所做主要工作</p><p>  1. 對系統(tǒng)總體框架進行分析,根據系統(tǒng)所要實現的目標,設計基于單片機的數字電壓表的硬件系統(tǒng),雙機之間的

33、數據傳輸方式,并以模塊設計法為依據進行系統(tǒng)各個部分的具體設計。</p><p>  2. 設計基于單片機的數字控制系統(tǒng),發(fā)揮單片機的處理功能強大,運算速度快的特點,對被測電壓進行實時檢測和顯示。</p><p>  3. 利用protues軟件對數字電壓表進行電路仿真,并編寫相關程序使數字電壓表能夠更加合理高效地完成對電壓值的測量。</p><p>  4. 加入雙

34、機通信后對系統(tǒng)進行整機調試,使得基于單片機的雙機通信數字電壓表實驗結果盡可能滿足設計指標。</p><p><b>  2.硬件設計</b></p><p><b>  2.1基礎設計</b></p><p><b>  2.1.1設計指標</b></p><p>  在日常工

35、作、教學和科研中,電壓表是必不可少的,傳統(tǒng)的數字電壓表設計通常以大規(guī)模ASIC(專用集成電路)為核心器件,并在其周圍輔以一些中、小規(guī)模集成電路和顯示構件,但是這種設計方式老舊,可擴展能力差,難以滿足日益發(fā)展的電子工業(yè)要求。而本論文中設計的數字電壓表以微處理芯片(單片機)為核心器件,具有極高的靈活性、穩(wěn)定性和可擴展性,而且操作和維修簡單,抗干擾能力強,極其適用于工作、教學和科研中使用。由于單片機芯片PIC16F877A的限制,本文中設計的

36、滯留數字電壓表精度為±0.05V,測量范圍為0~5V。</p><p>  2.1.2器件的選擇</p><p>  PIC16F877A芯片2塊</p><p>  OP07CP(運算放大器)1個</p><p>  4.0MHz晶振一個</p><p><b>  22pf電容</b>

37、;</p><p><b>  1K和10K電阻</b></p><p>  七位一體共陽極數碼管2個</p><p><b>  2.2單片機介紹</b></p><p>  2.2.1單片機基本介紹</p><p>  單片微型計算機簡稱單片機,是典型的嵌入式微控制器(M

38、icrocontroller Unit),常用英文字母的縮寫MCU表示單片機,單片機又稱單片微控制器,它不是完成莫一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。單片機由運算器,控制器,存儲器,輸入輸出設備構成,相當于一個微型的計算機(最小系統(tǒng)),和計算機相比,單片機缺少了外圍設備等。一塊芯片即為一臺計算機。它具有體積小、質量輕、價格便宜等優(yōu)點,為學習、應用和開發(fā)提供了便利條件。同時,它最早是被用在工業(yè)控制領域。</p&

39、gt;<p>  由于單片機在工業(yè)控制領域被廣泛地應用,使其由僅有CPU的專用處理器芯片發(fā)展而來。最早的設計理念是通過將大量外圍設備和CPU處理器集成在一個芯片當中,使計算機系統(tǒng)變得更小,更容易集成進更加復雜并且對體積要求嚴格的控制設備當中。</p><p>  INTEL的8080是最早按照這種思想設計出的處理器,當時的單片機都是8位或4位的。其中最成功的是INTEL的8051,此后在8051芯片

40、的基礎上發(fā)展出了MCS51系列單片機。因為其簡單可靠的性能及不錯的穩(wěn)定性獲得了很大的好評。盡管2000.年之后ARM已經發(fā)展出了32位主頻超過300M的高端產品,但是直到現在8051的單片機還是在廣泛地被使用。在很多方面單片機甚至比專用的處理器更加適合應用于嵌入式系統(tǒng)。</p><p>  相愛年代人類生活中所用的幾乎所有的電子產品中都會集成有單片機。包括手機、電話、計算器、家用電器、電子玩具、掌上電腦以及鼠標的

41、電子產品中都要用到單片機。汽車的控制面板中配備有40多片單片機,復雜的工業(yè)控制系統(tǒng)甚至可能有數百片單片機在同時工作!</p><p>  2.2.2單片機的基本結構</p><p>  運算器:運算器由運算部件——算術邏輯單元(Arithmetic & Logical Unit,簡稱ALU)、累加器和寄存器等幾部分組成。ALU的作用是把傳來的數據進行算術或邏輯運算,輸入來源為兩個8

42、位數據,分別來自累加器和數據寄存器。ALU能完成對這兩個數據進行加、減、與、或、比較大小等操作,最后將結果存入累加器。例如,兩個數6和7相加,在相加之前,操作數6放在累加器中,7放在數據寄存器中,當執(zhí)行加法指令時,ALU即把兩個數相加并把結果13存入累加器,取代累加器原來的內容6。運算器有兩個功能:(1) 執(zhí)行各種算術運算。(2) 執(zhí)行各種邏輯運算,并進行邏輯測試,如零值測試或兩個值的比較。運算器所執(zhí)行全部操作都是由控制器發(fā)出的控制信號

43、來指揮的,并且,一個算術操作產生一個運算結果,一個邏輯操作產生一個判決。   </p><p>  控制器:控制器由程序計數器、指令寄存器、指令譯碼器、時序發(fā)生器和操作控制器等組成,是發(fā)布命令的“決策機構”,即協(xié)調和指揮整個微機系統(tǒng)的操作。其主要功能有:(1) 從內存中取出一條指令,并指出下一條指令在內存中的位置。(2) 對指令進行譯碼和測試,并產生相應的操作控制信號,以便于執(zhí)行規(guī)定的動作。(3) 指揮并控制CP

44、U、內存和輸入輸出設備之間數據流動的方向。微處理器內通過內部總線把ALU、計數器、寄存器和控制部分互聯,并通過外部總線與外部的存儲器、輸入輸出接口電路聯接。外部總線又稱為系統(tǒng)總線,分為數據總線DB、地址總線AB和控制總線CB。通過輸入輸出接口電路,實現與各種外圍設備連接。   </p><p>  主要寄存器:(1)累加器A:累加器A是微處理器中使用最頻繁的寄存器。在算術和邏輯運算時它有雙功能:運算前,用于保存一

45、個操作數;運算后,用于保存所得的和、差或邏輯運算結果。(2)數據寄存器DR ,數據寄存器通過數據總線向存儲器和輸入/輸出設備送(寫)或?。ㄗx)數據的暫存單元。它可以保存一條正在譯碼的指令,也可以保存正在送往存儲器中存儲的一個數據字節(jié)等等。(3)指令寄存器IR和指令譯碼器ID ,指令包括操作碼和操作數。指令寄存器是用來保存當前正在執(zhí)行的一條指令。當執(zhí)行一條指令時,先把它從內存中取到數據寄存器中,然后再傳送到指令寄存器。當系統(tǒng)執(zhí)行給定的指令

46、時,必須對操作碼進行譯碼,以確定所要求的操作,指令譯碼器就是負責這項工作的。其中,指令寄存器中操作碼字段的輸出就是指令譯碼器的輸入。(4)程序計數器PC ,PC用于確定下一條指令的地址,以保證程序能夠連續(xù)地執(zhí)行下去,因此通常又被稱為指令地址計數器。在程序開始執(zhí)行前必須將程序的第一條指令的內存單元地址(即程序的首地址)送入PC,使它總是指向下一條要執(zhí)行指令的地址。(5)地址寄存器AR ,地址寄存器用于保存當前CPU所要訪問的內存單元或I/

47、O設</p><p>  2.2.3采用PIC16F877A的原因</p><p>  PIC(Peripheral Interface Controller)是美國微芯公司(Microchip Technology Inc)生產的單片機。是用來開發(fā)從而去控制外圍設備的一種集成電路(IC)。一種具有分散功能的CPU。相對于人類來說,大腦就是我們的CPU。PIC的共享部分就相當于是人的神經系

48、統(tǒng)。它們的最高操作頻率一般都在20MHz左右,用來寫程序的存儲器容量大約1K—4K字節(jié)。</p><p>  PIC內部是由程序存儲器(ROM)、數據存儲器(RAM)、計算單元和外圍借口電路所組成。</p><p>  論文中設計所用的單片機是PIC16F87X系列。引腳功能圖如下</p><p>  圖2.1 PIC16F877單片機引腳圖</p>

49、<p>  在PIC16F877單片機中,該40腳封裝的型號共有5個并行端口,分別是RA、RB、RC、RD、RE。RA包含6個引腳,RE包含3個引腳,剩下三個端口都包含8個引腳。由于PIC16F877屬于8位單片機,因此每個端口都有數量不超過8個的引腳構成。每個端口中的每根引腳都支持軟件單獨編程,設定為輸出淫叫或者輸入引腳。其中有些I/O引腳和單片機內部的某些功能部件或者其他外圍的外接信號限進行了復用,也就是說,既可以作為普通

50、I/O引腳,又可以作為某些功能部件或外圍電路的外接引腳。</p><p>  以下是各個端口的特色簡要介紹:</p><p>  RA口:兼?zhèn)?條模/數轉換器的模擬量輸入通道;</p><p>  RB口:具有電平變化中斷和弱上拉功能;</p><p>  RC口:復合的功能多,3種串行通信接口的外接引腳都有此引出;</p>&

51、lt;p>  RD口:兼做并行從動端口的8位數據吞吐引腳;</p><p>  RE口:兼做并行從動端口的3條控制信號引腳,以及3條模/數轉換器的模擬量輸入通道。</p><p>  PIC16F877單片機的主要特點</p><p> ?。?)總線結構:PIC的總線結構是哈佛結構,指令空間和數據空間是完全分開的。一個用于指令,一個用于數據,正因為可以對程序和

52、數據進行同時訪問,這樣就大大提高了數據的吞吐率。</p><p> ?。?)流水線結構:PIC的提取指令和執(zhí)行采用雙指令流水線結構,當一條指令被執(zhí)行時,嚇一跳指令就被同時取出,但周期指令就這樣被實現了。</p><p> ?。?)寄存器組:PIC所有的寄存器,如I/O端口,定時器和程序計數器等采用的都是RAM結構形式,而且都只需要一個指令周期就能完成訪問和操作。</p>&l

53、t;p>  PIC系列單片機的最大特點是不高純粹的功能堆積,而是從實際出發(fā),注重產品的性價比。為了滿足不同層次的應用要求,PIC系列單片機發(fā)展了多種型號。因此PIC在電子產品的設計和研究領域得到了廣泛的使用。</p><p>  2.2.4 PIC16F877A芯片的主要性能參數</p><p>  具有高性能RISC CPU</p><p><b>

54、;  僅有35條單字指令</b></p><p>  除程序分支指令為兩個周期外,其余均為單周期指令</p><p>  運行速度:DC-20MHz時鐘輸入</p><p>  DC-200ns指令周期</p><p>  8K*14個FLASH程序存儲器</p><p>  368*8個數據存儲器(RAM

55、)字節(jié)</p><p>  256*8EEPROM數據存儲器字節(jié)</p><p>  中斷能力(達到14個中斷源)</p><p>  直接,間接和相對尋址方式</p><p><b>  上電復位(POR)</b></p><p>  上電定時器(PWRT)和振蕩啟動定時器(OST)</p

56、><p>  監(jiān)視定時器(WDT),它帶有內可靠運行的RC振蕩器</p><p><b>  可編程的代碼保護</b></p><p><b>  低功耗睡眠方式</b></p><p><b>  可選擇的振蕩器</b></p><p>  低功耗、告訴C

57、MOS FLASH/EEPROM工藝</p><p><b>  全靜態(tài)設計</b></p><p>  在線串行編程(ICSP)</p><p>  單獨5V的內部電路串行編程(ICSP)能力</p><p>  處理機讀/寫訪問程序存儲器</p><p>  運行電壓范圍 2.0V~5.5V&

58、lt;/p><p>  商用,工業(yè)用溫度范圍</p><p><b>  低功耗:</b></p><p>  --在5V,4MHz時典型值小于2mA</p><p>  --在3V,32KHz時典型值小于20µA</p><p>  --典型的穩(wěn)態(tài)電流值小于1µA</p&g

59、t;<p><b>  2.3總體設計</b></p><p>  圖2.2總體設計框圖</p><p>  在本論文的總體設計中首先要用到兩塊PIC16F877A處理芯片,兩塊處理芯片之間進行數據傳輸,數據傳輸的方式是通過SPI接口(之后詳細介紹)進行,數據分別通過兩塊單片機在兩個數碼管上進行顯示。</p><p>  2.4仿

60、真電路圖及工作過程簡介</p><p>  圖2.3 數字電壓表仿真模擬圖</p><p>  電壓表的數字化是將連續(xù)的模擬的電壓量經A/D轉換后變?yōu)椴贿B續(xù)的離散的數字量并加以顯示。本文中提到的雙機通信數字電壓表,首先對待測的電壓信號進行采集,采集到的模擬信號會進入到到數字電壓表出單片機外的外圍電路中,通過線性運算放大器將信號進行放大(放大后的信號才可以進行測量),之后輸入到單片機中,由于

61、PIC16F877A芯片自帶A/D轉換模塊,在芯片中模擬信號轉化為數字信號,數字信號輸出到共陽極數碼管中進行顯示,從而得到待測數據。與此同時數字信號通過串行通信的方式從一個單片機中傳輸到另一個單片機中(并行方式需要多條數據傳輸線),從另一個單片機中輸出到另外一個數碼管中顯示出來,這樣就完成了雙機之間的數據傳輸,即為雙機通信。</p><p><b>  2.5總體制作流程</b></p

62、><p>  圖2.4總體制作流程框圖</p><p>  2.6雙機通信SPI介紹</p><p>  SPI總線技術是由美國摩托羅拉(Motorola)公司推出的一種同步串行接口規(guī)范。最早使用在摩托羅拉公司出產的單片機中,并且摩托羅拉公司也開發(fā)了種類繁多的SPI接口的單片機外圍器件,如SPI接口的EEPROM、FLASH、實時時鐘、A/D轉換器和數字信號解碼器等。由

63、于SPI接口的外圍器件其有引腳少、封裝簡便、造價低廉、速度快等突出優(yōu)點,在市場上得到了迅速而廣泛的普及。 </p><p>  SPI模式允許8位數據同時同步發(fā)送和接受。PIC16F877的SPI模塊支持4種SPI模式。在主控模式下使用3路信號進行數據通信</p><p>  RC5/SDO:串行數據輸出信號</p><p>  RC4/SDI/SDA:串行數據輸入

64、信號</p><p>  RC3/SCK/SCL:串行時鐘信號</p><p>  RA5/AN4/ :從屬選擇信號</p><p>  SPI模塊的配置很靈活,其特點表現如下</p><p><b>  主/從模式可編程</b></p><p><b>  時鐘信號極性可編程</

65、b></p><p>  數據輸入采樣階段可編程</p><p>  輸出數據的時鐘邊沿可編程</p><p>  主控模式下時鐘速率可編程</p><p>  圖2.5 SPI模塊的系統(tǒng)結構示意圖</p><p>  2.6.1主控發(fā)送模式</p><p>  以下為主控發(fā)送模式流程&l

66、t;/p><p>  SSPEN為1時,SSP有效。 </p><p>  SPI的移位時鐘源由SSPM3、SSPM2、SSPM1、SSPM0四個信號控制。 </p><p>  CKP和CKE確定在SCK的哪個邊沿來發(fā)送數據。 </p><p>  要發(fā)送的字節(jié)送SSPBUF,SSPIF信號自動變?yōu)?。</p><p>

67、  數據在SCK的驅動下自動把數據的Bit7到Bit0發(fā)送到SDO信號上。</p><p>  發(fā)送完畢后會使SSPIF信號由0變1。</p><p>  圖2.6主控發(fā)送模式硬件連接圖</p><p>  2.6.2主控接收模式</p><p>  以下為主控接收模式流程</p><p>  SSPEN為1時,SSP

68、有效。 </p><p>  SPI的移位時鐘源由SSPM3、SSPM2、SSPM1、SSPM0四個信號控制。 </p><p>  CKP和CKE確定在SCK的哪個邊沿來發(fā)送數據。 </p><p>  必須向SSPBUF輸出任意一數據方能啟動一次SPI通信。</p><p>  發(fā)送完畢后會使SSPIF和BF信號由0變1。</p&g

69、t;<p>  讀取SSPBUF獲得數據后,BF和SSPIF自動變0。</p><p>  主控接收模式硬件連接</p><p>  其I/O引腳要做如下配置。</p><p>  RC3/SCK置為輸出(TRISC3=0),因為主控方必須輸出時鐘。</p><p>  SDI置為輸入(TRISC4=1),用來接收從機數據。&l

70、t;/p><p>  若主控方只收不發(fā)的話,可以把SDO置為輸入(TRISC5=1),避免意外干擾。</p><p>  若從動方選擇有信號控制,則主控方應該用一個I/O引腳輸出來控制從動方的信號的電平。</p><p>  圖2.7主控接收模式硬件連接圖</p><p><b>  3.軟件設計</b></p>

71、<p><b>  3.1總體設計流程</b></p><p><b>  圖3.1軟件流程圖</b></p><p>  3.2編程語言的選擇</p><p>  單片機的編程語言常用的有兩種:一種是匯編語言,另一種是C語言。</p><p>  相對于匯編語言而言,C語言具有以下優(yōu)

72、點:</p><p>  容易上手。結構化的C語言所用語句很少,需要程序員記憶的東西很少,便于代碼的理解,入門快。</p><p>  開發(fā)效率高。C語言的結構化在描述復雜的過程和邏輯方面有極大的優(yōu)勢,適合大型項目的開發(fā)。</p><p>  編譯效率高。據統(tǒng)計,就同一個大型項目而言,采用C語言編譯完成后的目標代碼大小平均只比匯編語言多20%,但是開發(fā)周期遠少于匯編

73、語言,相對于當前的單片機存儲器容量而言,20%的“浪費”完全可以忽略。</p><p>  可重用性好。用C語言編寫的結構化代碼稍作修改就可以在不同的單片機或平臺下使用,便于程序的重復利用和跨平臺移植(不同的單片機匯編語言往往不同)</p><p>  C語言為開發(fā)者提供了豐富的數學函數,并且支持浮點運算。</p><p>  由于C語言更加符合人類的思維習慣,因此

74、由C語言完成的結構代碼可讀性強,出現問題的情況下可以更加方便地對程序進行維護。</p><p>  匯編語言作為單片機開發(fā)的常用語言之一,其具有如下特點:</p><p><b>  與機器相關性</b></p><p>  匯編語言指令是機器指令的一種符號表示,而不同類型的CPU有不同的機器指令系統(tǒng),也就有不同的匯編語言,所以,匯編語言程序與

75、機器有著密切的關系。</p><p><b>  執(zhí)行的高效率</b></p><p>  正因為匯編語言有“與機器相關性”的特性,程序員用匯編語言編寫程序時,可充分發(fā)揮自己的聰明才智,對機器內部的各種資源進行合理的安排,讓它們始終處于最佳的使用狀態(tài),這樣做的最終效果就是:程序的執(zhí)行代碼短,執(zhí)行速度快。而用匯編語言編寫程序幾乎是程序員直接在寫執(zhí)行代碼,程序員可以在程序

76、的每個具體細節(jié)上進行優(yōu)化,這也是匯編語言程序執(zhí)行高效率的原因之一。</p><p><b>  編寫程序的復雜性</b></p><p>  匯編語言是一種面向機器的語言,其匯編指令與機器指令基本上一一對應,所以,匯編指令也同機器指令一樣具有功能單一、具體的特點。要想完成某件工作(如計算:A+B+C等),就必須安排CPU的每步工作(如:先計算A+B,再把C加到前者的結

77、果上)。另外,在編寫匯編語言程序時,還要考慮機器資源的限制、匯編指令的細節(jié)和限制等等。這就使得編寫匯編語言程序比較繁瑣、復雜。一個簡單的計算公式或計算方法,也要用一系列匯編指令一步一步來實現。</p><p><b>  調試的復雜性</b></p><p>  在通常情況下,調試匯編語言程序要比調試高級語言程序困難,其主要原因有四:</p><p

78、>  匯編語言指令涉及到機器資源的細節(jié),在調試過程中,要清楚每個資源的變化情況;</p><p>  程序員在編寫匯編語言程序時,為了提高資源的利用率,可以使用各種實現技巧,而這些技巧完全有可能破壞程序的可讀性。這樣,在調試過程中,除了要知道每條指令的執(zhí)行功能,還要清楚它在整個解題過程中的作用;</p><p>  高級語言程序幾乎不顯式地使用“轉移語句”,但匯編語言程序要用到大量的

79、、各類轉移指令,這些跳轉指令大大地增加了調試程序的難度。如果在匯編語言程序中也強調不使用“轉移指令”,那么,匯編語言程序就會變成功能單調的順序程序,這顯然是不現實的;</p><p>  調試工具落后,高級語言程序可以在源程序級進行符號跟蹤,而匯編語言程序只能跟蹤機器指令。不過,現在這方面也有所改善,CV(CodeView)、TD(Turbo Debug)等軟件也可在源程序級進行符號跟蹤了。</p>

80、<p>  綜上所述,在本論文基于單片機的雙機通信數字電壓表相關程序的編寫中,C語言會作為主要的編譯語言,它更加符合自己的思維習慣,而且后續(xù)的程序需要改動時會更加的方便,但是在整個程序的編寫中,由于涉及到很多的模塊和功能,有時使用C語言會顯得更加繁瑣,數據量很大,這時我們可以將匯編語言結合到程序的編譯中,兩種語言相結合,這樣可以縮短程序的運行時間,提高執(zhí)行效率。</p><p>  3.3主要模塊簡單

81、程序</p><p><b>  A/D轉換:</b></p><p>  #include "pic.h"</p><p>  __CONFIG(XT & WDTDIS & LVPDIS);// ICD2 調試配置字</p><p>  void main(void)</p&

82、gt;<p><b>  {</b></p><p><b>  int i=0;</b></p><p>  TRISA0=1; // AN0是RA0,所以要把A口置為輸入</p><p>  TRISC=0; // C口用做輸出控制LED</p><p>  TRISB=0;

83、 // B口用做輸出控制LED</p><p>  ADFM=0; //左對齊,ADRESH保存高八位</p><p><b>  PCFG3=0; </b></p><p><b>  PCFG2=0;</b></p><p><b>  PCFG1=0;</b><

84、/p><p>  PCFG0=0; // PCFG3:PCFG0=0000,</p><p><b>  ADCS1=1;</b></p><p>  ADCS0=1; // 使用A/D轉換器內部RC振蕩器作為時鐘</p><p><b>  CHS2=0;</b></p><p&g

85、t;<b>  CHS1=0;</b></p><p>  CHS0=0; // CHS2:CHS0=000, 選擇通道0進行A/D轉換</p><p>  ADON=1; // 開啟A/D轉換器</p><p><b>  while(1)</b></p><p>  { for(i=0;i

86、<25;i++)</p><p>  { // 為了采樣保持電路充電的延時,超過25us即可</p><p><b>  } </b></p><p>  ADGO=1; // 啟動一次A/D轉換,此位就是GO/</p><p>  while(ADGO) </p><p>  {

87、 //循環(huán)等待A/D轉換結束 </p><p><b>  }</b></p><p>  PORTB=ADRESL; // 低兩位送PORTB</p><p>  PORTC=ADRESH; // 高八位送PORTC</p><p><b>  }</b></p><

88、;p><b>  }</b></p><p><b>  雙機通信:</b></p><p><b>  SPI主控發(fā)送函數</b></p><p>  void SPISend(unsigned char data)</p><p><b>  {</b

89、></p><p>  SSPBUF=data; // 保存要發(fā)送的數據</p><p>  while(SSPIF==0) // 為0說明未發(fā)送完成</p><p><b>  { // 循環(huán)等待</b></p><p><b>  }</b></p><p>  /

90、/循環(huán)退出說明發(fā)送完畢 </p><p>  SSPIF=0; // 手動清零或讀寫SSPBUF清零</p><p><b>  }</b></p><p>  SPI主控接收主函數</p><p><b>  main()</b></p><p>  {unsigned c

91、har RcvData=0;</p><p>  TRISB=0; // B口輸出控制數碼管</p><p>  SPIInit(); // 調用SPI初始化函數</p><p><b>  while(1)</b></p><p>  { if(S1==0)</p><p>  { Delay

92、MS(100);</p><p><b>  if(S1==0)</b></p><p>  { CS1=0; // 使能U2的SPI</p><p>  RcvData=MSPI_getchar(); //獲得一個字節(jié)</p><p>  CS1=1; // 關閉U2的SPI </p>&

93、lt;p>  PORTB=NumFont[RcvData]; // 顯示獲得的內容</p><p>  DelayMS(100); // 消除后沿抖動</p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } &

94、lt;/b></p><p><b>  } </b></p><p><b>  數碼管顯示:</b></p><p>  控制數碼管顯示數字1:</p><p>  #include “pic.h” </p><p>  void main(void)</

95、p><p>  { TRISB=0; </p><p><b>  TRISD=0; </b></p><p>  RB1=0; // 使三極管導通</p><p><b>  while(1){</b></p><p>  PORTD=0b11111001; //共陽極管&

96、lt;/p><p><b>  } </b></p><p><b>  }</b></p><p>  控制數碼管循環(huán)顯示0~9</p><p>  #include “pic.h” </p><p>  char NumFont[]={0b11000000,0b111

97、11001,…};</p><p>  void main(void)</p><p>  { char i=0;</p><p>  TRISB=0; TRISD=0; RB1=0;</p><p><b>  while(1){</b></p><p>  for(i=0;i<10;

98、i++)</p><p><b>  {</b></p><p>  PORTD=NumFont[ i ]; </p><p>  for(i=0;i<10000;i++) { }</p><p><b>  }</b></p><p><b>  } &

99、lt;/b></p><p><b>  }</b></p><p>  這里簡單地展示了A/D轉換,雙機通信,數碼管顯示三大最重要模塊運行的簡單程序,真正在完成論文的過程中要依據具體情況和出現的問題及時地對程序加以修改,依據需要實現的功能對程序進行必要的增減,除此之外還要添加很多外圍輔助程序,保證雙機通信數字電壓表的運行和使用。</p><

100、p><b>  4.開發(fā)環(huán)境介紹</b></p><p>  本論文中使用的開發(fā)軟件是MPLAB軟件,它是PIC單片機集成開發(fā)平臺,MPLAB IDE默認支持編譯匯編程序。</p><p>  圖4.1 MPLAB界面</p><p>  MPLAB IDE 是一種在PC機上運行的軟件用來為Microchip單片機開發(fā)應用程序。由于它提

101、供了一種單一的集成環(huán)境來為嵌入式單片機開發(fā)程序代碼因此被稱為集成開發(fā)環(huán)境或 IDE。MPLAB IDE是基于Windows操作系統(tǒng)的集成開發(fā)環(huán)境適用于PICmicro MCU系列和dsPIC數字信號控制器的開發(fā)。MPLAB IDE提供以下功能</p><p>  使用內置的編輯器創(chuàng)建和編輯源代碼。</p><p>  匯編、編譯和鏈接源代碼。</p><p>

102、  通過使用內置的軟件模擬器觀察程序流程或者使用在線仿真器或在線調試器以實時方式觀察程序流程來調試可執(zhí)行邏輯。</p><p>  用軟件模擬器或仿真器進行時序測量。</p><p>  查看Watch窗口中的變量。</p><p>  使用器件編程器將固件燒寫入器件</p><p>  由于MPLAB本身并沒有C編譯器的集成,故在需要用到

103、C語言進行編譯時需要獨獨安裝C語言程序編譯器,包括HI-TECH PICC、PICC18及Microchip C18(MCC18)編譯器。它們由第三方公司HI-TECH提供可以與MPLAB IDE無縫集成,允許匯編語言和C語言混合編程。支持硬件仿真(ICE)、軟件仿真(SIM)、在線調試器(ICD)。并且提供了豐富的庫函數供使用。在使用PICC編譯PIC16系列單片機C程序項目為例,在創(chuàng)建一個新的開發(fā)項目時,要確定單片機的型號并選擇編譯

104、器。</p><p><b>  致謝</b></p><p>  值此完成論文之際,我要衷心地感謝我的畢設指導老師蔡本曉老師給予的諄諄教誨和悉心的關懷。在論文的選題、研究、收集材料以及撰寫過程中,自始至終得到了蔡本曉老師的精心指導和熱情幫助,其中無不凝聚著蔡本曉的心血和汗水。老師嚴謹求實和一絲不茍的學風、扎實勤勉和孜孜不倦的工作態(tài)度時刻激勵著我努力學習,并將鞭策我在

105、未來的工作中銳意進取、奮發(fā)努力。蔡本曉的指導將使我終生受益。</p><p>  衷心感謝杭州電子科技大學理學院的各位領導和老師,感謝他們對我在學習和科研中的指導、幫助和支持。</p><p>  衷心感謝我的家人和同學,他們無私的關懷是我努力進取的動力,使我永遠不會感覺孤單和疲倦,他們提出的寶貴意見也使我備受啟發(fā)。</p><p>  衷心感謝對我畢業(yè)論文進行評審

106、的各位專家教授,感謝對論文的指導和提出的寶貴意見!</p><p>  最后,向所有關心和幫助過我的人們致以衷心的感謝!</p><p><b>  參考文獻</b></p><p>  李學海.PIC單片機使用教程—基礎篇[M].北京:北京航空航天大學.2007.2,45-95.</p><p>  徐愛鈞.單片機原理

107、及應用[M].北京:機械工業(yè)出版社,2010,7:10-11.</p><p>  楊欣.電子設計從零開始[M].北京:清華大學出版社,2005,10:269-279.</p><p>  徐愛鈞.單片機原理及應用[M].北京:機械工業(yè)出版社,2010,7:15-16.</p><p>  M. L. Sanderson. Electrical Measuremen

108、ts[J]. Instrumentation Reference Book, 2010,07:11-13</p><p>  Dogan Ibrahim. PIC microcontroller project development[J]. Pic Basic Project,2006,6:49-79</p><p>  閆廣明,張波,孫小君等.零點起步PIC單片機常用模塊與典型實例[M

109、].北京:機械工業(yè)出版社,2011,4:192-202.</p><p>  趙化啟,閆廣明,孫小君.零基礎學PIC單片機[M].北京:機械工業(yè)出版社,2010</p><p>  彭偉.單片機C語言程序設計實訓100例[M] .北京:電子工業(yè)出版社,2011,11:6-7</p><p>  李榮正,劉啟中,陳學軍.PIC單片機原理及應用[M].北京:北京航空航天

溫馨提示

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

評論

0/150

提交評論