單片機(jī)串口通信畢業(yè)論文_第1頁
已閱讀1頁,還剩48頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  (論文)開題報(bào)告</b></p><p> 1、目的及意義(含國(guó)內(nèi)外的研究現(xiàn)狀分析)選題目的與意義:為了提高系統(tǒng)管理的先進(jìn)性和安全性,計(jì)算機(jī)工業(yè)自動(dòng)控制和檢測(cè)系統(tǒng)越來越多地采用集總分散系統(tǒng)。較為常見的形式是由一臺(tái)作管理用的上位主計(jì)算機(jī)(主機(jī))和多臺(tái)直接參與控制檢測(cè)的下位從計(jì)算機(jī)(從機(jī))構(gòu)成的主從式多機(jī)系統(tǒng),主機(jī)和從機(jī)之間以通訊的方式來協(xié)調(diào)工作。主機(jī)的作用一是要向

2、從機(jī)發(fā)送各種命令及參數(shù);二是要及時(shí)收集、整理和分析從機(jī)發(fā)回的數(shù)據(jù),供進(jìn)一步?jīng)Q策和報(bào)表。從機(jī)被動(dòng)地接收、執(zhí)行主機(jī)發(fā)來的命令,并且根據(jù)主機(jī)的要求向主機(jī)回傳相應(yīng)的實(shí)時(shí)數(shù)據(jù),報(bào)告其運(yùn)行狀態(tài)。用串行總線技術(shù)可以使系統(tǒng)的硬件設(shè)計(jì)大大簡(jiǎn)化、系統(tǒng)的體積減小、可靠性提高。同時(shí),系統(tǒng)的更改和擴(kuò)充極為容易。MCS-51系列單片機(jī),由于內(nèi)部帶有一個(gè)可用于異步通訊的全雙工的串行通訊接口,因此可以很方便地構(gòu)成一個(gè)主從式多機(jī)系統(tǒng)。串口是計(jì)算機(jī)上一種非常通用設(shè)備通信的

3、協(xié)議。大多數(shù)計(jì)算機(jī)包含兩個(gè)基于RS232的串口。串口同時(shí)也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口。同時(shí),串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備...更多>串口是計(jì)算機(jī)上一種非常通用設(shè)備通信的協(xié)議。大多數(shù)計(jì)算</p><p> 2、基本內(nèi)容和技術(shù)方案基本內(nèi)容:熟悉單片機(jī)相關(guān)方面的知識(shí),學(xué)習(xí)并掌握串口通信的基本原理。學(xué)會(huì)使用C語言進(jìn)行單片機(jī)的編程,并且熟練掌握keil軟件的使用

4、。學(xué)習(xí)使用proteus軟件,會(huì)在軟件上繪制電路圖,能夠進(jìn)行電路圖的仿真。系統(tǒng)整體調(diào)試、優(yōu)化,或就某一部分進(jìn)行深入研究。技術(shù)方案:MCS-51單片機(jī)第10號(hào)管腳RXD可用于串行數(shù)據(jù)的接收,第11號(hào)管腳TXD可用于串行數(shù)據(jù)的發(fā)送。下圖1是由1臺(tái)MCS-51單片機(jī)作為主機(jī)和由多臺(tái)單片機(jī)作從機(jī)組成的主從式多機(jī)系統(tǒng)。該主從式多機(jī)系統(tǒng)的串行通訊采用RS-232C標(biāo)準(zhǔn)。圖1 主從式多機(jī)系統(tǒng)框圖關(guān)鍵技術(shù)的實(shí)現(xiàn):1)命令及命令格式:主機(jī)向從機(jī)發(fā)送的命令

5、可以分成兩類:一類命令主機(jī)要求所有從機(jī)都要接收并執(zhí)行,稱全局命令,如啟動(dòng)、停機(jī)、參數(shù)設(shè)置等命令;另一類命令主機(jī)要求所有從機(jī)接收,但只允許與該命令中指定的從機(jī)機(jī)號(hào)相同的一臺(tái)從機(jī)執(zhí)行,稱為單機(jī)命令。在命令定義和命令格式設(shè)計(jì)時(shí),要求能區(qū)分是全局命令還是單機(jī)命令,單機(jī)命令要求能區(qū)分針對(duì)哪臺(tái)從機(jī)。2) 實(shí)時(shí)通訊軟件的設(shè)計(jì):單片機(jī)主從式多機(jī)系統(tǒng)實(shí)時(shí)通訊是在實(shí)時(shí)多任務(wù)操作系統(tǒng)的環(huán)境中實(shí)現(xiàn)的。無論是主機(jī)還是每一個(gè)從機(jī),都運(yùn)</p><

6、;p> 3、進(jìn)度安排第1-4周:查閱相關(guān)文獻(xiàn)資料,明確研究?jī)?nèi)容,了解研究所需理論和技術(shù)支持手段,匯總所查資料編寫綜述報(bào)告,完成畢業(yè)設(shè)計(jì)開題報(bào)告;第5—9周:根據(jù)對(duì)課題相關(guān)理論和技術(shù)的掌握,確定設(shè)計(jì)方案并進(jìn)行研究有關(guān)技術(shù);完成畢業(yè)論文提綱并提交指導(dǎo)老師檢閱;第10—13周:撰寫畢業(yè)論文初稿,完成要實(shí)現(xiàn)的系統(tǒng)的仿真與調(diào)試,畫出PCB板,做出實(shí)物;第14周:撰寫畢業(yè)論文,并完成相關(guān)外文參考文獻(xiàn)的翻譯;第15周:申請(qǐng)畢業(yè)論文答辯,準(zhǔn)備答辯

7、相關(guān)資料。</p><p> 4、指導(dǎo)教師意見指導(dǎo)教師簽名: 年 月 日 </p><p><b>  目錄</b></p><p><b>  摘要I</b></p><p>  AbstractII</p><p><b>  1 緒論

8、1</b></p><p>  1.1本課題選取的目的及意義1</p><p>  1.2 目前國(guó)內(nèi)外本課題研究狀況2</p><p>  1.3 本文的主要工作3</p><p>  2串行通信理論的有關(guān)概念5</p><p><b>  2.1 通信5</b></

9、p><p>  2.2 通信參數(shù)6</p><p><b>  2.3工作模式6</b></p><p>  2.4 同步通信與異步通信7</p><p>  3 幾種常用串行總線協(xié)議及方案選取8</p><p>  3.1 IIC總線傳輸協(xié)議8</p><p>  

10、3.2 SPI總線傳輸協(xié)議11</p><p>  3.3 串口通信傳輸協(xié)議13</p><p>  3.3.1 80C51單片機(jī)的串行口的結(jié)構(gòu)13</p><p>  3.3.2 80C51串行口的控制寄存器13</p><p>  3.3.3 80C51單片機(jī)串行口的工作方式14</p><p>  3.

11、4 方案選取17</p><p>  4 主從通信系統(tǒng)設(shè)計(jì)18</p><p>  4.1 硬件原理圖設(shè)計(jì)18</p><p>  4.2 軟件的編寫19</p><p>  5主從式總線通信系統(tǒng)仿真22</p><p><b>  6 論文總結(jié)24</b></p>&l

12、t;p><b>  致謝25</b></p><p><b>  參考文獻(xiàn)26</b></p><p><b>  附錄27</b></p><p><b>  摘要</b></p><p>  在要監(jiān)控的范圍較大或監(jiān)控點(diǎn)數(shù)較多的情況下,就需要

13、把監(jiān)控工作分散進(jìn)行,而把監(jiān)控結(jié)果集中管理。這就是所謂的分布式監(jiān)控。而分布式監(jiān)控比較常用的一種通信方式就是主從式通信了。本文介紹了一個(gè)單片機(jī)做主機(jī),兩個(gè)單片機(jī)做從機(jī)的小型主從式總線通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。系統(tǒng)不僅實(shí)現(xiàn)了主從機(jī)之間的通信,而且實(shí)現(xiàn)了從機(jī)之間的通信。</p><p>  本文以主從式通信系統(tǒng)的分析與設(shè)計(jì)為主線,首先了解串行通信理論的有關(guān)概念,由此引出了多臺(tái)設(shè)備間的串行通信模式,并提出了一個(gè)按總線方式將多個(gè)

14、RS-232的發(fā)送端并聯(lián)的可行方案。同時(shí)也介紹了單片機(jī)之間的串行通信設(shè)計(jì)。主從式通信的程序由兩部分組成,一部分是主機(jī)的串行通信程序,別一部分是從機(jī)的串行通信程序。因此要設(shè)計(jì)一個(gè)協(xié)議管理主從機(jī)之間的通信。</p><p>  通信協(xié)議的設(shè)計(jì)主要解決了以下幾個(gè)問題:1.對(duì)于主從式通信系統(tǒng)的設(shè)計(jì)通過通信協(xié)議進(jìn)行管理,可以對(duì)主從機(jī)之間的通信進(jìn)行規(guī)范化管理,使整個(gè)系統(tǒng)不會(huì)陷入混亂通信之中。2.設(shè)計(jì)了主機(jī)向從機(jī)發(fā)送通信方式的

