版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 本科畢業(yè)論文</b></p><p><b> (2013屆)</b></p><p> 題 目基于單片機(jī)的雙機(jī)通信數(shù)字電壓表</p><p> 學(xué) 院理學(xué)院</p><p> 專(zhuān) 業(yè)光信息科學(xué)與技術(shù)</p><p> 班
2、 級(jí)</p><p> 學(xué) 號(hào)</p><p> 學(xué)生姓名</p><p> 任課教師</p><p> 完成日期2013年05月05日</p><p><b> 摘 要</b></p><p> 在日常的生活,學(xué)習(xí)和科研活動(dòng)中電壓作為一個(gè)最常被測(cè)量的物理量起
3、著舉足輕重的作用,作為一個(gè)如此重要的參量,電壓的測(cè)量方式對(duì)其有很大的影響。在以數(shù)字化、智能化、科技化為主的今天,數(shù)字電壓表以其高精度、高抗干擾能力、高擴(kuò)展性、高集成能力和方便的數(shù)據(jù)傳輸,逐步取代指針式電壓表成為電壓測(cè)量的主流方式。本論文主要對(duì)數(shù)字電壓表的發(fā)展歷史和趨勢(shì),單片機(jī)的發(fā)展歷史和趨勢(shì),單片機(jī)的應(yīng)用,單片機(jī)的外部電路,單片機(jī)之間的數(shù)據(jù)傳輸,數(shù)碼管顯示電路,硬件制作和軟件設(shè)計(jì)進(jìn)行分析。</p><p> 經(jīng)
4、過(guò)實(shí)驗(yàn)的證明,本論文設(shè)計(jì)的基于單片機(jī)的雙機(jī)通信數(shù)字電壓表無(wú)論在功能還是實(shí)際應(yīng)用上都具有傳統(tǒng)指針電壓表無(wú)法比擬的優(yōu)點(diǎn)。它可以被廣泛地應(yīng)用于學(xué)校、科研、國(guó)防等各個(gè)領(lǐng)域,為推動(dòng)數(shù)字信息化作出應(yīng)有的貢獻(xiàn)。</p><p> 關(guān)鍵詞:PIC16F877A;數(shù)字電壓表;電壓;雙機(jī)通信;數(shù)碼管顯示</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數(shù)字電壓表的發(fā)展歷程1</p><p> 1.2國(guó)內(nèi)外的發(fā)展現(xiàn)狀與趨勢(shì)2</p><p> 1.3課題的意義和目的3</p><p> 1.4本文所做的主要工作4</p><p><b> 2.硬件設(shè)計(jì)5</b></p><p><b> 2.1基礎(chǔ)設(shè)計(jì)5&
11、lt;/b></p><p> 2.1.1設(shè)計(jì)指標(biāo)5</p><p> 2.1.2器件的選擇5</p><p> 2.2單片機(jī)介紹5</p><p> 2.2.1單片機(jī)基本介紹5</p><p> 2.2.2單片機(jī)基本結(jié)構(gòu)6</p><p> 2.2.3采用PIC16
12、F877A的原因7</p><p> 2.2.4 PIC16F877A芯片主要性能參數(shù)8</p><p><b> 2.3總體設(shè)計(jì)9</b></p><p> 2.4仿真電路圖及工作過(guò)程簡(jiǎn)介10</p><p> 2.5總體制作流程11</p><p> 2.6 雙機(jī)通信SPI
13、介紹11</p><p> 2.6.1 主控發(fā)送模式12</p><p> 2.6.2 主控接收模式13</p><p><b> 3.軟件設(shè)計(jì)15</b></p><p> 3.1總體設(shè)計(jì)流程15</p><p> 3.2編程語(yǔ)言的選擇16</p><p
14、> 3.3主要模塊簡(jiǎn)單程序17</p><p> 4.開(kāi)發(fā)環(huán)境介紹20</p><p><b> 參考文獻(xiàn)22</b></p><p><b> 1.緒論</b></p><p> 1.1數(shù)字電壓表的發(fā)展歷程</p><p> 數(shù)字電壓表(digita
15、l voltmeter)簡(jiǎn)稱(chēng)DVM。市一中利用?!獢?shù)轉(zhuǎn)換原理測(cè)量電壓值,并以數(shù)字形式顯示測(cè)量結(jié)果的儀表。它是諸多數(shù)字化儀表的基礎(chǔ)與核心,電壓表的數(shù)字化是將連續(xù)的模擬量如直流電壓轉(zhuǎn)換成不連續(xù)的離散的數(shù)字形式并加以顯示,這就明確區(qū)別于傳統(tǒng)的以指針加刻度盤(pán)進(jìn)行讀數(shù)的方法。避免了讀數(shù)因視差和視覺(jué)疲勞而產(chǎn)生的誤差。目前,A/D轉(zhuǎn)換器是數(shù)字電壓表的內(nèi)部核心部件,轉(zhuǎn)換器的精度很大程度上影響著數(shù)字電壓表的準(zhǔn)確度。</p><p>
16、; 數(shù)字電壓表開(kāi)始出現(xiàn)于20世紀(jì)50年代。那時(shí)的數(shù)字電壓表的特點(diǎn)是運(yùn)用各種原理來(lái)實(shí)現(xiàn)數(shù)模轉(zhuǎn)換。由于精密點(diǎn)測(cè)量的需求,數(shù)字電壓表開(kāi)始向高精度、高位數(shù)方向發(fā)展,于是出現(xiàn)了所謂復(fù)合性原理的儀表。如1971年日本研制的TR-6567;1973年英國(guó)研制的SM-215.從此電壓表進(jìn)入了高精度階段。在后來(lái),由于電子技術(shù)、大規(guī)模集成電路及計(jì)算機(jī)技術(shù)的發(fā)展,人們很快就研制出了微處理器數(shù)字電壓表。實(shí)現(xiàn)了數(shù)字電壓表可變程序和數(shù)據(jù)自動(dòng)化處理。</p&
17、gt;<p> 從性能來(lái)看:數(shù)字電壓表的發(fā)展從一九五二年美國(guó)NLS公司由四位電子管數(shù)字電壓表精度千分之一到現(xiàn)在已經(jīng)出現(xiàn)8位數(shù)字電壓表。參數(shù)可測(cè)量直流電壓、交流電壓、電流、阻抗等。測(cè)量自動(dòng)化程度不斷提高,可以和計(jì)算機(jī)配合顯示、計(jì)算結(jié)果、然后打印出來(lái)。目前世界上美國(guó)FLUKE公司,在直流和低頻交流電量的校準(zhǔn)領(lǐng)域居國(guó)際先進(jìn)水平。例如該公司生產(chǎn)的“4700A”多功能校準(zhǔn)器和“8505”危機(jī)數(shù)字多用電壓表,可用8位顯示,直流精度可
18、達(dá)到±5/10-6,讀書(shū)分辨力為0.1μV。帶有A/D變換模式、數(shù)據(jù)輸出接口形式IEEE-488。具有比率測(cè)量軟件校準(zhǔn)和有交流電阻、電流選件。還具有高精度電壓校準(zhǔn)器“5400A”、“5200A”、“5450A”等數(shù)字儀表,都是作為一級(jí)計(jì)量站和國(guó)家級(jí)計(jì)量站使用的標(biāo)準(zhǔn)儀表。還有英國(guó)的“7055”數(shù)字電壓表采用脈沖調(diào)制技術(shù)。日本橫河公司的“2501”型采用三次采樣等等在不斷的蓬勃發(fā)展。</p><p> 從
19、總的發(fā)展歷程來(lái)看:數(shù)字電壓表自1952年問(wèn)世以來(lái),已有50年多年的發(fā)展史,大致經(jīng)歷了五代產(chǎn)品。第一代產(chǎn)品是20世紀(jì)50年代問(wèn)世的電子管數(shù)字電壓表,第二代產(chǎn)品屬于20世紀(jì)60年代出現(xiàn)的晶體管數(shù)字電壓表,第三帶產(chǎn)品為20世紀(jì)70年代研制的中、小規(guī)模集成電路的數(shù)字電壓表。近年來(lái),國(guó)內(nèi)外相繼推出有大規(guī)模集成電路(LSI)或超大規(guī)模集成電路(VLSI)構(gòu)成的數(shù)字電壓表、智能數(shù)字電壓表,分別屬于第四代、第五代產(chǎn)品。它們不僅開(kāi)創(chuàng)了電子測(cè)量的先河,更以
20、高準(zhǔn)確度、高可靠性、高分辨力、高性價(jià)比等優(yōu)良特性而受到人民的青睞。</p><p> 1.2國(guó)內(nèi)外發(fā)展現(xiàn)狀與趨勢(shì) </p><p> 這些年來(lái),隨著科技化進(jìn)程的加快,數(shù)字電壓表作為電壓表的一個(gè)分支,在近幾十年間得到了巨大的發(fā)展,構(gòu)成數(shù)字電壓表的核心器件已從早起的中小規(guī)模電路跨入到大規(guī)模ASIC(專(zhuān)用集成電路)階段。數(shù)字電壓表涉及的范圍也從傳統(tǒng)的測(cè)量擴(kuò)展至自動(dòng)控制、傳感、通信等領(lǐng)域,展示
21、了廣闊的應(yīng)用前景。</p><p> 傳統(tǒng)電壓表的設(shè)計(jì)思路主要分為:用電流計(jì)和電阻構(gòu)成的電壓表;用中小規(guī)模集成電路構(gòu)成的電壓表;用大規(guī)模ASIC(專(zhuān)用集成電路)構(gòu)成的電壓表。這幾種電壓表的設(shè)計(jì)方式各有優(yōu)勢(shì)和缺陷,分別適用于幾種特定的應(yīng)用環(huán)境,同時(shí),也為之后很多特殊功用的電壓表的設(shè)計(jì)提供了借鑒和依據(jù)。</p><p> 進(jìn)入21世紀(jì),隨著信息大爆炸時(shí)代的來(lái)臨,與信息技術(shù)相關(guān)方面的發(fā)展也一
22、日千里,電壓表也經(jīng)歷了從單一測(cè)量電壓值向數(shù)據(jù)處理、自動(dòng)控制等多功能過(guò)度的這一歷程,特別是隨著計(jì)算機(jī)技術(shù)的發(fā)展智能化技術(shù)必將被更加廣泛地使用。因此,將電壓表與計(jì)算機(jī)技術(shù)相結(jié)合的智能化電壓表成為了21世紀(jì)的新的主題。目前微處理器技術(shù)取得了跨越性的進(jìn)展,一個(gè)內(nèi)含微處理器的電壓表意味著計(jì)算機(jī)技術(shù)向電壓表等這類(lèi)儀器儀表的移植,微處理器所具有的軟件功能使儀器 呈現(xiàn)出有某種延伸,強(qiáng)化的作用。這相對(duì)于過(guò)去傳統(tǒng)的、純硬件的儀器來(lái)說(shuō)是一種新的突破,其發(fā)展?jié)?/p>
23、力十分巨大,這已為70年代以來(lái)儀表發(fā)展的歷史所證實(shí)。</p><p> 下面從幾個(gè)方面闡述新型數(shù)字儀表的發(fā)展趨向。</p><p> (1)廣泛采用新技術(shù),不斷開(kāi)發(fā)新的產(chǎn)品</p><p> 隨著科學(xué)技術(shù)的不斷發(fā)展,高新技術(shù)研究成果的廣泛采用、跨學(xué)科的綜合設(shè)計(jì)、高精尖的制造技術(shù)等,使儀器儀表領(lǐng)域發(fā)生了根本性的邊個(gè)?,F(xiàn)代儀器儀表作為典型的高科技產(chǎn)品,突破了傳統(tǒng)的
24、光、機(jī)、電構(gòu)架,向著計(jì)算機(jī)化、網(wǎng)絡(luò)化、智能化、多功能化的方向迅速發(fā)展。例如:A/D轉(zhuǎn)換器。20世紀(jì)90年代世界各國(guó)相繼研發(fā)了新的A/D轉(zhuǎn)換技術(shù)。其中有四斜率A/D轉(zhuǎn)換技術(shù)(美國(guó))、余數(shù)再循環(huán)技術(shù)(美國(guó))、自動(dòng)校準(zhǔn)技術(shù)(英國(guó))、固態(tài)真有效值轉(zhuǎn)換技術(shù)(英國(guó))、約瑟夫森效應(yīng)基準(zhǔn)源(2個(gè)納米穩(wěn)定度)、智能化專(zhuān)用芯片(80C51系列,荷蘭)等,這些新技術(shù)使數(shù)字電壓表向高準(zhǔn)確度、高可靠性及智能化、低成本方向發(fā)展。另外,集成電路的發(fā)展使電壓表只在外圍
25、配置少量元器件,即可構(gòu)成完整的智能儀表,可以完成儲(chǔ)存、計(jì)算、比較、控制等多項(xiàng)功能</p><p><b> (2)向模塊化發(fā)展</b></p><p> 新一代數(shù)字儀表正向著標(biāo)準(zhǔn)模塊化的方向發(fā)展。今后許多數(shù)字儀表將由標(biāo)準(zhǔn)化、通用化、系列化的模塊所構(gòu)成,這樣可以使整個(gè)數(shù)字儀表的布局更加合理,給電路設(shè)計(jì)和安裝調(diào)試以及維修帶來(lái)很大的方便。</p><
26、p><b> ?。?)多重顯示儀表</b></p><p> 為徹底解決數(shù)字儀表不便于觀察連續(xù)變化量的技術(shù)難題;“數(shù)字/模擬條圖”雙顯示儀表已成為國(guó)際流行款式,它兼有數(shù)字儀表準(zhǔn)確度高、模擬式儀表便于觀察被測(cè)量的變化過(guò)程及變化趨勢(shì)這兩大優(yōu)點(diǎn)。模擬條圖大致可分為液晶條圖、等離子光柱顯示器和LED光柱三大類(lèi),依據(jù)其不同的使用場(chǎng)所選擇不同的顯示方式。</p><p>
27、<b> (4)可擴(kuò)展能力強(qiáng)</b></p><p> 例如:直流數(shù)字電壓表本身可以擴(kuò)展成交流電壓表、交直電流表、峰值表、功率表等還可以附加智能化??梢詫?duì)直流數(shù)字電壓表附加計(jì)算、保持、測(cè)量值比較、時(shí)間設(shè)定,上、下限設(shè)定及自動(dòng)控制等多種功能。</p><p><b> ?。?)操作簡(jiǎn)單化</b></p><p> 集成
28、電路的發(fā)展使數(shù)字電壓表只在外圍配置少量元件,即可構(gòu)成完整的智能儀表,可以完成儲(chǔ)存、計(jì)算、比較、控制等多項(xiàng)功能。這使得按鍵變少,操作簡(jiǎn)單。但是數(shù)字電壓表并不能完全取代指針式的電壓表,在反映電壓的連續(xù)變化和變化趨勢(shì)方面不如指針表的直觀。這也是亟待解決的問(wèn)題之一。</p><p> 綜上所述,近年來(lái)雖然智能儀器儀表有了很大的發(fā)展,但是總的看來(lái),硬件的發(fā)展在一定程度上是軟件無(wú)法比擬的,各種新的元器件,集成電路的發(fā)展將硬
29、件在智能化儀器儀表中的作用展現(xiàn)得淋漓盡致。然而,智能儀器儀表的內(nèi)涵是軟件,從如今的發(fā)展程度來(lái)看,軟件的作用還遠(yuǎn)遠(yuǎn)沒(méi)有發(fā)揮出來(lái)。目前智能儀器儀表還處于蓬勃發(fā)展時(shí)期,數(shù)字電壓表未來(lái)的發(fā)展趨勢(shì)會(huì)朝著具有微控制處理芯片的方向,甚至可以與人工智能相結(jié)合出現(xiàn)全新的工作模式。</p><p> 1.3課題的意義和目的</p><p> 在電量的測(cè)量中,頻率、電壓和電流是三個(gè)最基本的被測(cè)量量,其中電壓
30、量是最為經(jīng)常的被測(cè)量。點(diǎn)穴參量的測(cè)量技術(shù)所射擊的范圍極廣,運(yùn)用于學(xué)校、科研、國(guó)防等各種領(lǐng)域,為實(shí)驗(yàn)室和工業(yè)現(xiàn)場(chǎng)提供測(cè)試。而且隨著電子技術(shù)的不斷發(fā)展,在數(shù)字化、智能化、科技化為主的今天。數(shù)字電壓表已成為電壓表設(shè)計(jì)的主要趨勢(shì),在當(dāng)前電壓測(cè)量系統(tǒng)中起著非常重要的作用。更是在需要測(cè)量高精度的電壓時(shí),數(shù)字電壓表就是一種必不可少的測(cè)量?jī)x器。電氣測(cè)量中,,電壓是一個(gè)非常重要的參數(shù)。如何精確地測(cè)量模擬信號(hào)的電壓值,一直是電測(cè)儀器研究的內(nèi)容之一。而數(shù)字電
31、壓表是通用儀器中被廣泛使用的一種測(cè)試儀器,很多電量或非電量經(jīng)變化后都需要數(shù)字電壓表完成測(cè)試。因此,數(shù)字電壓表被普遍地使用于科研和生產(chǎn)測(cè)試中。</p><p> 傳統(tǒng)的指針式電壓表精度低、功能單一,不能滿足數(shù)字化時(shí)代的需求,采用單片機(jī)的數(shù)字電壓表不僅精度高、抗干擾能力強(qiáng)、可擴(kuò)展性強(qiáng)、集成方便,還可與PC進(jìn)行實(shí)時(shí)通信。所以,這種類(lèi)型的電壓表無(wú)論在功能和實(shí)際應(yīng)用上都具有傳統(tǒng)指針電壓表無(wú)法比擬的有點(diǎn),這使得它的開(kāi)發(fā)和應(yīng)
32、用都具有良好的前景。</p><p> 如今是一個(gè)信息爆炸的時(shí)代,信息之間的傳輸成為了主流,課題中pic單片機(jī)的雙機(jī)通信系統(tǒng)很好地完成了信息之間的傳遞及共享,此課題還可進(jìn)一步形成多機(jī)之間的數(shù)據(jù)傳遞 </p><p> 1.4本文所做主要工作</p><p> 1. 對(duì)系統(tǒng)總體框架進(jìn)行分析,根據(jù)系統(tǒng)所要實(shí)現(xiàn)的目標(biāo),設(shè)計(jì)基于單片機(jī)的數(shù)字電壓表的硬件系統(tǒng),雙機(jī)之間的
33、數(shù)據(jù)傳輸方式,并以模塊設(shè)計(jì)法為依據(jù)進(jìn)行系統(tǒng)各個(gè)部分的具體設(shè)計(jì)。</p><p> 2. 設(shè)計(jì)基于單片機(jī)的數(shù)字控制系統(tǒng),發(fā)揮單片機(jī)的處理功能強(qiáng)大,運(yùn)算速度快的特點(diǎn),對(duì)被測(cè)電壓進(jìn)行實(shí)時(shí)檢測(cè)和顯示。</p><p> 3. 利用protues軟件對(duì)數(shù)字電壓表進(jìn)行電路仿真,并編寫(xiě)相關(guān)程序使數(shù)字電壓表能夠更加合理高效地完成對(duì)電壓值的測(cè)量。</p><p> 4. 加入雙
34、機(jī)通信后對(duì)系統(tǒng)進(jìn)行整機(jī)調(diào)試,使得基于單片機(jī)的雙機(jī)通信數(shù)字電壓表實(shí)驗(yàn)結(jié)果盡可能滿足設(shè)計(jì)指標(biāo)。</p><p><b> 2.硬件設(shè)計(jì)</b></p><p><b> 2.1基礎(chǔ)設(shè)計(jì)</b></p><p><b> 2.1.1設(shè)計(jì)指標(biāo)</b></p><p> 在日常工
35、作、教學(xué)和科研中,電壓表是必不可少的,傳統(tǒng)的數(shù)字電壓表設(shè)計(jì)通常以大規(guī)模ASIC(專(zhuān)用集成電路)為核心器件,并在其周?chē)o以一些中、小規(guī)模集成電路和顯示構(gòu)件,但是這種設(shè)計(jì)方式老舊,可擴(kuò)展能力差,難以滿足日益發(fā)展的電子工業(yè)要求。而本論文中設(shè)計(jì)的數(shù)字電壓表以微處理芯片(單片機(jī))為核心器件,具有極高的靈活性、穩(wěn)定性和可擴(kuò)展性,而且操作和維修簡(jiǎn)單,抗干擾能力強(qiáng),極其適用于工作、教學(xué)和科研中使用。由于單片機(jī)芯片PIC16F877A的限制,本文中設(shè)計(jì)的
36、滯留數(shù)字電壓表精度為±0.05V,測(cè)量范圍為0~5V。</p><p> 2.1.2器件的選擇</p><p> PIC16F877A芯片2塊</p><p> OP07CP(運(yùn)算放大器)1個(gè)</p><p> 4.0MHz晶振一個(gè)</p><p><b> 22pf電容</b>
37、;</p><p><b> 1K和10K電阻</b></p><p> 七位一體共陽(yáng)極數(shù)碼管2個(gè)</p><p><b> 2.2單片機(jī)介紹</b></p><p> 2.2.1單片機(jī)基本介紹</p><p> 單片微型計(jì)算機(jī)簡(jiǎn)稱(chēng)單片機(jī),是典型的嵌入式微控制器(M
38、icrocontroller Unit),常用英文字母的縮寫(xiě)MCU表示單片機(jī),單片機(jī)又稱(chēng)單片微控制器,它不是完成莫一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。單片機(jī)由運(yùn)算器,控制器,存儲(chǔ)器,輸入輸出設(shè)備構(gòu)成,相當(dāng)于一個(gè)微型的計(jì)算機(jī)(最小系統(tǒng)),和計(jì)算機(jī)相比,單片機(jī)缺少了外圍設(shè)備等。一塊芯片即為一臺(tái)計(jì)算機(jī)。它具有體積小、質(zhì)量輕、價(jià)格便宜等優(yōu)點(diǎn),為學(xué)習(xí)、應(yīng)用和開(kāi)發(fā)提供了便利條件。同時(shí),它最早是被用在工業(yè)控制領(lǐng)域。</p&
39、gt;<p> 由于單片機(jī)在工業(yè)控制領(lǐng)域被廣泛地應(yīng)用,使其由僅有CPU的專(zhuān)用處理器芯片發(fā)展而來(lái)。最早的設(shè)計(jì)理念是通過(guò)將大量外圍設(shè)備和CPU處理器集成在一個(gè)芯片當(dāng)中,使計(jì)算機(jī)系統(tǒng)變得更小,更容易集成進(jìn)更加復(fù)雜并且對(duì)體積要求嚴(yán)格的控制設(shè)備當(dāng)中。</p><p> INTEL的8080是最早按照這種思想設(shè)計(jì)出的處理器,當(dāng)時(shí)的單片機(jī)都是8位或4位的。其中最成功的是INTEL的8051,此后在8051芯片
40、的基礎(chǔ)上發(fā)展出了MCS51系列單片機(jī)。因?yàn)槠浜?jiǎn)單可靠的性能及不錯(cuò)的穩(wěn)定性獲得了很大的好評(píng)。盡管2000.年之后ARM已經(jīng)發(fā)展出了32位主頻超過(guò)300M的高端產(chǎn)品,但是直到現(xiàn)在8051的單片機(jī)還是在廣泛地被使用。在很多方面單片機(jī)甚至比專(zhuān)用的處理器更加適合應(yīng)用于嵌入式系統(tǒng)。</p><p> 相愛(ài)年代人類(lèi)生活中所用的幾乎所有的電子產(chǎn)品中都會(huì)集成有單片機(jī)。包括手機(jī)、電話、計(jì)算器、家用電器、電子玩具、掌上電腦以及鼠標(biāo)的
41、電子產(chǎn)品中都要用到單片機(jī)。汽車(chē)的控制面板中配備有40多片單片機(jī),復(fù)雜的工業(yè)控制系統(tǒng)甚至可能有數(shù)百片單片機(jī)在同時(shí)工作!</p><p> 2.2.2單片機(jī)的基本結(jié)構(gòu)</p><p> 運(yùn)算器:運(yùn)算器由運(yùn)算部件——算術(shù)邏輯單元(Arithmetic & Logical Unit,簡(jiǎn)稱(chēng)ALU)、累加器和寄存器等幾部分組成。ALU的作用是把傳來(lái)的數(shù)據(jù)進(jìn)行算術(shù)或邏輯運(yùn)算,輸入來(lái)源為兩個(gè)8
42、位數(shù)據(jù),分別來(lái)自累加器和數(shù)據(jù)寄存器。ALU能完成對(duì)這兩個(gè)數(shù)據(jù)進(jìn)行加、減、與、或、比較大小等操作,最后將結(jié)果存入累加器。例如,兩個(gè)數(shù)6和7相加,在相加之前,操作數(shù)6放在累加器中,7放在數(shù)據(jù)寄存器中,當(dāng)執(zhí)行加法指令時(shí),ALU即把兩個(gè)數(shù)相加并把結(jié)果13存入累加器,取代累加器原來(lái)的內(nèi)容6。運(yùn)算器有兩個(gè)功能:(1) 執(zhí)行各種算術(shù)運(yùn)算。(2) 執(zhí)行各種邏輯運(yùn)算,并進(jìn)行邏輯測(cè)試,如零值測(cè)試或兩個(gè)值的比較。運(yùn)算器所執(zhí)行全部操作都是由控制器發(fā)出的控制信號(hào)
43、來(lái)指揮的,并且,一個(gè)算術(shù)操作產(chǎn)生一個(gè)運(yùn)算結(jié)果,一個(gè)邏輯操作產(chǎn)生一個(gè)判決。 </p><p> 控制器:控制器由程序計(jì)數(shù)器、指令寄存器、指令譯碼器、時(shí)序發(fā)生器和操作控制器等組成,是發(fā)布命令的“決策機(jī)構(gòu)”,即協(xié)調(diào)和指揮整個(gè)微機(jī)系統(tǒng)的操作。其主要功能有:(1) 從內(nèi)存中取出一條指令,并指出下一條指令在內(nèi)存中的位置。(2) 對(duì)指令進(jìn)行譯碼和測(cè)試,并產(chǎn)生相應(yīng)的操作控制信號(hào),以便于執(zhí)行規(guī)定的動(dòng)作。(3) 指揮并控制CP
44、U、內(nèi)存和輸入輸出設(shè)備之間數(shù)據(jù)流動(dòng)的方向。微處理器內(nèi)通過(guò)內(nèi)部總線把ALU、計(jì)數(shù)器、寄存器和控制部分互聯(lián),并通過(guò)外部總線與外部的存儲(chǔ)器、輸入輸出接口電路聯(lián)接。外部總線又稱(chēng)為系統(tǒng)總線,分為數(shù)據(jù)總線DB、地址總線AB和控制總線CB。通過(guò)輸入輸出接口電路,實(shí)現(xiàn)與各種外圍設(shè)備連接。 </p><p> 主要寄存器:(1)累加器A:累加器A是微處理器中使用最頻繁的寄存器。在算術(shù)和邏輯運(yùn)算時(shí)它有雙功能:運(yùn)算前,用于保存一
45、個(gè)操作數(shù);運(yùn)算后,用于保存所得的和、差或邏輯運(yùn)算結(jié)果。(2)數(shù)據(jù)寄存器DR ,數(shù)據(jù)寄存器通過(guò)數(shù)據(jù)總線向存儲(chǔ)器和輸入/輸出設(shè)備送(寫(xiě))或?。ㄗx)數(shù)據(jù)的暫存單元。它可以保存一條正在譯碼的指令,也可以保存正在送往存儲(chǔ)器中存儲(chǔ)的一個(gè)數(shù)據(jù)字節(jié)等等。(3)指令寄存器IR和指令譯碼器ID ,指令包括操作碼和操作數(shù)。指令寄存器是用來(lái)保存當(dāng)前正在執(zhí)行的一條指令。當(dāng)執(zhí)行一條指令時(shí),先把它從內(nèi)存中取到數(shù)據(jù)寄存器中,然后再傳送到指令寄存器。當(dāng)系統(tǒng)執(zhí)行給定的指令
46、時(shí),必須對(duì)操作碼進(jìn)行譯碼,以確定所要求的操作,指令譯碼器就是負(fù)責(zé)這項(xiàng)工作的。其中,指令寄存器中操作碼字段的輸出就是指令譯碼器的輸入。(4)程序計(jì)數(shù)器PC ,PC用于確定下一條指令的地址,以保證程序能夠連續(xù)地執(zhí)行下去,因此通常又被稱(chēng)為指令地址計(jì)數(shù)器。在程序開(kāi)始執(zhí)行前必須將程序的第一條指令的內(nèi)存單元地址(即程序的首地址)送入PC,使它總是指向下一條要執(zhí)行指令的地址。(5)地址寄存器AR ,地址寄存器用于保存當(dāng)前CPU所要訪問(wèn)的內(nèi)存單元或I/
47、O設(shè)</p><p> 2.2.3采用PIC16F877A的原因</p><p> PIC(Peripheral Interface Controller)是美國(guó)微芯公司(Microchip Technology Inc)生產(chǎn)的單片機(jī)。是用來(lái)開(kāi)發(fā)從而去控制外圍設(shè)備的一種集成電路(IC)。一種具有分散功能的CPU。相對(duì)于人類(lèi)來(lái)說(shuō),大腦就是我們的CPU。PIC的共享部分就相當(dāng)于是人的神經(jīng)系
48、統(tǒng)。它們的最高操作頻率一般都在20MHz左右,用來(lái)寫(xiě)程序的存儲(chǔ)器容量大約1K—4K字節(jié)。</p><p> PIC內(nèi)部是由程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、計(jì)算單元和外圍借口電路所組成。</p><p> 論文中設(shè)計(jì)所用的單片機(jī)是PIC16F87X系列。引腳功能圖如下</p><p> 圖2.1 PIC16F877單片機(jī)引腳圖</p>
49、<p> 在PIC16F877單片機(jī)中,該40腳封裝的型號(hào)共有5個(gè)并行端口,分別是RA、RB、RC、RD、RE。RA包含6個(gè)引腳,RE包含3個(gè)引腳,剩下三個(gè)端口都包含8個(gè)引腳。由于PIC16F877屬于8位單片機(jī),因此每個(gè)端口都有數(shù)量不超過(guò)8個(gè)的引腳構(gòu)成。每個(gè)端口中的每根引腳都支持軟件單獨(dú)編程,設(shè)定為輸出淫叫或者輸入引腳。其中有些I/O引腳和單片機(jī)內(nèi)部的某些功能部件或者其他外圍的外接信號(hào)限進(jìn)行了復(fù)用,也就是說(shuō),既可以作為普通
50、I/O引腳,又可以作為某些功能部件或外圍電路的外接引腳。</p><p> 以下是各個(gè)端口的特色簡(jiǎn)要介紹:</p><p> RA口:兼?zhèn)?條模/數(shù)轉(zhuǎn)換器的模擬量輸入通道;</p><p> RB口:具有電平變化中斷和弱上拉功能;</p><p> RC口:復(fù)合的功能多,3種串行通信接口的外接引腳都有此引出;</p>&
51、lt;p> RD口:兼做并行從動(dòng)端口的8位數(shù)據(jù)吞吐引腳;</p><p> RE口:兼做并行從動(dòng)端口的3條控制信號(hào)引腳,以及3條模/數(shù)轉(zhuǎn)換器的模擬量輸入通道。</p><p> PIC16F877單片機(jī)的主要特點(diǎn)</p><p> ?。?)總線結(jié)構(gòu):PIC的總線結(jié)構(gòu)是哈佛結(jié)構(gòu),指令空間和數(shù)據(jù)空間是完全分開(kāi)的。一個(gè)用于指令,一個(gè)用于數(shù)據(jù),正因?yàn)榭梢詫?duì)程序和
52、數(shù)據(jù)進(jìn)行同時(shí)訪問(wèn),這樣就大大提高了數(shù)據(jù)的吞吐率。</p><p> ?。?)流水線結(jié)構(gòu):PIC的提取指令和執(zhí)行采用雙指令流水線結(jié)構(gòu),當(dāng)一條指令被執(zhí)行時(shí),嚇一跳指令就被同時(shí)取出,但周期指令就這樣被實(shí)現(xiàn)了。</p><p> ?。?)寄存器組:PIC所有的寄存器,如I/O端口,定時(shí)器和程序計(jì)數(shù)器等采用的都是RAM結(jié)構(gòu)形式,而且都只需要一個(gè)指令周期就能完成訪問(wèn)和操作。</p>&l
53、t;p> PIC系列單片機(jī)的最大特點(diǎn)是不高純粹的功能堆積,而是從實(shí)際出發(fā),注重產(chǎn)品的性價(jià)比。為了滿足不同層次的應(yīng)用要求,PIC系列單片機(jī)發(fā)展了多種型號(hào)。因此PIC在電子產(chǎn)品的設(shè)計(jì)和研究領(lǐng)域得到了廣泛的使用。</p><p> 2.2.4 PIC16F877A芯片的主要性能參數(shù)</p><p> 具有高性能RISC CPU</p><p><b>
54、; 僅有35條單字指令</b></p><p> 除程序分支指令為兩個(gè)周期外,其余均為單周期指令</p><p> 運(yùn)行速度:DC-20MHz時(shí)鐘輸入</p><p> DC-200ns指令周期</p><p> 8K*14個(gè)FLASH程序存儲(chǔ)器</p><p> 368*8個(gè)數(shù)據(jù)存儲(chǔ)器(RAM
55、)字節(jié)</p><p> 256*8EEPROM數(shù)據(jù)存儲(chǔ)器字節(jié)</p><p> 中斷能力(達(dá)到14個(gè)中斷源)</p><p> 直接,間接和相對(duì)尋址方式</p><p><b> 上電復(fù)位(POR)</b></p><p> 上電定時(shí)器(PWRT)和振蕩啟動(dòng)定時(shí)器(OST)</p
56、><p> 監(jiān)視定時(shí)器(WDT),它帶有內(nèi)可靠運(yùn)行的RC振蕩器</p><p><b> 可編程的代碼保護(hù)</b></p><p><b> 低功耗睡眠方式</b></p><p><b> 可選擇的振蕩器</b></p><p> 低功耗、告訴C
57、MOS FLASH/EEPROM工藝</p><p><b> 全靜態(tài)設(shè)計(jì)</b></p><p> 在線串行編程(ICSP)</p><p> 單獨(dú)5V的內(nèi)部電路串行編程(ICSP)能力</p><p> 處理機(jī)讀/寫(xiě)訪問(wèn)程序存儲(chǔ)器</p><p> 運(yùn)行電壓范圍 2.0V~5.5V&
58、lt;/p><p> 商用,工業(yè)用溫度范圍</p><p><b> 低功耗:</b></p><p> --在5V,4MHz時(shí)典型值小于2mA</p><p> --在3V,32KHz時(shí)典型值小于20µA</p><p> --典型的穩(wěn)態(tài)電流值小于1µA</p&g
59、t;<p><b> 2.3總體設(shè)計(jì)</b></p><p> 圖2.2總體設(shè)計(jì)框圖</p><p> 在本論文的總體設(shè)計(jì)中首先要用到兩塊PIC16F877A處理芯片,兩塊處理芯片之間進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)傳輸?shù)姆绞绞峭ㄟ^(guò)SPI接口(之后詳細(xì)介紹)進(jìn)行,數(shù)據(jù)分別通過(guò)兩塊單片機(jī)在兩個(gè)數(shù)碼管上進(jìn)行顯示。</p><p> 2.4仿
60、真電路圖及工作過(guò)程簡(jiǎn)介</p><p> 圖2.3 數(shù)字電壓表仿真模擬圖</p><p> 電壓表的數(shù)字化是將連續(xù)的模擬的電壓量經(jīng)A/D轉(zhuǎn)換后變?yōu)椴贿B續(xù)的離散的數(shù)字量并加以顯示。本文中提到的雙機(jī)通信數(shù)字電壓表,首先對(duì)待測(cè)的電壓信號(hào)進(jìn)行采集,采集到的模擬信號(hào)會(huì)進(jìn)入到到數(shù)字電壓表出單片機(jī)外的外圍電路中,通過(guò)線性運(yùn)算放大器將信號(hào)進(jìn)行放大(放大后的信號(hào)才可以進(jìn)行測(cè)量),之后輸入到單片機(jī)中,由于
61、PIC16F877A芯片自帶A/D轉(zhuǎn)換模塊,在芯片中模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),數(shù)字信號(hào)輸出到共陽(yáng)極數(shù)碼管中進(jìn)行顯示,從而得到待測(cè)數(shù)據(jù)。與此同時(shí)數(shù)字信號(hào)通過(guò)串行通信的方式從一個(gè)單片機(jī)中傳輸?shù)搅硪粋€(gè)單片機(jī)中(并行方式需要多條數(shù)據(jù)傳輸線),從另一個(gè)單片機(jī)中輸出到另外一個(gè)數(shù)碼管中顯示出來(lái),這樣就完成了雙機(jī)之間的數(shù)據(jù)傳輸,即為雙機(jī)通信。</p><p><b> 2.5總體制作流程</b></p
62、><p> 圖2.4總體制作流程框圖</p><p> 2.6雙機(jī)通信SPI介紹</p><p> SPI總線技術(shù)是由美國(guó)摩托羅拉(Motorola)公司推出的一種同步串行接口規(guī)范。最早使用在摩托羅拉公司出產(chǎn)的單片機(jī)中,并且摩托羅拉公司也開(kāi)發(fā)了種類(lèi)繁多的SPI接口的單片機(jī)外圍器件,如SPI接口的EEPROM、FLASH、實(shí)時(shí)時(shí)鐘、A/D轉(zhuǎn)換器和數(shù)字信號(hào)解碼器等。由
63、于SPI接口的外圍器件其有引腳少、封裝簡(jiǎn)便、造價(jià)低廉、速度快等突出優(yōu)點(diǎn),在市場(chǎng)上得到了迅速而廣泛的普及。 </p><p> SPI模式允許8位數(shù)據(jù)同時(shí)同步發(fā)送和接受。PIC16F877的SPI模塊支持4種SPI模式。在主控模式下使用3路信號(hào)進(jìn)行數(shù)據(jù)通信</p><p> RC5/SDO:串行數(shù)據(jù)輸出信號(hào)</p><p> RC4/SDI/SDA:串行數(shù)據(jù)輸入
64、信號(hào)</p><p> RC3/SCK/SCL:串行時(shí)鐘信號(hào)</p><p> RA5/AN4/ :從屬選擇信號(hào)</p><p> SPI模塊的配置很靈活,其特點(diǎn)表現(xiàn)如下</p><p><b> 主/從模式可編程</b></p><p><b> 時(shí)鐘信號(hào)極性可編程</
65、b></p><p> 數(shù)據(jù)輸入采樣階段可編程</p><p> 輸出數(shù)據(jù)的時(shí)鐘邊沿可編程</p><p> 主控模式下時(shí)鐘速率可編程</p><p> 圖2.5 SPI模塊的系統(tǒng)結(jié)構(gòu)示意圖</p><p> 2.6.1主控發(fā)送模式</p><p> 以下為主控發(fā)送模式流程&l
66、t;/p><p> SSPEN為1時(shí),SSP有效。 </p><p> SPI的移位時(shí)鐘源由SSPM3、SSPM2、SSPM1、SSPM0四個(gè)信號(hào)控制。 </p><p> CKP和CKE確定在SCK的哪個(gè)邊沿來(lái)發(fā)送數(shù)據(jù)。 </p><p> 要發(fā)送的字節(jié)送SSPBUF,SSPIF信號(hào)自動(dòng)變?yōu)?。</p><p>
67、 數(shù)據(jù)在SCK的驅(qū)動(dòng)下自動(dòng)把數(shù)據(jù)的Bit7到Bit0發(fā)送到SDO信號(hào)上。</p><p> 發(fā)送完畢后會(huì)使SSPIF信號(hào)由0變1。</p><p> 圖2.6主控發(fā)送模式硬件連接圖</p><p> 2.6.2主控接收模式</p><p> 以下為主控接收模式流程</p><p> SSPEN為1時(shí),SSP
68、有效。 </p><p> SPI的移位時(shí)鐘源由SSPM3、SSPM2、SSPM1、SSPM0四個(gè)信號(hào)控制。 </p><p> CKP和CKE確定在SCK的哪個(gè)邊沿來(lái)發(fā)送數(shù)據(jù)。 </p><p> 必須向SSPBUF輸出任意一數(shù)據(jù)方能啟動(dòng)一次SPI通信。</p><p> 發(fā)送完畢后會(huì)使SSPIF和BF信號(hào)由0變1。</p&g
69、t;<p> 讀取SSPBUF獲得數(shù)據(jù)后,BF和SSPIF自動(dòng)變0。</p><p> 主控接收模式硬件連接</p><p> 其I/O引腳要做如下配置。</p><p> RC3/SCK置為輸出(TRISC3=0),因?yàn)橹骺胤奖仨気敵鰰r(shí)鐘。</p><p> SDI置為輸入(TRISC4=1),用來(lái)接收從機(jī)數(shù)據(jù)。&l
70、t;/p><p> 若主控方只收不發(fā)的話,可以把SDO置為輸入(TRISC5=1),避免意外干擾。</p><p> 若從動(dòng)方選擇有信號(hào)控制,則主控方應(yīng)該用一個(gè)I/O引腳輸出來(lái)控制從動(dòng)方的信號(hào)的電平。</p><p> 圖2.7主控接收模式硬件連接圖</p><p><b> 3.軟件設(shè)計(jì)</b></p>
71、<p><b> 3.1總體設(shè)計(jì)流程</b></p><p><b> 圖3.1軟件流程圖</b></p><p> 3.2編程語(yǔ)言的選擇</p><p> 單片機(jī)的編程語(yǔ)言常用的有兩種:一種是匯編語(yǔ)言,另一種是C語(yǔ)言。</p><p> 相對(duì)于匯編語(yǔ)言而言,C語(yǔ)言具有以下優(yōu)
72、點(diǎn):</p><p> 容易上手。結(jié)構(gòu)化的C語(yǔ)言所用語(yǔ)句很少,需要程序員記憶的東西很少,便于代碼的理解,入門(mén)快。</p><p> 開(kāi)發(fā)效率高。C語(yǔ)言的結(jié)構(gòu)化在描述復(fù)雜的過(guò)程和邏輯方面有極大的優(yōu)勢(shì),適合大型項(xiàng)目的開(kāi)發(fā)。</p><p> 編譯效率高。據(jù)統(tǒng)計(jì),就同一個(gè)大型項(xiàng)目而言,采用C語(yǔ)言編譯完成后的目標(biāo)代碼大小平均只比匯編語(yǔ)言多20%,但是開(kāi)發(fā)周期遠(yuǎn)少于匯編
73、語(yǔ)言,相對(duì)于當(dāng)前的單片機(jī)存儲(chǔ)器容量而言,20%的“浪費(fèi)”完全可以忽略。</p><p> 可重用性好。用C語(yǔ)言編寫(xiě)的結(jié)構(gòu)化代碼稍作修改就可以在不同的單片機(jī)或平臺(tái)下使用,便于程序的重復(fù)利用和跨平臺(tái)移植(不同的單片機(jī)匯編語(yǔ)言往往不同)</p><p> C語(yǔ)言為開(kāi)發(fā)者提供了豐富的數(shù)學(xué)函數(shù),并且支持浮點(diǎn)運(yùn)算。</p><p> 由于C語(yǔ)言更加符合人類(lèi)的思維習(xí)慣,因此
74、由C語(yǔ)言完成的結(jié)構(gòu)代碼可讀性強(qiáng),出現(xiàn)問(wèn)題的情況下可以更加方便地對(duì)程序進(jìn)行維護(hù)。</p><p> 匯編語(yǔ)言作為單片機(jī)開(kāi)發(fā)的常用語(yǔ)言之一,其具有如下特點(diǎn):</p><p><b> 與機(jī)器相關(guān)性</b></p><p> 匯編語(yǔ)言指令是機(jī)器指令的一種符號(hào)表示,而不同類(lèi)型的CPU有不同的機(jī)器指令系統(tǒng),也就有不同的匯編語(yǔ)言,所以,匯編語(yǔ)言程序與
75、機(jī)器有著密切的關(guān)系。</p><p><b> 執(zhí)行的高效率</b></p><p> 正因?yàn)閰R編語(yǔ)言有“與機(jī)器相關(guān)性”的特性,程序員用匯編語(yǔ)言編寫(xiě)程序時(shí),可充分發(fā)揮自己的聰明才智,對(duì)機(jī)器內(nèi)部的各種資源進(jìn)行合理的安排,讓它們始終處于最佳的使用狀態(tài),這樣做的最終效果就是:程序的執(zhí)行代碼短,執(zhí)行速度快。而用匯編語(yǔ)言編寫(xiě)程序幾乎是程序員直接在寫(xiě)執(zhí)行代碼,程序員可以在程序
76、的每個(gè)具體細(xì)節(jié)上進(jìn)行優(yōu)化,這也是匯編語(yǔ)言程序執(zhí)行高效率的原因之一。</p><p><b> 編寫(xiě)程序的復(fù)雜性</b></p><p> 匯編語(yǔ)言是一種面向機(jī)器的語(yǔ)言,其匯編指令與機(jī)器指令基本上一一對(duì)應(yīng),所以,匯編指令也同機(jī)器指令一樣具有功能單一、具體的特點(diǎn)。要想完成某件工作(如計(jì)算:A+B+C等),就必須安排CPU的每步工作(如:先計(jì)算A+B,再把C加到前者的結(jié)
77、果上)。另外,在編寫(xiě)匯編語(yǔ)言程序時(shí),還要考慮機(jī)器資源的限制、匯編指令的細(xì)節(jié)和限制等等。這就使得編寫(xiě)匯編語(yǔ)言程序比較繁瑣、復(fù)雜。一個(gè)簡(jiǎn)單的計(jì)算公式或計(jì)算方法,也要用一系列匯編指令一步一步來(lái)實(shí)現(xiàn)。</p><p><b> 調(diào)試的復(fù)雜性</b></p><p> 在通常情況下,調(diào)試匯編語(yǔ)言程序要比調(diào)試高級(jí)語(yǔ)言程序困難,其主要原因有四:</p><p
78、> 匯編語(yǔ)言指令涉及到機(jī)器資源的細(xì)節(jié),在調(diào)試過(guò)程中,要清楚每個(gè)資源的變化情況;</p><p> 程序員在編寫(xiě)匯編語(yǔ)言程序時(shí),為了提高資源的利用率,可以使用各種實(shí)現(xiàn)技巧,而這些技巧完全有可能破壞程序的可讀性。這樣,在調(diào)試過(guò)程中,除了要知道每條指令的執(zhí)行功能,還要清楚它在整個(gè)解題過(guò)程中的作用;</p><p> 高級(jí)語(yǔ)言程序幾乎不顯式地使用“轉(zhuǎn)移語(yǔ)句”,但匯編語(yǔ)言程序要用到大量的
79、、各類(lèi)轉(zhuǎn)移指令,這些跳轉(zhuǎn)指令大大地增加了調(diào)試程序的難度。如果在匯編語(yǔ)言程序中也強(qiáng)調(diào)不使用“轉(zhuǎn)移指令”,那么,匯編語(yǔ)言程序就會(huì)變成功能單調(diào)的順序程序,這顯然是不現(xiàn)實(shí)的;</p><p> 調(diào)試工具落后,高級(jí)語(yǔ)言程序可以在源程序級(jí)進(jìn)行符號(hào)跟蹤,而匯編語(yǔ)言程序只能跟蹤機(jī)器指令。不過(guò),現(xiàn)在這方面也有所改善,CV(CodeView)、TD(Turbo Debug)等軟件也可在源程序級(jí)進(jìn)行符號(hào)跟蹤了。</p>
80、<p> 綜上所述,在本論文基于單片機(jī)的雙機(jī)通信數(shù)字電壓表相關(guān)程序的編寫(xiě)中,C語(yǔ)言會(huì)作為主要的編譯語(yǔ)言,它更加符合自己的思維習(xí)慣,而且后續(xù)的程序需要改動(dòng)時(shí)會(huì)更加的方便,但是在整個(gè)程序的編寫(xiě)中,由于涉及到很多的模塊和功能,有時(shí)使用C語(yǔ)言會(huì)顯得更加繁瑣,數(shù)據(jù)量很大,這時(shí)我們可以將匯編語(yǔ)言結(jié)合到程序的編譯中,兩種語(yǔ)言相結(jié)合,這樣可以縮短程序的運(yùn)行時(shí)間,提高執(zhí)行效率。</p><p> 3.3主要模塊簡(jiǎn)單
81、程序</p><p><b> A/D轉(zhuǎn)換:</b></p><p> #include "pic.h"</p><p> __CONFIG(XT & WDTDIS & LVPDIS);// ICD2 調(diào)試配置字</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; //左對(duì)齊,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轉(zhuǎn)換器內(nèi)部RC振蕩器作為時(shí)鐘</p><p><b> CHS2=0;</b></p><p&g
85、t;<b> CHS1=0;</b></p><p> CHS0=0; // CHS2:CHS0=000, 選擇通道0進(jìn)行A/D轉(zhuǎn)換</p><p> ADON=1; // 開(kāi)啟A/D轉(zhuǎn)換器</p><p><b> while(1)</b></p><p> { for(i=0;i
86、<25;i++)</p><p> { // 為了采樣保持電路充電的延時(shí),超過(guò)25us即可</p><p><b> } </b></p><p> ADGO=1; // 啟動(dòng)一次A/D轉(zhuǎn)換,此位就是GO/</p><p> while(ADGO) </p><p> {
87、 //循環(huán)等待A/D轉(zhuǎn)換結(jié)束 </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> 雙機(jī)通信:</b></p><p><b> SPI主控發(fā)送函數(shù)</b></p><p> void SPISend(unsigned char data)</p><p><b> {</b
89、></p><p> SSPBUF=data; // 保存要發(fā)送的數(shù)據(jù)</p><p> while(SSPIF==0) // 為0說(shuō)明未發(fā)送完成</p><p><b> { // 循環(huán)等待</b></p><p><b> }</b></p><p> /
90、/循環(huán)退出說(shuō)明發(fā)送完畢 </p><p> SSPIF=0; // 手動(dòng)清零或讀寫(xiě)SSPBUF清零</p><p><b> }</b></p><p> SPI主控接收主函數(shù)</p><p><b> main()</b></p><p> {unsigned c
91、har RcvData=0;</p><p> TRISB=0; // B口輸出控制數(shù)碼管</p><p> SPIInit(); // 調(diào)用SPI初始化函數(shù)</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(); //獲得一個(gè)字節(jié)</p><p> CS1=1; // 關(guān)閉U2的SPI </p>&
93、lt;p> PORTB=NumFont[RcvData]; // 顯示獲得的內(nèi)容</p><p> DelayMS(100); // 消除后沿抖動(dòng)</p><p><b> } </b></p><p><b> } </b></p><p><b> } &
94、lt;/b></p><p><b> } </b></p><p><b> 數(shù)碼管顯示:</b></p><p> 控制數(shù)碼管顯示數(shù)字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; // 使三極管導(dǎo)通</p><p><b> while(1){</b></p><p> PORTD=0b11111001; //共陽(yáng)極管&
96、lt;/p><p><b> } </b></p><p><b> }</b></p><p> 控制數(shù)碼管循環(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> 這里簡(jiǎn)單地展示了A/D轉(zhuǎn)換,雙機(jī)通信,數(shù)碼管顯示三大最重要模塊運(yùn)行的簡(jiǎn)單程序,真正在完成論文的過(guò)程中要依據(jù)具體情況和出現(xiàn)的問(wèn)題及時(shí)地對(duì)程序加以修改,依據(jù)需要實(shí)現(xiàn)的功能對(duì)程序進(jìn)行必要的增減,除此之外還要添加很多外圍輔助程序,保證雙機(jī)通信數(shù)字電壓表的運(yùn)行和使用。</p><
100、p><b> 4.開(kāi)發(fā)環(huán)境介紹</b></p><p> 本論文中使用的開(kāi)發(fā)軟件是MPLAB軟件,它是PIC單片機(jī)集成開(kāi)發(fā)平臺(tái),MPLAB IDE默認(rèn)支持編譯匯編程序。</p><p> 圖4.1 MPLAB界面</p><p> MPLAB IDE 是一種在PC機(jī)上運(yùn)行的軟件用來(lái)為Microchip單片機(jī)開(kāi)發(fā)應(yīng)用程序。由于它提
101、供了一種單一的集成環(huán)境來(lái)為嵌入式單片機(jī)開(kāi)發(fā)程序代碼因此被稱(chēng)為集成開(kāi)發(fā)環(huán)境或 IDE。MPLAB IDE是基于Windows操作系統(tǒng)的集成開(kāi)發(fā)環(huán)境適用于PICmicro MCU系列和dsPIC數(shù)字信號(hào)控制器的開(kāi)發(fā)。MPLAB IDE提供以下功能</p><p> 使用內(nèi)置的編輯器創(chuàng)建和編輯源代碼。</p><p> 匯編、編譯和鏈接源代碼。</p><p>
102、 通過(guò)使用內(nèi)置的軟件模擬器觀察程序流程或者使用在線仿真器或在線調(diào)試器以實(shí)時(shí)方式觀察程序流程來(lái)調(diào)試可執(zhí)行邏輯。</p><p> 用軟件模擬器或仿真器進(jìn)行時(shí)序測(cè)量。</p><p> 查看Watch窗口中的變量。</p><p> 使用器件編程器將固件燒寫(xiě)入器件</p><p> 由于MPLAB本身并沒(méi)有C編譯器的集成,故在需要用到
103、C語(yǔ)言進(jìn)行編譯時(shí)需要獨(dú)獨(dú)安裝C語(yǔ)言程序編譯器,包括HI-TECH PICC、PICC18及Microchip C18(MCC18)編譯器。它們由第三方公司HI-TECH提供可以與MPLAB IDE無(wú)縫集成,允許匯編語(yǔ)言和C語(yǔ)言混合編程。支持硬件仿真(ICE)、軟件仿真(SIM)、在線調(diào)試器(ICD)。并且提供了豐富的庫(kù)函數(shù)供使用。在使用PICC編譯PIC16系列單片機(jī)C程序項(xiàng)目為例,在創(chuàng)建一個(gè)新的開(kāi)發(fā)項(xiàng)目時(shí),要確定單片機(jī)的型號(hào)并選擇編譯
104、器。</p><p><b> 致謝</b></p><p> 值此完成論文之際,我要衷心地感謝我的畢設(shè)指導(dǎo)老師蔡本曉老師給予的諄諄教誨和悉心的關(guān)懷。在論文的選題、研究、收集材料以及撰寫(xiě)過(guò)程中,自始至終得到了蔡本曉老師的精心指導(dǎo)和熱情幫助,其中無(wú)不凝聚著蔡本曉的心血和汗水。老師嚴(yán)謹(jǐn)求實(shí)和一絲不茍的學(xué)風(fēng)、扎實(shí)勤勉和孜孜不倦的工作態(tài)度時(shí)刻激勵(lì)著我努力學(xué)習(xí),并將鞭策我在
105、未來(lái)的工作中銳意進(jìn)取、奮發(fā)努力。蔡本曉的指導(dǎo)將使我終生受益。</p><p> 衷心感謝杭州電子科技大學(xué)理學(xué)院的各位領(lǐng)導(dǎo)和老師,感謝他們對(duì)我在學(xué)習(xí)和科研中的指導(dǎo)、幫助和支持。</p><p> 衷心感謝我的家人和同學(xué),他們無(wú)私的關(guān)懷是我努力進(jìn)取的動(dòng)力,使我永遠(yuǎn)不會(huì)感覺(jué)孤單和疲倦,他們提出的寶貴意見(jiàn)也使我備受啟發(fā)。</p><p> 衷心感謝對(duì)我畢業(yè)論文進(jìn)行評(píng)審
106、的各位專(zhuān)家教授,感謝對(duì)論文的指導(dǎo)和提出的寶貴意見(jiàn)!</p><p> 最后,向所有關(guān)心和幫助過(guò)我的人們致以衷心的感謝!</p><p><b> 參考文獻(xiàn)</b></p><p> 李學(xué)海.PIC單片機(jī)使用教程—基礎(chǔ)篇[M].北京:北京航空航天大學(xué).2007.2,45-95.</p><p> 徐愛(ài)鈞.單片機(jī)原理
107、及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2010,7:10-11.</p><p> 楊欣.電子設(shè)計(jì)從零開(kāi)始[M].北京:清華大學(xué)出版社,2005,10:269-279.</p><p> 徐愛(ài)鈞.單片機(jī)原理及應(yīng)用[M].北京:機(jī)械工業(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> 閆廣明,張波,孫小君等.零點(diǎn)起步PIC單片機(jī)常用模塊與典型實(shí)例[M
109、].北京:機(jī)械工業(yè)出版社,2011,4:192-202.</p><p> 趙化啟,閆廣明,孫小君.零基礎(chǔ)學(xué)PIC單片機(jī)[M].北京:機(jī)械工業(yè)出版社,2010</p><p> 彭偉.單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例[M] .北京:電子工業(yè)出版社,2011,11:6-7</p><p> 李榮正,劉啟中,陳學(xué)軍.PIC單片機(jī)原理及應(yīng)用[M].北京:北京航空航天
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)的雙機(jī)通信數(shù)字電壓表
- 基于單片機(jī)的雙機(jī)通信數(shù)字電壓表本科畢業(yè)論文.doc
- 基于單片機(jī)的數(shù)字電壓表畢業(yè)論文
- 單片機(jī)數(shù)字電壓表畢業(yè)論文
- 畢業(yè)論文——基于單片機(jī)的數(shù)字電壓表
- 數(shù)字電壓表畢業(yè)論文--基于51單片機(jī)的數(shù)字電壓表設(shè)計(jì)
- 基于單片機(jī)的數(shù)字電壓表——畢業(yè)論文
- 畢業(yè)論文--基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)
- (畢業(yè)論文)基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)
- 基于單片機(jī)的數(shù)字電壓表的設(shè)計(jì)畢業(yè)論文
- 基于51單片機(jī)的數(shù)字電壓表設(shè)計(jì) 畢業(yè)論文
- 基于單片機(jī)的數(shù)字電壓表仿真設(shè)計(jì)-畢業(yè)論文
- 基于單片機(jī)的數(shù)字電壓表論文
- 數(shù)字電壓表基于單片機(jī)
- 數(shù)字電壓表基于單片機(jī)
- 基于單片機(jī)的數(shù)字電壓表畢業(yè)設(shè)計(jì)論文
- 基于單片機(jī)數(shù)字電壓表.doc
- 基于單片機(jī)的數(shù)字電壓表的設(shè)計(jì)論文
- 基于單片機(jī)數(shù)字電壓表.doc
- 基于單片機(jī)的數(shù)字電壓表的設(shè)計(jì)論文
評(píng)論
0/150
提交評(píng)論