15、命令格式,從機(jī)向主機(jī)發(fā)送反饋命令的格式,以及通訊握手和發(fā)送/接收的具體處理流程</p><p>  關(guān)鍵字:主從式,多機(jī)通信,RS-232串行數(shù)據(jù)通信</p><p><b>  Abstract</b></p><p>  As large number of observation points are monitored simultan

16、eously,each of the tasks can be controlled through a distributed control system in order to focus on the result of observation. This is called the Distributed Monitoring. The distributed control is commonly used as a way

17、 of master-slave communication. This article describes a microcontroller to be the host and two small microcontroller to be the slave and by this way to design a master-slave bus communication system. System not only rea

18、</p><p>  This thesis focused on analysis and design of a communications plan for a distributed monitored control system.In the beginning the application background and the layout of the devices are introduc

19、ed,this leads to the serial communication mode between multiple-device.After the introduction a feasible way to let several RS-232’s TXDbe in parallel via bus is described. Also introduced the design of serial communicat

20、ion between MCU.</p><p>  Communication protocol designed mainly to solve the following problems:first,for the master-slave communication system design management through communication protocols can be stand

21、ardized management the master slave communications.By this way, the whole system will not into chaos communications.second, Design of the host machine to send a communication from the command format, feedback from the ma

22、chine to send commands to the format of the host ,Communication handshake and send / receive the sp</p><p>  Key Words: Master-slave mode, Muliple-computer communication, RS-232 serial date communication<

23、/p><p><b>  1 緒論</b></p><p>  為了提高系統(tǒng)管理的先進(jìn)性和安全性,計(jì)算機(jī)工業(yè)自動(dòng)控制和檢測(cè)系統(tǒng)越來越多地采用集總分散系統(tǒng)。較為常見的形式是由一臺(tái)作管理用的上位主計(jì)算機(jī)(主機(jī))和多臺(tái)直接參與控制檢測(cè)的下位從計(jì)算機(jī)(從機(jī))構(gòu)成的主從式多機(jī)系統(tǒng),主機(jī)和從機(jī)之間以通訊的方式來協(xié)調(diào)工作。主機(jī)的作用一是要向從機(jī)發(fā)送各種命令及參數(shù);二是要及時(shí)收集、整理和

24、分析從機(jī)發(fā)回的數(shù)據(jù),供進(jìn)一步?jīng)Q策和報(bào)表。從機(jī)被動(dòng)地接收、執(zhí)行主機(jī)發(fā)來的命令,并且根據(jù)主機(jī)的要求向主機(jī)回傳相應(yīng)的實(shí)時(shí)數(shù)據(jù),報(bào)告其運(yùn)行狀態(tài)[1]。</p><p>  1.1本課題選取的目的及意義</p><p>  由于計(jì)算機(jī)工業(yè)自動(dòng)控制和檢測(cè)系統(tǒng)越來越多地采用集總分散系統(tǒng),而主從式是其中最為普遍的一種方式。51單片機(jī)由于其出色的性能和便宜的價(jià)格,目前仍然是國(guó)內(nèi)用的最為廣泛的8位單片機(jī)類型,

25、因此選取基于51單片機(jī)的主從通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)這個(gè)課題是十分有意義的。通過這個(gè)課題,不僅對(duì)51單片機(jī)有了一個(gè)比較系統(tǒng)的認(rèn)識(shí)與了解,還可以將所學(xué)習(xí)的單片機(jī)和C語言的有關(guān)知識(shí)應(yīng)用到具體的實(shí)際中去。同時(shí),通過本次課題,還可以對(duì)主從通信有一個(gè)大體上的認(rèn)識(shí)了解。通過查找資料,可以學(xué)習(xí)到各種各樣的主從通信的方法,也可以通過對(duì)比學(xué)習(xí)到具體實(shí)際情況下各種方法的具體應(yīng)用。</p><p>  隨著計(jì)算機(jī)系統(tǒng)的應(yīng)用和微機(jī)網(wǎng)絡(luò)的發(fā)展

26、,通信功能越來越顯的重要。通信既包括計(jì)算機(jī)與外部設(shè)備之間,也包括計(jì)算機(jī)和計(jì)算機(jī)之間的信息交換。由于串行通信是在一根傳輸線上一位一位的傳送信息,所用的傳輸線少,并且可以借助現(xiàn)成的電話網(wǎng)進(jìn)行信息傳送,因此,特別適合于遠(yuǎn)距離傳輸.對(duì)于那些與計(jì)算機(jī)相距不遠(yuǎn)的人-機(jī)交換設(shè)備和串行存儲(chǔ)的外部設(shè)備如終端、打印機(jī)、邏輯分析儀、磁盤等,采用串行方式交換數(shù)據(jù)也很普遍。在實(shí)時(shí)控制和管理方面,采用多臺(tái)微機(jī)處理機(jī)組成分級(jí)分布控制系統(tǒng)中,各 CPU 之間的通信一般

27、都是串行方式。所以串行接口是微機(jī)應(yīng)用系統(tǒng)常用的接口。本次課題的設(shè)計(jì)所采用的方法是用串口通信的方法來實(shí)現(xiàn)主從式總線通信系統(tǒng)的。這是因?yàn)橛么锌偩€技術(shù)可以使集總分散系統(tǒng)的硬件設(shè)計(jì)大大簡(jiǎn)化、系統(tǒng)的體積減小、可靠性提高。同時(shí),系統(tǒng)的更改和擴(kuò)充極為容易。MCS-51系列單片機(jī),由于內(nèi)部帶有一個(gè)可用于異步通訊的全雙工的串行通訊接口,因此可以很方便地構(gòu)成一個(gè)主從式多機(jī)系統(tǒng)。</p><p>  1.2 目前國(guó)內(nèi)外本課題研究狀況

28、</p><p>  由于計(jì)算機(jī)工業(yè)自動(dòng)控制和檢測(cè)系統(tǒng)越來越多地采用集總分散系統(tǒng),而主從式是其中最為普遍的一種方式,因此各種各樣主從式總線通信系統(tǒng)的方法不斷涌現(xiàn)。目前比較常用的有利用IIC總線傳輸協(xié)議設(shè)計(jì)的主從式總線通信系統(tǒng),還有的是利用SPI總線傳輸協(xié)議和USB協(xié)議以及串口通信等設(shè)計(jì)的主從式總線通信系統(tǒng)。</p><p>  由于主從式總線通信系統(tǒng)采用的的方法眾多,因此目前國(guó)內(nèi)外一般是根

29、據(jù)實(shí)際情況而采用不同的方法去實(shí)現(xiàn)主從式通信系統(tǒng)的功能。比如,如果要設(shè)計(jì)的主從式通信系統(tǒng)只是在小范圍內(nèi)傳送數(shù)據(jù),甚至只是在板間傳送數(shù)據(jù),或者要求使用的I/O口很少,而對(duì)于數(shù)據(jù)的抗干擾能力的要求不是很高的話,則采用IIC總線傳輸協(xié)議是最合適不過的了[2]。IIC總線支持任何一種IC制造工藝,并且 PHILIPS和其他廠商提供了種類非常豐富的I2C兼容芯片。作為一個(gè)專利的控制總線,IIC已經(jīng)成為世界性的工業(yè)標(biāo)準(zhǔn)。每個(gè)器件都有一個(gè)唯一的地址,而

30、且可以是單接收的器件(例如:LCD驅(qū)動(dòng)器)或者可以接 收也可以發(fā)送的器件(例如:存儲(chǔ)器)。發(fā)送器或接收器可以在主模式或從模式下操作,這取決于芯片是否必須啟動(dòng)數(shù)據(jù)的傳輸還是僅僅被尋址。IIC是一個(gè)多主總線,即它可以由多個(gè)連接的器件控制。</p><p>  基本的I2C總線規(guī)范于20年前發(fā)布,其數(shù)據(jù)傳輸速率最高為100Kbits/s,采用7位尋址。但是由于數(shù)據(jù)傳輸速率和應(yīng)用功能的迅速增加,I2C總線也增強(qiáng)為快速模式

31、(400Kbits/s)和10位尋址以滿足更高速度和更大尋址空間的需求。IIC總線始終和先進(jìn)技術(shù)保持同步,但仍然保持其向下兼容性。并且最近還增加了高速模式,其速度可達(dá)3.4Mbits/s。它使得IIC總線能夠支持現(xiàn)有以及將來的高速串行傳輸應(yīng)用,例如EEPROM和Flash存儲(chǔ)器。</p><p>  而如果需要遠(yuǎn)距離傳輸數(shù)據(jù),且對(duì)數(shù)據(jù)傳送的抗干擾能力要求有點(diǎn)高,則可以使用RS-422或者RS-485協(xié)議進(jìn)行主從式

32、通信系統(tǒng)的設(shè)計(jì)。另外,USB協(xié)議則是一種比較新型、快速、靈活的總線傳輸方法,此通信系統(tǒng)通常只有一個(gè)主機(jī),利用此方法設(shè)計(jì)的通信系統(tǒng)有如下特點(diǎn):(1)適用范圍廣泛,適用于數(shù)碼相機(jī),高速數(shù)據(jù)采集等多種設(shè)備;(2)支持熱拔插,且此過程由系統(tǒng)自動(dòng)完成,無需用戶干預(yù);(3)采用菊花鏈?zhǔn)降男切涂偩€結(jié)構(gòu),支持多達(dá)127個(gè)外設(shè)同時(shí)連接;(4)1.5Mbps、12Mbps和480Mbps的3種速度模式,可以滿足不同外設(shè)對(duì)速度的要求[3]。USB發(fā)展到今天,

33、總共有三種標(biāo)準(zhǔn):1996年發(fā)布的USB1.0,1998年發(fā)布的USB1.1以及剛剛發(fā)布的最新標(biāo)準(zhǔn)USB2.0,此三種標(biāo)準(zhǔn)最大的差別就在于數(shù)據(jù)傳輸率方面,在其它方面也有不同程度的改進(jìn),總體來說,就目前的USB2.0而言,已經(jīng)擁有什么出眾的性能與傳輸速率。USB數(shù)據(jù)線由兩對(duì)線組成,一對(duì)數(shù)據(jù)線,一對(duì)電力線,通過電力線可以為USB設(shè)備提供 5V 電壓,允許通過最大電流為500mA ,這個(gè)數(shù)字不算很大,但好在聊勝于無,可以滿足一些耗電量較少的設(shè)備

34、的需求</p><p>  當(dāng)所要設(shè)計(jì)的主從式總線通信系統(tǒng)采用譬如MSP430單片機(jī)當(dāng)主機(jī)或者從機(jī)時(shí),由于此單片機(jī)具有支持SPI的片內(nèi)串行通信接口,所以可以采用SPI總線傳輸協(xié)議進(jìn)行設(shè)計(jì)。SPI是英語Serial Peripheral interface的縮寫,顧名思義就是串行外圍設(shè)備接口。是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要應(yīng)用在 EEPROM,F(xiàn)LASH,實(shí)時(shí)時(shí)鐘,AD

35、轉(zhuǎn)換器,還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間。SPI是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡(jiǎn)單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議,比如AT91RM9200。串行外圍設(shè)備接口SPI是一種同步串行接口,因其硬件功能強(qiáng),與SPI有關(guān)的軟件就相當(dāng)簡(jiǎn)單,可使MSP430單片機(jī)有更多的時(shí)間處理其他任務(wù)。此時(shí),所設(shè)計(jì)的系統(tǒng)擁有極低的功

36、耗,豐富的片內(nèi)外設(shè),卓越的工作性能和方便靈活等優(yōu)點(diǎn)[4]。</p><p>  1.3 本文的主要工作</p><p>  本次畢業(yè)設(shè)計(jì)的主要工作是設(shè)計(jì)出一個(gè)51單片機(jī)總線式主從通信系統(tǒng)。實(shí)現(xiàn)基于主從總線的數(shù)據(jù)傳送,除了實(shí)現(xiàn)主機(jī)與從機(jī)間的數(shù)據(jù)傳送外,還實(shí)現(xiàn)從機(jī)到從機(jī)的數(shù)據(jù)傳送的功能。為了方便起見,先設(shè)計(jì)一個(gè)一主兩從的通信系統(tǒng),畫出系統(tǒng)的硬件原理圖,并且在此原理圖的基礎(chǔ)上設(shè)計(jì)出軟件實(shí)現(xiàn)此功能

37、。至于更加復(fù)雜的主從式多機(jī)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)可以在此系統(tǒng)的基礎(chǔ)上進(jìn)行擴(kuò)展實(shí)現(xiàn)。</p><p>  在本次主從式通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)過程中,首先要做的工作是設(shè)計(jì)出一個(gè)主從式通信系統(tǒng)的硬件原理框圖,然后在此原理框圖的基礎(chǔ)上進(jìn)行具體的硬件電路設(shè)計(jì),在設(shè)計(jì)過程中要充分考濾到可能出現(xiàn)的問題,然后找出合理的方法解決。在已設(shè)計(jì)好了的硬件電路的基礎(chǔ)上再進(jìn)行具體的軟件編寫,滿足任務(wù)書上主從式通信系統(tǒng)的功能要求。在編寫程序代碼的過程

38、中,要了解串口通信的原理,并且能通過串口進(jìn)行正確的數(shù)據(jù)傳送。再者,為了對(duì)整個(gè)系統(tǒng)進(jìn)行有效的,規(guī)范的管理,使之能夠正確通信,必須設(shè)計(jì)出一個(gè)通信協(xié)議進(jìn)行管理。同時(shí)通信協(xié)議也對(duì)主從機(jī)之間的接收/發(fā)送數(shù)據(jù)流程有了直觀的規(guī)定。</p><p><b>  論文結(jié)構(gòu)如下:</b></p><p>  第一章,緒論。介紹課題背景、發(fā)展現(xiàn)狀,課題意義、應(yīng)用前景等。</p>

39、<p>  第二章,簡(jiǎn)要介紹串行通信理論的有關(guān)概念。比如有通信、工作模式和同步異步通信等,對(duì)此章的更好了解有助于IIC總線傳輸協(xié)議、串口通信等原理的學(xué)習(xí)。</p><p>  第三章,根據(jù)國(guó)內(nèi)外目前采用的主從式總線設(shè)計(jì)方法列出了幾種比較常用且簡(jiǎn)單的方法,并且介紹了它們的原理。同時(shí),根據(jù)所選課題的實(shí)際情況選取最好的方案進(jìn)行主從式總線通信系統(tǒng)的選取。</p><p>  第四章,

40、對(duì)于已經(jīng)選取好的方案進(jìn)行系統(tǒng)的硬件設(shè)計(jì),對(duì)于硬件的設(shè)計(jì)中出現(xiàn)的問題尋找解決辦法。并且在此硬件基礎(chǔ)上進(jìn)行相應(yīng)的軟件代碼編寫。</p><p>  第五章,在已經(jīng)構(gòu)建的軟、硬件平臺(tái)上,對(duì)系統(tǒng)進(jìn)行系統(tǒng)測(cè)試,并針對(duì)測(cè)試結(jié)果進(jìn)行調(diào)試。</p><p>  第六章,總結(jié)論文工作。對(duì)設(shè)計(jì)的不足之處提出改進(jìn)方案,并提出下一步的研究方向。</p><p>  2串行通信理論的有關(guān)概念

41、</p><p><b>  2.1 通信</b></p><p>  不同的獨(dú)立系統(tǒng)利用線路互相交換數(shù)據(jù)便是通信,而構(gòu)成整個(gè)通信的線路稱為網(wǎng)絡(luò)。通信的目的不外乎數(shù)據(jù)的交換,數(shù)據(jù)必須經(jīng)過交換才能由發(fā)送端到達(dá)接收端,發(fā)送端所使用的方法就是將數(shù)據(jù)利用一定的程序通過線路發(fā)送出去,接收端則根據(jù)協(xié)議將數(shù)據(jù)收集起來并且進(jìn)行存儲(chǔ)或顯示。</p><p>&l

42、t;b>  數(shù)據(jù)發(fā)送</b></p><p>  通信的主要目的是將數(shù)據(jù)從一端發(fā)送到另一端,以實(shí)現(xiàn)數(shù)據(jù)的交換。計(jì)算機(jī)與設(shè)備間的數(shù)據(jù)交換,計(jì)算機(jī)與計(jì)算機(jī)間的數(shù)據(jù)傳輸都屬于通信的范疇。一個(gè)完整的通信系統(tǒng)包括發(fā)送端、接收端、轉(zhuǎn)換數(shù)據(jù)的接口及發(fā)送數(shù)據(jù)的實(shí)際信道或媒體。一般情況下,發(fā)送與接收的節(jié)點(diǎn)稱為DTE(Data Terminal Equipment,數(shù)據(jù)終端設(shè)備)。數(shù)據(jù)在到達(dá)正確目的地之前,可能需要

43、經(jīng)過一系列中間節(jié)點(diǎn),這些中間節(jié)點(diǎn)負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)送工作,以送達(dá)目的地,這些中間節(jié)點(diǎn)稱為DSE(Data Switching Equipment,數(shù)據(jù)交換設(shè)備)。終端設(shè)備發(fā)送數(shù)據(jù)時(shí),必須先將數(shù)據(jù)轉(zhuǎn)換為電氣信號(hào),以便在線路上傳遞,而負(fù)責(zé)數(shù)據(jù)與電氣信號(hào)轉(zhuǎn)換的設(shè)備稱為DCE(Data Communication Equipment,數(shù)據(jù)通信設(shè)備)。DTE與DCE間的數(shù)據(jù)傳輸線路通常使用RS-232串行通信,而DCE與DSE間的媒體則包括了雙絞線、同

44、軸電纜、光纖或無線電等[5] [6]。</p><p><b>  2.通信的種類</b></p><p>  通常通信的形式可以分為兩種,一種為并行數(shù)據(jù)通信,另一種則為串行數(shù)據(jù)通信。兩種不同的通信模式如圖2-1所示。</p><p>  圖2-1 并行與串行</p><p>  由圖1可知,并行數(shù)據(jù)通信一次的傳輸量為

45、8個(gè)位(1個(gè)字節(jié)),而串行數(shù)據(jù)通信則是一次只傳輸1位。</p><p>  并行數(shù)據(jù)通信是指數(shù)據(jù)的各位同時(shí)進(jìn)行傳送的通信方式。其優(yōu)點(diǎn)是傳送速度快;缺點(diǎn)是數(shù)據(jù)有多少位,就需要多少根傳送線。</p><p>  串行數(shù)據(jù)通信是指數(shù)據(jù)是一位一位順序傳送的通信方式,它的突出優(yōu)點(diǎn)是只需一對(duì)傳送線,這樣就大大降低了傳送成本,特別適應(yīng)于遠(yuǎn)距離通信;其缺點(diǎn)是傳送速度較低。假設(shè)并行傳送N位數(shù)據(jù)所需時(shí)間為T,

46、那么串行傳送的時(shí)間至少為N*T [6]。</p><p><b>  2.2 通信參數(shù)</b></p><p>  雙方為了可以進(jìn)行通信,必須要遵守一定的通信規(guī)則,這個(gè)共同的規(guī)則就是通信端口的初始化。通信端口的初始化有以下幾項(xiàng)必須設(shè)置:</p><p><b>  數(shù)據(jù)的傳輸速率</b></p><p&

47、gt;  傳輸雙方通過傳輸線的電壓改變來交換數(shù)據(jù),但傳輸線的電壓改變的速度必須和接收端的接收速度保持一致,RS-232通常用于異步傳輸,即雙方并沒有一個(gè)可參考的同步時(shí)鐘作為基準(zhǔn)。由于沒有一個(gè)參考時(shí)鐘,雙方所發(fā)送的高低電位到底代表幾個(gè)位就不得而知了,要使得雙方的數(shù)據(jù)讀取正常,就要考慮到傳輸速率——波特率,其所代表的意義是每秒鐘所能產(chǎn)生的最大電壓狀態(tài)改變率,或者說是每秒鐘可以振蕩的次數(shù)。</p><p>  原始信號(hào)

48、經(jīng)過不同的波特率取樣后,所得的結(jié)果完全不一樣。取樣速度只有原來的一半時(shí),信號(hào)被跳著取樣,數(shù)據(jù)因此產(chǎn)生錯(cuò)誤。因此通信雙方獲得相同的通信速度是首先要做的事情[5]。</p><p><b>  數(shù)據(jù)的發(fā)送單位</b></p><p>  一般串行通信端口所發(fā)送的數(shù)據(jù)是字符類型的,若用來傳輸文件,則會(huì)使用二進(jìn)制的數(shù)據(jù)類型。當(dāng)使用字符類型時(shí),通常使用ASCII碼,ASCII碼

49、中8個(gè)位形成一個(gè)字符。以實(shí)際的RS-232傳輸來看,由于大多數(shù)應(yīng)用只是發(fā)送文字碼,因此只要7個(gè)位就可以將ASCII碼的0-127號(hào)字符表達(dá)出來,所有的可見字符都在這個(gè)范圍內(nèi),所以只要7個(gè)數(shù)據(jù)位就足夠了。不同的情況下,會(huì)使用到不同的發(fā)送單位,但使用多少個(gè)位合成一個(gè)字節(jié)必須先行確定[5]。</p><p><b>  起始位及停止位</b></p><p>  由于異步串

50、行通信中并沒有使用同步脈沖作為基準(zhǔn),故接收端完全不知道發(fā)送端何時(shí)將進(jìn)行數(shù)據(jù)的發(fā)送,而當(dāng)發(fā)送端準(zhǔn)備要開始發(fā)送數(shù)據(jù)時(shí),發(fā)送端會(huì)在所送出的字符前后分別加上高電位的起始位(邏輯0)及低電位的停止位(邏輯1),它們分別是所謂的起始位和停止位。當(dāng)發(fā)送端要開始發(fā)送數(shù)據(jù)時(shí),便將傳輸在線的電位由低電位提升至高電位,而當(dāng)發(fā)送結(jié)束后,再將電位降至低電位。接收端會(huì)因起始位的觸發(fā)(因電壓由低電位升至高電位)而開始接收數(shù)據(jù),并因停止位的通知(因電壓維持在低電位)而

51、確切數(shù)據(jù)的字符信號(hào)已經(jīng)結(jié)束[5]。</p><p><b>  校驗(yàn)位的檢查</b></p><p>  為了預(yù)防錯(cuò)誤的產(chǎn)生,因此使用校驗(yàn)位作為檢查的機(jī)制;校驗(yàn)位是用來檢查所發(fā)送數(shù)據(jù)正確性的一種核對(duì)碼,其中又分成奇校驗(yàn)位和偶校驗(yàn)位兩種方式,分別是檢查字符碼中I的數(shù)目是奇數(shù)或偶數(shù)。以偶校驗(yàn)位為例,A的ASCII碼01100001 (二進(jìn)制),其中1的數(shù)目是三個(gè),因此校驗(yàn)

52、位便是1,使1的數(shù)目保持偶數(shù)。同理,校驗(yàn)位是奇校驗(yàn)位時(shí),A的校驗(yàn)位便是0,使1的數(shù)目保持奇數(shù)[5]。</p><p><b>  2.3工作模式</b></p><p>  數(shù)據(jù)傳輸查模式有單工、半雙工、全雙工和多工工作方式。單工方式時(shí),數(shù)據(jù)僅按一個(gè)固定方向傳送。因而這種傳輸方式的用途有限,常用于串行口的打印數(shù)據(jù)傳輸與簡(jiǎn)單系統(tǒng)間的數(shù)據(jù)采集。半雙工方式時(shí)數(shù)據(jù)可實(shí)現(xiàn)雙向傳

53、送,但不能同時(shí)進(jìn)行,實(shí)際的應(yīng)用采用某種協(xié)議實(shí)現(xiàn)收/發(fā)開關(guān)轉(zhuǎn)換。全雙工方式時(shí)允許雙方同時(shí)進(jìn)行數(shù)據(jù)雙向傳送。這三種傳輸方式都是用同一線路傳輸同一種頻率信號(hào),為了充分利用線路資源,可通過使用多路復(fù)用器或多路集線器,采用頻分、時(shí)分或碼分復(fù)用技術(shù),即可實(shí)現(xiàn)在同一線路上共享功能,我們稱之為多工傳輸方式。幾種傳輸方式框圖如圖2-2所示。從前往后依次為單工、半雙工和全雙工。</p><p>  圖2-2 三種傳輸方式</p

54、><p>  不同的工作模式可以應(yīng)用在不同的地方,也各有其優(yōu)點(diǎn)。就串行通信而言,RS-232使用的是全雙工的模式。同時(shí)可以利用的傳輸線路決定了工作模式。RS- 232之所以能達(dá)到全雙工的功能,就是因?yàn)槠湟_在設(shè)計(jì)上是接收與發(fā)送分屬兩個(gè)不同的引腳與線路[7]。</p><p>  2.4 同步通信與異步通信</p><p>  異步通信是指通信的發(fā)送與接收設(shè)備使用各自的時(shí)

55、鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設(shè)備的時(shí)鐘盡可能一致。異步通信以字符(構(gòu)成的幀)為單位進(jìn)行傳輸,字符與字符之間的間隙(時(shí)間間隔)也是任意的,但每個(gè)字符中的各位是以固定的時(shí)間傳送的。原理圖如圖2-3所示。</p><p>  圖2-3 異步通信原理圖</p><p>  同步通信時(shí)要建立發(fā)送方時(shí)鐘對(duì)接收方時(shí)鐘的直接控制,使雙方達(dá)到完全同步。此時(shí),傳輸數(shù)據(jù)的位之間

56、的距離均為“位間隔”的整數(shù)倍,同時(shí)傳送的字符間不留間隙,即保持位同步關(guān)系,也保持字符同步關(guān)系。發(fā)送方對(duì)接收方的同步可以通過外同步和自同步兩種方法實(shí)現(xiàn)[7][8]。為自同步原理圖如圖2-4所示。</p><p>  圖2-4 同步通信原理圖</p><p>  3 幾種常用串行總線協(xié)議及方案選取</p><p>  目前使用的比較廣泛的串行總線傳輸協(xié)議有IIC總線傳輸

57、協(xié)議、SPI總線傳輸協(xié)議以及RS-232總線協(xié)議。無論利用其中任何一種總線協(xié)議都可以設(shè)計(jì)出一個(gè)主從式總線通信系統(tǒng)?,F(xiàn)在分別介紹其數(shù)據(jù)傳輸原理。</p><p>  3.1 IIC總線傳輸協(xié)議</p><p>  IIC總線是PHLIPS公司推出的一種串行總線,是具備多主機(jī)系統(tǒng)所需的包括總線裁決和高低速器件同步功能的高性能串行總線。IIC總線只有兩根雙向信號(hào)線。一根是數(shù)據(jù)線SDA,另一根是時(shí)

58、鐘線SCL。IIC總線通過上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號(hào)變低,即各器件的SDA及SCL都是線“與”關(guān)系[7][9]。</p><p>  每個(gè)接到IIC總線上的器件都有唯一的地址。主機(jī)與其它器件間的數(shù)據(jù)傳送可以是由主機(jī)發(fā)送數(shù)據(jù)到其它器件,這時(shí)主機(jī)即為發(fā)送器。由總線上接收數(shù)據(jù)的器件則為接收器。在多主機(jī)系統(tǒng)中,可能同時(shí)有幾個(gè)主機(jī)企圖啟動(dòng)總線傳送數(shù)據(jù)

59、。為了避免混亂,IIC總線要通過總線仲裁,以決定由哪一臺(tái)主機(jī)控制總線。</p><p>  數(shù)據(jù)的有效位規(guī)定:IIC總線進(jìn)行數(shù)據(jù)傳送時(shí),時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時(shí)鐘線上的信號(hào)為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化,如圖3-1所示。</p><p>  圖3-1 IIC總線數(shù)據(jù)傳輸有效位原理圖</p><p>  起始和終

60、止信號(hào) :SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號(hào);SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號(hào),如圖3-2所示。</p><p>  圖3-2 起始信號(hào)和終止信號(hào)原理圖</p><p>  起始和終止信號(hào)都是由主機(jī)發(fā)出的,在起始信號(hào)產(chǎn)生后,總線就處于被占用的狀態(tài);在終止信號(hào)產(chǎn)生后,總線就處于空閑狀態(tài)。連接到I2C總線上的器件,若具有IIC總線的

61、硬件接口,則很容易檢測(cè)到起始和終止信號(hào)。接收器件收到一個(gè)完整的數(shù)據(jù)字節(jié)后,有可能需要完成一些其它工作,如處理內(nèi)部中斷服務(wù)等,可能無法立刻接收下一個(gè)字節(jié),這時(shí)接收器件可以將SCL線拉成低電平,從而使主機(jī)處于等待狀態(tài)。直到接收器件準(zhǔn)備好接收下一個(gè)字節(jié)時(shí),再釋放SCL線使之為高電平,從而使數(shù)據(jù)傳送可以繼續(xù)進(jìn)行。</p><p>  數(shù)據(jù)傳送格式:(1)字節(jié)傳送與應(yīng)答</p><p>  每一個(gè)字

62、節(jié)必須保證是8位長(zhǎng)度。數(shù)據(jù)傳送時(shí),先傳送最高位(MSB),每一個(gè)被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位(即一幀共有9位)。原理圖如圖3-3所示。如果一段時(shí)間內(nèi)沒有收到從機(jī)的應(yīng)答信號(hào),則自動(dòng)認(rèn)為從機(jī)已正確接收到數(shù)據(jù)。由于某種原因從機(jī)不對(duì)主機(jī)尋址信號(hào)應(yīng)答時(shí)(如從機(jī)正在進(jìn)行實(shí)時(shí)性的處理工作而無法接收總線上的數(shù)據(jù)),它必須將數(shù)據(jù)線置于高電平,而由主機(jī)產(chǎn)生一個(gè)終止信號(hào)以結(jié)束總線的數(shù)據(jù)傳送。如果從機(jī)對(duì)主機(jī)進(jìn)行了應(yīng)答,但在數(shù)據(jù)傳送一段時(shí)間后無法繼續(xù)接收

63、更多的數(shù)據(jù)時(shí),從機(jī)可以通過對(duì)無法接收的第一個(gè)數(shù)據(jù)字節(jié)的“非應(yīng)答”通知主機(jī),主機(jī)則應(yīng)發(fā)出終止信號(hào)以結(jié)束數(shù)據(jù)的繼續(xù)傳送。當(dāng)主機(jī)接收數(shù)據(jù)時(shí),它收到最后一個(gè)數(shù)據(jù)字節(jié)后,必須向從機(jī)發(fā)出一個(gè)結(jié)束傳送的信號(hào)。這個(gè)信號(hào)是由對(duì)從機(jī)的“非應(yīng)答”來實(shí)現(xiàn)的。然后,從機(jī)釋放SDA線,以允許主機(jī)產(chǎn)生終止信號(hào)。</p><p>  圖3-3 IIC字符傳送格式</p><p><b>  (2)數(shù)據(jù)幀格式&l

64、t;/b></p><p>  IIC總線上傳送的數(shù)據(jù)信號(hào)是廣義的,既包括地址信號(hào),又包括真正的數(shù)據(jù)信號(hào)。在起始信號(hào)后必須傳送一個(gè)從機(jī)的地址(7位),第8位是數(shù)據(jù)的傳送方向位(R/T),用“0”表示主機(jī)發(fā)送數(shù)據(jù)(T),“1”表示主機(jī)接收數(shù)據(jù)(R)。每次數(shù)據(jù)傳送總是由主機(jī)產(chǎn)生的終止信號(hào)結(jié)束。但是,若主機(jī)希望繼續(xù)占用總線進(jìn)行新的數(shù)據(jù)傳送,則可以不產(chǎn)生終止信號(hào),馬上再次發(fā)出起始信號(hào)對(duì)另一從機(jī)進(jìn)行尋址。在總線的一次

65、數(shù)據(jù)傳送過程中,可以有三種組合方式:第一是主機(jī)向從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)傳送方向在整個(gè)傳送過程中不變。第二是主機(jī)在第一個(gè)字節(jié)后,立即從從機(jī)讀數(shù)據(jù)。第三種剛是在傳送過程中,當(dāng)需要改變傳送方向時(shí),起始信號(hào)和從機(jī)地址都被重復(fù)產(chǎn)生一次,但兩次讀/寫方向位正好反相。</p><p>  IIC總線的尋址是采用7位的尋址字節(jié)(尋址字節(jié)是起始信號(hào)后的第一個(gè)字節(jié))。</p><p>  3.2 SPI總線傳輸協(xié)

66、議</p><p>  SPI的通信原理非常簡(jiǎn)單,它以主從方式工作,這種模式通常有一個(gè)主設(shè)備和多個(gè)從設(shè)備。其中CS信號(hào)是控制從機(jī)的芯片是否被選中的。如圖3-4所示,系統(tǒng)內(nèi)有一個(gè)主設(shè)備M1和兩個(gè)從設(shè)備S1與S2。當(dāng)S1的片選信號(hào)CS為低電平時(shí),S1被選中,M1通過MOSI引腳發(fā)送數(shù)據(jù),S1通過MOSI引腳接收數(shù)據(jù),或者S1通過MISO引腳發(fā)送數(shù)據(jù),而M1通過MISO引腳接收數(shù)據(jù)。同樣的,當(dāng)S2的片選信號(hào)CS為低電平

67、時(shí),S2被選中,M1通過MOSI引腳發(fā)送數(shù)據(jù),S2通過MOSI引腳接收數(shù)據(jù),或者S2通過MISO引腳發(fā)送數(shù)據(jù),而M1通過MISO引腳接收數(shù)據(jù)。從機(jī)只有通過CS信號(hào)選中之后,對(duì)此從機(jī)的操作才會(huì)有效,可見,片選信號(hào)的存在使得允許在同一總線上連接多個(gè)SPI設(shè)備成為可能。</p><p>  當(dāng)從機(jī)芯片被選中,和主機(jī)建立連接之后,接下來就是負(fù)責(zé)通訊的3根線了。通訊是通過數(shù)據(jù)交換完成的,這里首先要知道SPI是串行通訊協(xié)議,

68、也就是說數(shù)據(jù)是一位一位進(jìn)行傳輸?shù)摹_@就是SCK時(shí)鐘線存在的原因,傳輸時(shí),由SCK提供時(shí)鐘脈沖,MOSI,MISO則基于此脈沖完成數(shù)據(jù)傳輸。如圖3-4所示,當(dāng)M1給S1發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)從M1輸出通過 MOSI線,數(shù)據(jù)在時(shí)鐘脈沖的上升沿或下降沿時(shí)輸出,在緊接著的下降沿或上升沿通過S1的MOSI線被讀取。當(dāng)S1給M1發(fā)送數(shù)據(jù)時(shí),原理是一樣的,只不過通過的是MISO線來完成[10]。</p><p>  圖3-4 SPI

69、傳輸原理圖</p><p>  要注意的是,SCK信號(hào)線只由主設(shè)備控制,從設(shè)備不能控制時(shí)鐘信號(hào)線。因此,在一個(gè)基于SPI的系統(tǒng)中,必須至少有一個(gè)主控設(shè)備。在點(diǎn)對(duì)點(diǎn)的通信中,SPI接口不需要進(jìn)行尋址操作,且為全雙工通信,顯得簡(jiǎn)單高效。在多個(gè)從設(shè)備的系統(tǒng)中,每個(gè)從設(shè)備需要獨(dú)立的使能信號(hào),硬件上比IIC系統(tǒng)要稍微復(fù)雜一些。</p><p>  SPI是一個(gè)環(huán)形總線結(jié)構(gòu),其時(shí)序其實(shí)比較簡(jiǎn)單,主要是

70、在時(shí)鐘脈沖SCK的控制下,兩個(gè)雙向移位寄存器SPIDATA進(jìn)行數(shù)據(jù)交換。我們假設(shè)主機(jī)的8位寄存器SPIDATA1內(nèi)的數(shù)據(jù)是10101010,而從機(jī)的8位寄存器SPIDATA2內(nèi)的數(shù)據(jù)是01010101,在上升沿的時(shí)候發(fā)送數(shù)據(jù),在下降沿的時(shí)候接收數(shù)據(jù),最高位的數(shù)據(jù)先發(fā)送,主機(jī)和從機(jī)之間全雙工通信,也就是說兩個(gè)SPI接口同時(shí)發(fā)送和接收數(shù)據(jù),如圖3-5所示。從圖中我們也可以看到,SPIDATA移位寄存器總是將最高位的數(shù)據(jù)移出,接著將剩余的數(shù)據(jù)

71、分別左移一位,然后將接收到得數(shù)據(jù)移入其最低位[11]。</p><p>  圖3-5 SPI主從工作模式示意圖</p><p>  如圖3-6所示,當(dāng)?shù)谝粋€(gè)上升沿來的時(shí)候,SPIDATA1將最高位1移除,并將所有數(shù)據(jù)左移1位,這時(shí)MOSI線為高電平,而SPIDATA2將最高位0移出,并將所有數(shù)據(jù)左移1位,這樣MISO線為低電平。然后當(dāng)下降沿到來的時(shí)候,SPIDATA1將鎖存MISO線上的電

72、平,并將其移入其最低位,同樣的,SPIDATA2將鎖存MOSI線上的電平,并將其移入最低位。經(jīng)過8個(gè)脈沖后,兩個(gè)移位寄存器就實(shí)現(xiàn)了數(shù)據(jù)的交換,也就是完成了一次SPI的時(shí)序[11]。</p><p>  圖3-6 數(shù)據(jù)傳輸示例</p><p>  3.3 串口通信傳輸協(xié)議</p><p>  由于本次設(shè)計(jì)的題目是基于8051單片機(jī)的主從式通信系統(tǒng)的設(shè)計(jì),因此有關(guān)串口通

73、信的原理的介紹都是圍繞51單片機(jī)講解的。</p><p>  3.3.1 80C51單片機(jī)的串行口的結(jié)構(gòu)</p><p>  MCS-51單片機(jī)內(nèi)部有一個(gè)全雙工的串行通信口,即串行接收和發(fā)送緩沖器(SBUF),這兩個(gè)在物理上獨(dú)立的接發(fā)送器,既可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù)。但接收緩沖器只能讀出不能寫入,而發(fā)送緩沖器剛只能寫入不能讀出。這個(gè)通信口既可以用于網(wǎng)絡(luò)通信,亦可以實(shí)現(xiàn)串行異步通信,還可以

74、構(gòu)成同步移位寄存器使用。如果在傳行口的輸入輸出引腳上加上電平轉(zhuǎn)換器,就可以方便地構(gòu)成標(biāo)準(zhǔn)的RS-232接口[7][12]。80C51單片機(jī)的串行口的結(jié)構(gòu)如圖3-7所示。</p><p>  圖3-7 80C51單片機(jī)的串行口的結(jié)構(gòu)</p><p>  串行口有兩個(gè)物理上獨(dú)立的接收、發(fā)送緩沖器SBUF,它們占用同一地址99H ;接收器是雙緩沖結(jié)構(gòu);發(fā)送緩沖器,因?yàn)榘l(fā)送時(shí)CPU是主動(dòng)的,不會(huì)產(chǎn)

75、生重疊錯(cuò)誤。 </p><p>  3.3.2 80C51串行口的控制寄存器</p><p>  1.特殊功能寄存器SCON</p><p>  SCON 是一個(gè)特殊功能寄存器,用以設(shè)定串行口的工作方式、接收/發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志,字節(jié)地址為98H。SCON寄存器的各位定義如表3-1所示。</p><p>  表3-1 SCON寄存器&l

76、t;/p><p>  SM0和SM1為工作方式選擇位,可選擇四種工作方式,如表3-2所示。</p><p>  表3-2 串口通信4種工作方式</p><p>  SM2為多機(jī)通信控制位,主要用于方式2和方式3。當(dāng)接收機(jī)的SM2=1時(shí)可以利用收到的RB8來控制是否激活RI(RB8=0時(shí)不激活RI,收到的信息丟棄;RB8=1時(shí)收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI,進(jìn)而在中斷

77、服務(wù)中將數(shù)據(jù)從SBUF讀走)。當(dāng)SM2=0時(shí),不論收到的RB8為0和1,均可以使收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI(即此時(shí)RB8不具有控制RI激活的功能)。通過控制SM2,可以實(shí)現(xiàn)多機(jī)通信。</p><p>  在方式0時(shí),SM2必須是0。在方式1時(shí),若SM2=1,則只有接收到有效停止位時(shí),RI才置1。</p><p>  REN為允許串行接收位。由軟件置REN=1,則啟動(dòng)串行口接收數(shù)據(jù);

78、若軟件置REN=0,則禁止接收。</p><p>  TB8用在方式2或方式3中,是發(fā)送數(shù)據(jù)的第九位,可以用軟件規(guī)定其作用。可以用作數(shù)據(jù)的奇偶校驗(yàn)位,或在多機(jī)通信中,作為地址幀/數(shù)據(jù)幀的標(biāo)志位(在方式0和方式1中,該位未用) 。</p><p>  RB8用在方式2或方式3中,是接收到數(shù)據(jù)的第九位,作為奇偶校驗(yàn)位或地址幀/數(shù)據(jù)幀的標(biāo)志位。在方式1時(shí),若SM2=0,則RB8是接收到的停止位。

79、</p><p>  TI,發(fā)送中斷標(biāo)志位。在方式0時(shí),當(dāng)串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行發(fā)送停止位的開始時(shí),由內(nèi)部硬件使TI置1,向CPU發(fā)中斷申請(qǐng)。在中斷服務(wù)程序中,必須用軟件將其清0,取消此中斷申請(qǐng)。</p><p>  RI,接收中斷標(biāo)志位。在方式0時(shí),當(dāng)串行接收第8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行接收停止位的中間時(shí),由內(nèi)部硬件使RI置1,向CPU發(fā)中斷申請(qǐng)。也必須在中

80、斷服務(wù)程序中,用軟件將其清0,取消此中斷申請(qǐng)[7]。</p><p>  2.特殊功能寄存器PCON</p><p>  PCON的字節(jié)地址為87H,它的第7位SMOD是與串口通信波特率的設(shè)置有關(guān)的選擇位。SMOD(PCON.7)為波特率倍增位。在串行口方式1、方式2、方式3時(shí),波特率與SMOD有關(guān),當(dāng)SMOD=1時(shí),波特率提高一倍。復(fù)位時(shí),SMOD=0。</p><p

81、>  3.3.3 80C51單片機(jī)串行口的工作方式</p><p><b>  1.方式0</b></p><p>  設(shè)置SCON寄存器的SM0、SM1=0 0時(shí),串行口工作于方式0。此時(shí),串行口為同步移位寄存器的輸入輸出方式。主要用于擴(kuò)展并行輸入或輸出口。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發(fā)送和接收均為8位數(shù)據(jù)

82、,低位在先,高位在后。波特率固定為fosc/12。其中fosc為時(shí)鐘頻率。</p><p><b>  2.方式1</b></p><p>  設(shè)置SCON寄存器的SM0、SM1=0 1時(shí),串行口工作于方式1。方式1是10位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖所示。其中1位起始位,8位數(shù)據(jù)位,1位停止位。 用軟件置RE

83、N為1時(shí),接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測(cè)到RXD引腳輸入電平發(fā)生負(fù)跳變時(shí),則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)RI=0,且SM2=0(或接收到的停止位為1)時(shí),將接收到的9位數(shù)據(jù)的前8位數(shù)據(jù)裝入接收SBUF,第9位(停止位)進(jìn)入RB8,并置RI=1,向CPU請(qǐng)求中斷。方式一

84、的輸入輸出圖如圖3-8、3-9所示。</p><p>  圖3-8 方式1輸入</p><p>  圖3-9 方式1輸出</p><p><b>  方式2和方式3</b></p><p>  設(shè)置SCON寄存器的SM0、SM1=1 0時(shí),串行口工作于方式2,當(dāng)SM0、SM1=1 1時(shí),串行口工作于方式3。方式2或方式3

85、為11位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳 。</p><p>  方式2和方式3時(shí)起始位1位,數(shù)據(jù)9位(含1位附加的第9位,發(fā)送時(shí)為SCON中的TB8,接收時(shí)為RB8),停止位1位,一幀數(shù)據(jù)為11位。方式2的波特率固定為晶振頻率的1/64或1/32,方式3的波特率由定時(shí)器T1的溢出率決定。 </p><p>  方式2和方式3輸出:發(fā)送開始時(shí),先把起始位0輸出到

86、TXD引腳,然后發(fā)送移位寄存器的輸出位(D0)到TXD引腳。每一個(gè)移位脈沖都使輸出移位寄存器的各位右移一位,并由TXD引腳輸出。第一次移位時(shí),停止位“1”移入輸出移位寄存器的第9位上 ,以后每次移位,左邊都移入0。當(dāng)停止位移至輸出位時(shí),左邊其余位全為0,檢測(cè)電路檢測(cè)到這一條件時(shí),使控制電路進(jìn)行最后一次移位,并置TI=1,向CPU請(qǐng)求中斷。發(fā)送時(shí)序圖如下圖3-10所示。</p><p>  圖3-10 方式2或方式

87、3的發(fā)送時(shí)序圖</p><p>  方式2和方式3輸入:接收時(shí),數(shù)據(jù)從右邊移入輸入移位寄存器,在起始位0移到最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)RI=0,且SM2=0(或接收到的第9位數(shù)據(jù)為1)時(shí),接收到的數(shù)據(jù)裝入接收緩沖器SBUF和RB8(接收數(shù)據(jù)的第9位),置RI=1,向CPU請(qǐng)求中斷。如果條件不滿足,則數(shù)據(jù)丟失,且不置位RI,繼續(xù)搜索RXD引腳的負(fù)跳變。接收時(shí)序圖如圖3-11所示。</p>

88、<p>  圖3--11 方式2或方式3的接收時(shí)序圖</p><p><b>  4.波特率的計(jì)算</b></p><p>  在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收數(shù)據(jù)的速率要有約定。通過軟件可對(duì)單片機(jī)串行口編程為四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率來決定。</p><p&

89、gt;  串行口的四種工作方式對(duì)應(yīng)三種波特率。由于輸入的移位時(shí)鐘的來源不同,所以,各種方式的波特率計(jì)算公式也不相同。</p><p>  方式0的波特率 = fosc/12</p><p>  方式2的波特率 =(2SMOD/64)· fosc </p><p>  方式1的波特率 =(2SMOD/32)·(T1溢出率)</p>

90、<p>  方式3的波特率 =(2SMOD/32)·(T1溢出率)</p><p>  當(dāng)T1作為波特率發(fā)生器時(shí),最典型的用法是使T1工作在自動(dòng)再裝入的8位定時(shí)器方式(即方式2,且TCON的TR1=1,以啟動(dòng)定時(shí)器)。這時(shí)溢出率取決于TH1中的計(jì)數(shù)值。計(jì)算公式如3-1所示:</p><p>  T1 溢出率 = fosc /{12×[256 -(TH1)]}

91、 (3-1)</p><p>  在單片機(jī)的應(yīng)用中,常用的晶振頻率為:12MHz和11.0592MHz。所以,選用的波特率也相對(duì)固定[13]。</p><p><b>  3.4 方案選取</b></p><p>  就三種數(shù)據(jù)傳輸協(xié)議的方式來看,串口通信是這三種方式中最為簡(jiǎn)單也是最好實(shí)現(xiàn)通信方式的一種。因?yàn)镸CS-51單片機(jī)內(nèi)

92、部有一個(gè)全雙工的串行通信口,而一般的51單片機(jī)不帶IIC總線接口和SPI總線接口。要想使用這兩種傳輸方式進(jìn)行數(shù)據(jù)傳輸?shù)脑?,必須要使用軟件模擬。而且主機(jī)從機(jī)要是都是51單片機(jī)的話,實(shí)現(xiàn)起來的難度就會(huì)非常的大。另外,雖然IIC和SPI比UART更加強(qiáng)大,但是在技術(shù)上也在更麻煩一些。同時(shí)IIC的抗干擾能力較弱,一般用于同一板卡上芯片之間的通信,較少用于遠(yuǎn)距離傳輸。所以無論是從設(shè)計(jì)的難易程序來考慮,還是從本次設(shè)計(jì)的實(shí)際情況來看,采用串口通信的方

93、式實(shí)現(xiàn)51單片機(jī)的主從式通信是最合適不過的了,除了實(shí)現(xiàn)主機(jī)與從機(jī)間的串口數(shù)據(jù)傳送外,還實(shí)現(xiàn)從機(jī)到從機(jī)的串口數(shù)據(jù)傳送的功能[9][11][12]。</p><p>  4 主從通信系統(tǒng)設(shè)計(jì)</p><p>  主從通信系統(tǒng)的設(shè)計(jì)不僅包括系統(tǒng)的硬件原理圖設(shè)計(jì),還包括基于硬件基礎(chǔ)上的軟件代碼的編寫。本文首先設(shè)計(jì)出主從通信的硬件原理圖,然后再編寫出了相應(yīng)的代碼。</p><p&

94、gt;  4.1 硬件原理圖設(shè)計(jì)</p><p>  關(guān)于51單片機(jī)的主從式通信系統(tǒng)的硬件設(shè)計(jì)的原理框圖是很容易的。本次設(shè)計(jì)主要是一個(gè)主機(jī)和兩個(gè)從機(jī)進(jìn)行通信。因此,主要需要三個(gè)單片機(jī)作主從機(jī),另外設(shè)計(jì)一些外圍硬件電路來實(shí)現(xiàn)這個(gè)主從式通信系統(tǒng)MCS-51單片機(jī)的第10號(hào)管腳RXD可用于串行數(shù)據(jù)的接收,第11號(hào)管腳TXD可用于串行數(shù)據(jù)的發(fā)送。因此,可以將主機(jī)的TXD管腳與從機(jī)的RXD相連接,以實(shí)現(xiàn)主機(jī)發(fā)送數(shù)據(jù)從機(jī)接收

95、數(shù)據(jù)的功能。而主機(jī)的RXD與從機(jī)的TXD相連接,以實(shí)現(xiàn)從機(jī)發(fā)送數(shù)據(jù)主機(jī)接收的功能。同時(shí)也可以實(shí)現(xiàn)從機(jī)與從機(jī)之間的數(shù)據(jù)通信。</p><p>  根據(jù)上面的原理框圖設(shè)計(jì)具體的硬件原理圖時(shí),如果只是簡(jiǎn)單的這樣連線的話,就會(huì)遇到一些問題。其一:當(dāng)單片機(jī)處于待機(jī)狀態(tài)時(shí),單片機(jī)的各個(gè)I/O口被默認(rèn)為是高電平,而當(dāng)主機(jī)與一個(gè)從機(jī)進(jìn)行通信,另一個(gè)從機(jī)不工作的話,傳輸線上的信號(hào)就會(huì)受到另一從機(jī)的影響,最終數(shù)據(jù)傳送會(huì)發(fā)生錯(cuò)誤。其二

96、:主從式的通信要實(shí)現(xiàn)的是主機(jī)與從機(jī)以及從機(jī)與從機(jī)之間的通信。其中包括主機(jī)與兩個(gè)從機(jī)同時(shí)通信,主機(jī)與單個(gè)從機(jī)通信(另一個(gè)從機(jī)處于待機(jī)狀態(tài)),從機(jī)與從機(jī)之間的通信。如果只是單純的連接主機(jī)與從機(jī)之間的RXD與TXD信號(hào)線是無法實(shí)現(xiàn)的[1][14]。</p><p>  為了解決上述所提到的問題,可以設(shè)計(jì)一些硬件電路來實(shí)現(xiàn)。關(guān)于主從機(jī)之間信號(hào)的影響,可以在信號(hào)端加上三態(tài)門電路,當(dāng)某個(gè)從機(jī)不進(jìn)行工作時(shí),可以設(shè)置三態(tài)門呈高阻

97、態(tài)的狀態(tài),這樣從機(jī)之間就不會(huì)相互的影響了。同時(shí),關(guān)于三態(tài)門的控制,可以設(shè)計(jì)成主機(jī)控制,這樣要想實(shí)現(xiàn)各種形式的通信都可由主機(jī)控制了。本次設(shè)計(jì)采用74HC245芯片作為三態(tài)們器件。具體的電路原理圖如圖4-1所示。</p><p>  圖4-1 硬件原理圖</p><p><b>  4.2 軟件的編寫</b></p><p>  主從式通信系統(tǒng)包括

98、主機(jī)與從機(jī)之間的通信,以及從機(jī)與從機(jī)之間的通信。因此,在編寫程序進(jìn)行數(shù)據(jù)信號(hào)傳輸時(shí),必須考慮到各種情形。同時(shí),如果想要系統(tǒng)具有實(shí)時(shí)性,數(shù)據(jù)信號(hào)則必須是可變的。數(shù)據(jù)的可變不僅包括數(shù)據(jù)的內(nèi)容,還應(yīng)該包括數(shù)據(jù)的長(zhǎng)度。</p><p>  關(guān)于各種情形的通信,程序設(shè)計(jì)時(shí),可以設(shè)計(jì)一種通信協(xié)議,采用不同的控制命令字進(jìn)行通信控制,同時(shí)也可規(guī)范的管理數(shù)據(jù)之間的傳送。我們可以將一組特殊的,用的比較少的數(shù)據(jù)用來當(dāng)成控制命令字。例如

99、,本次設(shè)計(jì)采用如下控制命令:0xaa表示主機(jī)給從機(jī)1發(fā)送數(shù)據(jù),0xbb表示主機(jī)給從機(jī)2傳送數(shù)據(jù),0xcc表示從機(jī)1給主機(jī)傳送數(shù)據(jù),0xdd表示從機(jī)2給主機(jī)傳送數(shù)據(jù),0xee表示從機(jī)1給從機(jī)2傳送數(shù)據(jù),最后0xff表示從機(jī)2給從機(jī)1傳送數(shù)據(jù)。</p><p>  本次設(shè)計(jì)所設(shè)計(jì)的通信協(xié)議為:主機(jī)首先給所有的從機(jī)發(fā)送一個(gè)控制命令字,從機(jī)接收到這個(gè)控制命令字后進(jìn)行辨認(rèn),如果是0xaa則從機(jī)1準(zhǔn)備接收主機(jī)的數(shù)據(jù),從機(jī)2處

100、于待機(jī)狀態(tài),而主機(jī)則會(huì)在發(fā)送完前面的控制命令字后發(fā)送在傳送的數(shù)據(jù)信號(hào)。當(dāng)主機(jī)發(fā)送的是0xbb控制命令字時(shí),主機(jī)在發(fā)送完控制命令字后發(fā)送要傳送的數(shù)據(jù)信號(hào),此時(shí)從機(jī)1處于待機(jī)狀態(tài),從機(jī)2接收主機(jī)發(fā)送來的數(shù)據(jù)。如果從機(jī)接收到的是0xcc,則主機(jī)在發(fā)送完控制命令字后就準(zhǔn)備接收從機(jī)1發(fā)送來的數(shù)據(jù)信號(hào),從機(jī)2處于待機(jī)狀態(tài)。當(dāng)主機(jī)發(fā)送的是0xdd控制命令字時(shí),則主機(jī)在發(fā)送完控制命令字后就準(zhǔn)備接收從機(jī)2發(fā)送來的數(shù)據(jù)信號(hào),從機(jī)1處于待機(jī)狀態(tài)。主機(jī)發(fā)送的如

101、果是0xee或者是0xff控制命令字時(shí),則表示從機(jī)與從機(jī)之間進(jìn)行數(shù)據(jù)通信,此時(shí),數(shù)據(jù)首先由從機(jī)傳送給主機(jī),再由主機(jī)傳送給另外一個(gè)從機(jī)。</p><p>  另外,對(duì)于主從機(jī)之間發(fā)送的數(shù)據(jù),有可靠傳輸方式和不可靠傳輸方式。所謂不可靠傳輸方式,就是發(fā)送端與接收端之間沒有任何關(guān)系,發(fā)送端只管發(fā)送數(shù)據(jù),接收端只管接收數(shù)據(jù)。到于數(shù)據(jù)在傳送時(shí)有沒有發(fā)生錯(cuò)誤,接收端是不會(huì)知道的。這種傳輸模式的優(yōu)點(diǎn)是相對(duì)于可靠傳輸而言,傳輸速率

102、要更高。缺點(diǎn)就像其名字一樣,數(shù)據(jù)傳送不安全。對(duì)于要求高準(zhǔn)確率的數(shù)據(jù)通信系統(tǒng),更多的采用可靠傳輸。所謂可靠傳輸,就是發(fā)送端在發(fā)送一組數(shù)據(jù)后,在數(shù)據(jù)的最后加上一個(gè)校驗(yàn)碼,而接收端在接收數(shù)據(jù)時(shí),不僅接收數(shù)據(jù),而且還要進(jìn)行計(jì)算,最后與發(fā)送端發(fā)送的校驗(yàn)碼進(jìn)行對(duì)比,如果兩個(gè)校驗(yàn)碼一致,則表示數(shù)據(jù)是正確的。如果不一致,則放棄接收到的數(shù)據(jù)。發(fā)送端重新發(fā)送數(shù)據(jù),進(jìn)而重復(fù)上面的過程,直到數(shù)據(jù)信號(hào)發(fā)送正確為止。本次設(shè)計(jì)采用可靠傳輸方式。</p>

103、<p>  在上述的所有通信過程中,當(dāng)每次數(shù)據(jù)傳送結(jié)束后,接收機(jī)在接收完所有的數(shù)據(jù)后會(huì)進(jìn)行一次求和校驗(yàn),這樣可以檢驗(yàn)數(shù)據(jù)傳送的成確與否。如果所得的求和值與發(fā)送機(jī)發(fā)出的求和校驗(yàn)碼一致時(shí),則表示數(shù)據(jù)發(fā)送正確,可以接收并存儲(chǔ)。如果所得的求和值與發(fā)送機(jī)發(fā)出的求和校驗(yàn)碼有一致時(shí),則表示數(shù)據(jù)發(fā)送時(shí)出現(xiàn)錯(cuò)誤,接收機(jī)丟棄所接收的數(shù)據(jù),并命令發(fā)送機(jī)重新發(fā)送數(shù)據(jù)。</p><p>  編寫軟件代碼時(shí),首先得弄清楚程序流程

104、圖。只有清楚了軟件流程圖,再根據(jù)流程圖進(jìn)行編寫代碼,才不會(huì)出現(xiàn)大的錯(cuò)誤。本次設(shè)計(jì)采用一個(gè)單片機(jī)作主機(jī),兩個(gè)單片機(jī)作從機(jī)進(jìn)行主從通信,具體程序流程如圖4-2、圖4-3、圖4-4如下所示。</p><p>  其中具體程序見附錄。</p><p>  圖4-2 主機(jī)程序流程圖</p><p>  圖4-3 從機(jī)1程序流程圖</p><p>  圖

105、4-4 從機(jī)2程序流程圖</p><p>  5主從式總線通信系統(tǒng)仿真</p><p>  根據(jù)上面的原理設(shè)計(jì)好硬件原理圖和編寫好軟件代碼后,可以在Proteus仿真軟件上進(jìn)行仿真了。為了得到明確可見的仿真結(jié)果,本次設(shè)計(jì)將主從機(jī)之間的數(shù)據(jù)信號(hào)進(jìn)行傳送時(shí),將接收到的數(shù)據(jù)信號(hào)利用數(shù)碼管顯示出來。這樣就可以一目了然的知道仿真結(jié)果的正確性了。具體的仿真原理圖如圖5-1所示。</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論