51單片機雙機串行通信設計要點_第1頁
51單片機雙機串行通信設計要點_第2頁
51單片機雙機串行通信設計要點_第3頁
51單片機雙機串行通信設計要點_第4頁
51單片機雙機串行通信設計要點_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、*實踐教學*XXXXX大學計算機與通信學院2013年秋季學期通信系統(tǒng)綜合訓練 課稈設計題 目:51單片機雙機串行通信設計專業(yè)班級:通信工程x班姓 名: XX學 號:XX扌旨導教師: XX成 績:摘要雙機通信的實質(zhì)就是解決兩單片機串行通信問題。針對于89C51 單片機全雙工異步串行通信口,我們采用單片機直接交叉互連的串行通信方式。考慮到本設計應用于短距離傳輸、 兩單片機具有相同的數(shù)據(jù)格式及電平且為使設計簡單,我們最終決定本系統(tǒng)采用方式一單片 機直接交叉連接的串行通信方式,上位機發(fā)送的數(shù)據(jù)由串行口TXD端輸出,直接由下位機的串行口數(shù)據(jù)接收端RXD接收。本設計的硬件電路分為數(shù)碼管顯示模塊、單片機工作

2、的基本復 位電路以及晶振模塊。編程采用 C語言加以實現(xiàn)。通信的結(jié)果使用數(shù)碼管進行顯示,數(shù)碼管 采用查表方式顯示,兩個單片機之間采用 RS-232進行雙向通信。關(guān)鍵字:51單片機 串行通信 RS-232 接口標準目錄前言 11 基本原理 21.1 串行通信概述 21.2 串行通信的分類 21.3 串行通信技術(shù)標準 21.4 串行通信協(xié)議 31.5 串行通信與并行通信區(qū)別 41.6 MCS-51串行接口的基本特點 51.7 波特率選擇 71.8 通信協(xié)議的使用 71.9 51 單片機的結(jié)構(gòu)和作用 71.10 雙機通信 82 系統(tǒng)分析 92.1 匯編語言和C語言的特點及選擇 92.2 并行通信與串行

3、通信的比較 92.3 串行通信程序設計的比較 92.4 同步通信與異步通信的區(qū)別 93 系統(tǒng)設計 113.1 設計要求 113.2 設計方案 113.3 硬件設計 113.4 軟件設計 144 系統(tǒng)調(diào)試 20總結(jié) 21參考文獻 22致謝 26、八 、-前言隨著電子技術(shù)的飛速發(fā)展,單片機也步如一個新的時代,越來越多的功能各異的單片機 為我們的設計提供了許多新的方法與思路。對于一些場合,比如:復雜的后臺運算及通信與高實時性前臺控制系統(tǒng)、軟件資源消耗 大的系統(tǒng)、功能強大的低消耗系統(tǒng)、加密系統(tǒng)等等。如果合理使用多種不同類型的單片機組 合設計,可以得到極高靈活性與性能價格比,因此,多種異型單片機系統(tǒng)設計

4、漸漸成為一種 新的思路,單片機技術(shù)作為計算機技術(shù)的一個重要分支 , 由于單片機體積小 , 系統(tǒng)運行可靠 數(shù)據(jù)采集方便靈活 ,成本低廉等優(yōu)點 , 在通信中發(fā)揮著越來越重要的作用。但在一些相對復雜 的單片機應用系統(tǒng)中 , 僅僅一個單片機資源是不夠的 ,往往需要兩個或多個單片機系統(tǒng)協(xié)同工 作。這就對單片機通信提出了更高要求。單片機之間的通信可以分為兩大類:并行通信和串行通信。串行通信傳輸線少,長距離 傳輸時成本低,且可以利用數(shù)據(jù)采集方便靈活,成本低廉等優(yōu)點,在通信中發(fā)揮著越來越重 要的作用。所以本系統(tǒng)采用串行通信來實現(xiàn)單片機之間可靠的,有效的數(shù)據(jù)交換。1 基本原理1.1 串行通信概述1.1.1 串行

5、通信的特點 在遠程通信和計算機科學中,串行通信是指在計算機總線或其他數(shù)據(jù)通道上,每次傳輸一個位元數(shù)據(jù),并連續(xù)進行以上單次過程的通信方式。與之對應的是并行通信,它在串行端 口上通過一次同時傳輸若干位元數(shù)據(jù)的方式進行通信。一位接一位地順序傳送。這樣一個字 節(jié)的數(shù)據(jù)要分 8 次由低位到高位按順序一位位地傳送。由此可見,串行通信的特點如下:1、節(jié)省傳輸線,這是顯而易見的。尤其是在遠程通信時,此特點尤為重要。這也是串行通信的 主要優(yōu)點; 2、數(shù)據(jù)傳送效率低。與并行通信比,這也這是顯而易見的。這也是串行通信的主 要缺點。串行通信被用于長距離通信以及大多數(shù)計算機網(wǎng)絡,在這些應用場合里,電纜和同步化 使并行通

6、信實際應用面臨困難。憑借著其改善的信號完整性和傳播速度,串行通信總線正在 變得越來越普遍,甚至在短程距離的應用中,其優(yōu)越性已經(jīng)開始超越并行總線不需要串行化 元件等缺點。1.2 串行通信的分類1.2.1 異步通信 所謂異步通信,是指數(shù)據(jù)傳送以字符為單位,字符與字符間的傳送是完全異步的,位與位之間的傳送基本上是同步的異步串行通信的特點可以概括為:以字符為單位傳送信息; 相鄰兩字符間的間隔是任意長; 接收時鐘和發(fā)送時鐘只要相近就可以。 異步方式特 點簡單的說就是:字符間異步,字符內(nèi)部各位同步。1.2.2 同步通信 所謂同步通信,是指數(shù)據(jù)傳送是以數(shù)據(jù)塊(一組字符)為單位,字符與字符之間、字符 內(nèi)部的位

7、與位之間都同步 .同步串行通信的特點可以概括為: 以數(shù)據(jù)塊為單位傳送信息; 在一個數(shù)據(jù)塊(信息幀)內(nèi),字符與字符間無間隔;接收時鐘與發(fā)送進鐘嚴格同步。1.3 串行通信技術(shù)標準1.3.1 數(shù)據(jù)傳輸率(1)比特率和波特率:比特率是指每秒傳輸?shù)亩M制位數(shù),用 bps (bit/s) 表示。波特率 是指每秒傳輸?shù)姆枖?shù),若每個符號所含的信息量為 1 比特,則波特率等于比特率。在計算 機中,一個符號的含義為高低電平,它們分別代表邏輯“ 1”和邏輯“ 0”,所以每個符號所含 的信息量剛好為 1 比特,因此在計算機通信中,常將比特率稱為波特率,即:1 波特( B) =1比特(bit)=1位/秒(1bps)例

8、如:電傳打字機最快傳輸率為每秒 10個字符/秒,每個字符 包含11個二進制位,則數(shù)據(jù)傳輸率為:11位/字符X 10個字符/秒=110位/秒=110波特(Baud) 計算機中常用的波特率是: 110、300、600、1200、2400、4800、9600、19200、28800、33600, 目前最高可達 56Kbps.(2)位時間Td:位時間是指傳送一個二進制位所需時間,用Td表示。Td = 1/波特率 = 1/B(3)發(fā)送時鐘和接收時鐘在串行通信中, 二進制數(shù)據(jù)以數(shù)字信號的信號形式出現(xiàn) , 不論是發(fā)送還是接收, 都必須有 時鐘信號對傳送的數(shù)據(jù)進行定位。在 TTL 標準表示的二進制數(shù)中,傳輸線

9、上高電平表示二進 制 1,低電平表示二進制 0,且每一位持續(xù)時間是固定的,由發(fā)送時鐘和接收時鐘的頻率決 定。1)發(fā)送時鐘 發(fā)送數(shù)據(jù)時,先將要發(fā)送的數(shù)據(jù)送入移位寄存器,然后在發(fā)送時鐘的控制下,將該并行數(shù)據(jù)逐位移位輸出。通常是在發(fā)送時鐘的下降沿將移位寄存器中的數(shù)據(jù)串行輸出,每個數(shù)據(jù) 位的時間間隔由發(fā)送時鐘的周期來劃分。2)接收時鐘 在接收串行數(shù)據(jù)時,接收時鐘的上升沿對接收數(shù)據(jù)采樣,進行數(shù)據(jù)位檢測,并將其移入接收器的移位寄存器中,最后組成并行數(shù)據(jù)輸出。1.3.2 波特率因子接收時鐘和發(fā)送時鐘與波特率有如下關(guān)系: F=nX B 這里 F 是發(fā)送時鐘或接收時鐘的頻 率;B是數(shù)據(jù)傳輸?shù)牟ㄌ芈剩籲稱為波特率

10、因子。設發(fā)送或接收時鐘的周期為 Tc,頻率為F的 位傳輸時間為Td,則:Tc=1/F,Td =1/B 得到:Tc=T/n在實際串行通信中,波特率因子可 以設定。在異步傳送時,n = 1, 16, 64實際常采n=16,即發(fā)送或接收時鐘的頻率要比數(shù) 據(jù)傳送的波特率高 n 倍。在同步通信中波特率因子必等于 1。1.4 串行通信協(xié)議包括 RS-232-C、RS-422、RS485 USB等。RS-232-C、RS-422與 RS-485標準只對接口的電氣特性做出規(guī)定,不涉及接插件、電纜或協(xié)議。USB是近幾年發(fā)展起來的新型接口標準,主要應用于高速數(shù)據(jù)傳輸領域。1.4.1 RS-232-C 串口RS-2

11、32-C 也稱標準串口,是目前最常用的一種串行通訊接口。它是在 1970 年由美國電 子工業(yè)協(xié)會(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計算機終端生產(chǎn)廠家共同制定的用于串行通訊的標準。它的全名是“數(shù)據(jù)終端設備(DTE和數(shù)據(jù)通訊設備(DCE之間串行二進制數(shù)據(jù)交換接口技術(shù)標準”。傳統(tǒng)的RS-232-C接口標準有22根線,采用標準25芯D型插頭 座。自IBM PC/AT開始使用簡化了的9芯D型插座。至今25芯插頭座現(xiàn)代應用中已經(jīng)很少 采用。電腦一般有兩個串口: COM和COM2 9針D形接口通常在計算機后面能看到。現(xiàn)在有 很多手機數(shù)據(jù)線或者物流接收器都采用 COMq與計算機相連。1.4.2 RS-4

12、22為改進RS-232通信距離短、速率低的缺點,RS-422定義了一種平衡通信接口,將傳輸 速率提高到10Mb/s,傳輸距離延長到4000英尺(速率低于100kb/s時),并允許在一條平衡 總線上連接最多 10個接收器。 RS- 422是一種單機發(fā)送、多機接收的單向、平衡傳輸規(guī)范, 被命名為 TIA/EIA-422-A 標準。1.4.3 RS-485為擴展應用范圍,EIA又于1983年在RS-422基礎上制定了 RS-485標準,增加了多點、 雙向通信能力,即允許多個發(fā)送器連接到同一條總線上,同時增加了發(fā)送器的驅(qū)動能力和沖 突保護特性,擴展了總線共模范圍,后命名為 TIA/EIA-485-A

13、標準。1.4.4 RJ-45 接口是以太網(wǎng)最為常用的接口, RJ45是一個常用名稱,指的是由IEC(60)603-7標準化,使 用由國際性的接插件標準定義的 8個位置( 8針)的模塊化插孔或者插頭。1.4.5 Universal SerialBus (通用串行總線)簡稱USB是目前電腦上應用較廣泛的接口規(guī)范,由In tel、Microsoft、Compaq IBM、NEC Northern Telcom等幾家大廠商發(fā)起的新型外設接口標準。 USB接口是電腦主板上的一 種四針接口,其中中間兩個針傳輸數(shù)據(jù),兩邊兩個針給外設供電。USB接口速度快、連接簡單、不需要外接電源,傳輸速度 12Mbps新的

14、USB 2.0可達480Mbps電纜最大長度5米, USB電纜有4條線:2條信號線,2條電源線,可提供5伏特電源,USB電纜還分屏蔽和非屏 蔽兩種,屏蔽電纜傳輸速度可達 12Mbps價格較貴,非屏蔽電纜速度為 1.5Mbps,但價格便 宜;USB通過串聯(lián)方式最多可串接127個設備;支持熱插拔。最新的規(guī)格是 USB 3.0。1.5 串行通信與并行通信區(qū)別計算機與外界的信息交換稱為通信。在通信領域內(nèi),有兩種數(shù)據(jù)通信方式:并行通信 和串行通信。 隨著計算機網(wǎng)絡化和微機分級分布式應用系統(tǒng)的發(fā)展,通信的功能越來越 重要。通信是指計算機與外界的信息傳輸,既包括計算機與計算機之間的傳輸,也包括 計算機與外部

15、設備,如終端、打印機和磁盤等設備之間的傳輸。串行通信是指 使用一條數(shù)據(jù)線,將數(shù)據(jù)一位一位地依次傳輸,每一位數(shù)據(jù)占據(jù)一 個固定的時間長度。其只需要少數(shù)幾條線就可以在系統(tǒng)間交換信息,特別適用于計算機 與計算機、計算機與外設之間的遠距離通信。在計算機和終端之間的數(shù)據(jù)傳輸通常是靠電纜或信道上的電流或電壓變化實現(xiàn)的。如果一組數(shù)據(jù)的各數(shù)據(jù)位在多條線上同時被傳輸,這種傳輸方式稱為并行通信8位數(shù)據(jù)線源0終點 、八、10010017I( a)并行通信(b)串行通信圖1串行通信與并行通信的區(qū)別1.6 MCS-51串行接口的基本特點MCS-51單片機的串行端口有4種基本工作方式,通過編程設置,可以使其工作在任一方式

16、,以滿足不同場合的需要。其中,方式0主要用于外接移位寄存器,以擴展單片機的I/0電路;工作方式1多用于雙機之間或與外設電路的通信; 方式2、3除有方式1的功能外, 還可以作多機通信,以構(gòu)成分布式多微機系統(tǒng)。串行端口有兩個控制寄存器 SCONPCON用于設置工作方式、發(fā)送或接收的狀態(tài)、特征 位、數(shù)據(jù)傳送波特率每秒傳送的位數(shù)以及作為中斷標志等。串行端口有一個數(shù)據(jù)寄存器SBUF在特殊功能寄存器中的字節(jié)地址為 99H,該寄存器為發(fā) 送和接收所共用。串行端口的波特率可以用程序來控制。在不同工作方式中,由時鐘振蕩頻率的分頻值或由定時器T1的定時溢出時間確定,使用十分方便靈活。串口控制寄存器輸入:在(REN

17、)=1時,串行口采樣RXD引腳,當采樣到1至O的跳變時,確認是串行發(fā) 送來的一幀數(shù)據(jù)的開始位0,從而開始接收一幀數(shù)據(jù)。只有當 8位數(shù)據(jù)接收完,并檢測到高 電平停止位后,只有滿足(R1)=0 :(SM2)=0或接收到的第9位數(shù)據(jù)為1時,停止位才進 入RB8 8位數(shù)據(jù)才能進入接收寄存器,并由硬件置位中斷標志 RI;否則信息丟失。所以在 方式1接收時,應先用軟件清零 RI和SM2標志。1.工作方式2方式2為固定波特率的11位UART方式。它比方式1增加了一位可程控為1或0的第9位數(shù)據(jù)輸出:發(fā)送的串行數(shù)據(jù)由TXD端輸出一幀信息為11位,附加的第9位來自SCON寄存器 的TB8位,用軟件置位或復位。它可

18、作為多機通訊中地址/數(shù)據(jù)信息的標志位,也可以作為 數(shù)據(jù)的奇偶校驗位。當CPU執(zhí)行一條數(shù)據(jù)寫入SUBF勺指令且TI=0時,就啟動發(fā)送器發(fā)送。 發(fā)送一幀信息后,置位中斷標志 TI 。輸入:在(REN)=1時,串行口采樣RXD引腳,當采樣到1至0的跳變時,確認是串行發(fā) 送來的一幀數(shù)據(jù)的開始位 0,從而開始接收一幀數(shù)據(jù)。在接收到附加的第 9 位數(shù)據(jù)后,當滿 足(RI) : 0;(SM2)=0或接收到的第9位數(shù)據(jù)為1時,第9位數(shù)據(jù)才進入RB8 8位數(shù)據(jù) 才能進入接收寄存器,并由硬件置位中斷標志Ri;否則信息丟失。且不置位 RI o2. 工作方式 3方式3為波特率可變的11位UART方式。除波特率外,其余

19、與方式 2相同。 波特率的選擇如前所述,在串行通訊中,收發(fā)雙方的數(shù)據(jù)傳送率 (波特率)要有一定的約定。在MCS-51 串行口的四種工作方式中, 方式0和2的波特率是固定的, 而方式1和3的波特率是可變的, 由定時器T1的溢出率控制。1 方式 1方式 1 的波特率固定為主振頻率的 1/12o2 方式 2方式2的波特率由PCON中的選擇位SMO來決定,可表示為:波特率 =2sMoD 方式 1 和方式 3定時器 T1 作為波特率發(fā)生器,其公式如下:波特率=2SMO/32X定時器T1溢出率T1溢出率=T1計數(shù)率/產(chǎn)生溢出所需的周期數(shù)式中T1計數(shù)率取決于它工作在定時器狀態(tài)還是計數(shù)器狀態(tài)。 當工作于定時器

20、狀態(tài)時,T1 計數(shù)率為 Fosc/2 :當工作于計數(shù)器狀態(tài)時, T1 計數(shù)率為外部輸入頻率, 此頻率應小于 Fosc/24o 產(chǎn)生溢出所需周期與定時器T1的工作方式、T1的預置值有關(guān)。定時器T1工作于方式O溢出所需周期數(shù)=8192-X定時器 T1 工作于方式 1:溢出所需周期數(shù) =65536-X定時器 T1 工作于方式 2:溢出所需周期數(shù) =256-X因為方式 2 為自動重裝入初值的 8 位定時器/計數(shù)器模式,所以用它來做波特率發(fā)生器 最恰當。這種方式下,T1的溢出率次/秒計算式可以表示為:T1 溢出率=Fsoc/ 12256-X1.7 波特率選擇波特率(Boud Rate)就是在串口通信中每

21、秒能夠發(fā)送的位數(shù)( bits/second )。MCS-51 串行端口在四種工作模式下有不同的波特率計算方法。其中,模式 0 和模式 2 波特率計算很 簡單;模式 1 和模式 3的波特率選擇相同,故在此僅以工作模式 1 為例來說明串口通信波特 率的選擇。在串行端口工作于模式 1,其波特率將由計時 /計數(shù)器 1 來產(chǎn)生,通常設置定時器工作于 模式 2(自動再加模式)。在此模式下波特率計算公式為:波特率=(1+SM0D* 晶振頻率 /(384* (256-TH1)其中,SMO寄存器PCON勺第7位,稱為波特率倍增位;TH1 定時器的重載值。在選擇波特率的時候需要考慮兩點:首先,系統(tǒng)需要的通信速率。

22、這要根據(jù)系統(tǒng)的運作 特點,確定通信的頻率范圍。然后考慮通信時鐘誤差。使用同一晶振頻率在選擇不同的通信 速率時通信時鐘誤差會有很大差別。為了通信的穩(wěn)定,我們應該盡量選擇時鐘誤差最小的頻 率進行通信。1.8 通信協(xié)議的使用通信協(xié)議是通信設備在通信前的約定。單片機、計算機有了協(xié)議這種約定,通信雙方才能明白對方的意圖,以進行下一步動作。假定我們需要在 PC機與單片機之間進行通信,在雙 方程式設計過程中,有如下約定:0xA1 :單片機讀取P0端口數(shù)據(jù),并將讀取數(shù)據(jù)返回 PC機;0xA2 :單片機從PC機接收一段控制數(shù)據(jù);0xA3 :單片機操作成功信息。在系統(tǒng)工作過程中,單片機接收到 PC機數(shù)據(jù)信息后,便

23、查找協(xié)議,完成相應的操作。當 單片機接收到0xA1時,讀取P0端口數(shù)據(jù),并將讀取數(shù)據(jù)返回 PC機;當單片機接收到0xA2 時,單片機等待從PC機接收一段控制數(shù)據(jù);當PC接收到0xA3時,就表明單片機操作已經(jīng)成 功。1.9 51 單片機的結(jié)構(gòu)和作用51單片機的串行接口是一個全雙工的接口, 它可以作為UART (通用異步接受和發(fā)送器) 用,也可以作為同步移位寄存器用。 51 單片機串行接口的結(jié)構(gòu)如下:數(shù)據(jù)緩沖器( SBUF) 接受或發(fā)送的數(shù)據(jù)都要先送到 SBUF 緩存。有兩個,一個緩存,另一個接受,用同一個 直接地址99H,發(fā)送時用指令將數(shù)據(jù)送到 SBUF即可啟動發(fā)送:接收時用指令將 SBUF中接

24、收到的數(shù)據(jù)取出串行控制寄存器(PCONSCON用于串行通信法師的選擇,首發(fā)控制及狀態(tài)指示。利用AT89C51芯片、復位電路、時鐘電路、LED數(shù)碼管等,使A機控制B機的兩個LED 閃爍,B機控制A機的數(shù)碼管加一顯示。使用 DS18B20溫度傳感器,由B機測量溫度后由A機 顯示.把P1 口的高7位與數(shù)碼管相連,綠燈表示通行方向。P2口與LED顯示器相連,用來輸出顯示的數(shù)字。外圍電路AT89 MAX2RS23232RS232外圍電路圖2系統(tǒng)和原理框圖1.10雙機通信兩臺機器的通信方式可分為單工通信、半雙工通信、雙工通信,他們的通信原理及通信 方式為:單工通信:是指消息只能單方向傳輸?shù)墓ぷ鞣绞?。單工?/p>

25、信信道是單向信道,發(fā)送端和 接收端的身份是固定的,發(fā)送端只能發(fā)送信息,不能接收信息;接收端只能接收信息,不能 發(fā)送信息,數(shù)據(jù)信號僅從一端傳送到另一端,即信息流是單方向的。通信雙方采用單工通信 屬于點到點的通信。根據(jù)收發(fā)頻率的異同,單工通信可分為同頻通信和異頻通信。半雙工通信:這種通信方式可以實現(xiàn)雙向的通信,但不能在兩個方向上同時進行, 必須輪流交替地進行。也就是說,通信信道的每一段都可以是發(fā)送端,也可以是接端。 但同一時刻里,信息只能有一個傳輸方向。如日常生活中的例子有步話機通信等。雙工通信:雙工通信是指在同一時刻信息可以進行雙向傳輸,和打電話一樣,說的 同時也能聽,邊說邊聽。 這種發(fā)射機和接

26、收機分別在兩個不同的頻率上能同時進行工作 的雙工機也稱為異頻雙工機。雙工機的特點是使用方便,但線路設計較復雜,價格也較2 系統(tǒng)分析2.1 匯編語言和 C 語言的特點及選擇本設計是硬件電路和軟件編程相結(jié)合的設計方案,選擇合適的編程語言是一個重要的環(huán) 節(jié)。在單片機的應用系統(tǒng)程序設計時,常用的是匯編語言和 C 語言。主機硬件,程序可讀性 和可移植性比較差。而C語言雖然執(zhí)行效率沒有匯編語言高,但語言簡潔,使用方便,靈活, 運算方便,表達類型多樣化,數(shù)據(jù)結(jié)構(gòu)類型豐富,具有結(jié)構(gòu)化的控制語句,程序設計自由度 大,有很好的可重用性,可移植性等特點。所以我們采用 C語言編寫了程序。2.2 并行通信與串行通信的比

27、較計算機與外界的信息交換稱為通信,常用的通信方式有兩種:并行通信和串行通信。 51 單片機用 4 個接口與外界進行數(shù)據(jù)輸入與數(shù)據(jù)輸出就是并行通信,并行通信得特點是傳輸信 號的速度快,但所用的信號線比較多,成本高,傳輸?shù)木嚯x較近。串行通信的特點是只用兩 條信號線即可完成通信,成本低,傳輸?shù)木嚯x較遠。2.3 串行通信程序設計的比較串行通信程序設計主要有微機發(fā)送接收程序和單片機發(fā)送接收程序。微機發(fā)送接收程序 復雜難懂,操作不便。單片機發(fā)送接收程序簡單易懂,操作方便。故而,此系統(tǒng)采用后者。2.4 同步通信與異步通信的區(qū)別“異步通信”是一種很常用的通信方式。異步通信在發(fā)送字符時,所發(fā)送的字符之間的 時間

28、間隔可以是任意的。當然,接收端必須時刻做好接收的準備(如果接收端主機的電源都 沒有加上,那么發(fā)送端發(fā)送字符就沒有意義,因為接收端根本無法接收)。發(fā)送端可以在任 意時刻開始發(fā)送字符,因此必須在每一個字符的開始和結(jié)束的地方加上標志,即加上開始位 和停止位,以便使接收端能夠正確地將每一個字符接收下來。異步通信的好處是通信設備簡 單、便宜,但傳輸效率較低。異步通信也可以是以幀作為發(fā)送的單位。接收端必須隨時做好接收幀的準備。這是,幀 的首部必須設有一些特殊的比特組合,使得接收端能夠找出一幀的開始。這也稱為幀定界。 幀定界還包含確定幀的結(jié)束位置。這有兩種方法。一種是在幀的尾部設有某種特殊的比特組 合來標志

29、幀的結(jié)束?;蛘咴趲撞恐性O有幀長度的字段。需要注意的是,在異步發(fā)送幀時, 并不是說發(fā)送端對幀中的每一個字符都必須加上開始位和停止位后再發(fā)送出去,而是說,發(fā) 送端可以在任意時間發(fā)送一個幀,而幀與幀之間的時間間隔也可以是任意的。在一幀中的所 有比特是連續(xù)發(fā)送的。 發(fā)送端不需要在發(fā)送一幀之前和接收端進行協(xié)調(diào)。 每個字符開始發(fā)送 的時間可以是任意的 t0 0 1 1 0 1 1 0 起始位結(jié)束位 t 每個幀開始發(fā)送的時間可以是任意的以字符為單位發(fā)送以幀為單位發(fā)送幀開始幀結(jié)束“同步通信”的通信雙方必須先建立同步,即雙方的時鐘要調(diào)整到同一個頻率。收發(fā)雙 方不停地發(fā)送和接收連續(xù)的同步比特流。但這時還有兩種不

30、同的同步方式。一種是使用全網(wǎng) 同步,用一個非常精確的主時鐘對全網(wǎng)所有結(jié)點上的時鐘進行同步。另一種是使用準同步, 各結(jié)點的時鐘之間允許有微小的誤差,然后采用其他措施實現(xiàn)同步傳輸。3 系統(tǒng)設計3.1 設計要求在本設計中,要求完成51單片機與串口的線路連接、并用 C語言編寫程序?qū)崿F(xiàn)PC機與51 單片機通過串口實現(xiàn)異步通信,并能根據(jù)設置調(diào)整異步傳行通信參數(shù)。3.2 設計方案本次設計,對于兩片89C51,采用RS-232進行雙機通信。發(fā)送方的數(shù)據(jù)由串行口 TXD段 輸出,經(jīng)過電平轉(zhuǎn)換芯片 MAX232各TTL電平轉(zhuǎn)換為RS-232點評輸出,經(jīng)過傳輸線將信號傳 送到接收端。接收方也是用 MAX232芯片驚

31、醒電平轉(zhuǎn)換后,信號到達接收方串行口的接收端。 接收方接收后,在數(shù)碼管上顯示接收的信息。軟件部分,通過通信協(xié)議進行發(fā)送接收,主機先送AAH給從機,當從機接收到 AAH后,向主機回答B(yǎng)BH主機收到BBH后就把數(shù)碼表中的16個數(shù)據(jù)送給從機,并發(fā)送檢驗和。從機收到 16 個數(shù)據(jù)并計算接收到數(shù)據(jù)的檢驗和,與主機發(fā)送來的檢驗和進行比較,若檢驗和相同則發(fā) 送00H給主機;否則發(fā)送FFH給主機,重新接受。從機收到16個正確數(shù)據(jù)后送到一個數(shù)碼管 顯示。3.3 硬件設計AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲器的低電壓、高性能CMOS 8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃存

32、可編程可擦除只讀存儲器的單片機。 單片機的可擦除只讀存儲器可以反復擦除 1000次。該器件采用ATMEI高密度非易失存儲器制 造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍 存儲器組合在單個芯片中,ATME的 AT89C51是一種高效微控制器,AT89C2051是它的一種精 簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。A、B兩臺51單片機機通過串行接口相連,B機的七段數(shù)碼管顯示其接收到(A機發(fā)出) 的數(shù)字;而A機的七段數(shù)碼管則顯示其接收到(B機發(fā)出)的數(shù)字。電路原理圖如下所示。C1U11922PFCRYSTALX1C

33、2TI XTAL1P0.0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15P1.0P3.0/RXDP1.1P3.1/TXDP1.2P3.2/INT0-P1.3P3.3/INTFP1.4P3.4/T0P1.5P3.5/T1P1.6P3.6/WRP1.7P3.7/RD38371836212928189C513032 3 4 5 6 7 839NOTU3C4U2TF22pF

34、C5X2XCRYSTAL卄22pF_JR2184578|XTAL1P0.0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15P1.0P3.0/RXDP1 1P3 1/TXDP1.2P3.2/INT0-P1.4P3.4/T0P1.5P3.5/T1P1.6P3.6/WTP1.7P3.7/RD-19315AT89C5116171_ 1 29k31 23241314101112RESPACK-739

35、3837363332212226281011123534P1U4NOTRP2RESPACK-7圖3電路原理圖在桌面上雙擊圖標打開ISIS 7 Professional窗口。在器件選擇按鈕中單擊“P”鈕,或執(zhí)行菜單命令 庫”一拾取元件/符號”添加如下表所示的元件。表2元件選擇表51單片機AT89C51二片晶體 CRYSTAL 11.0592MHz 二只瓷片電容CAP 22pF四只電解電容CAP-ELEC 10uF二口-二只電阻RES 10K二只上拉電阻網(wǎng)絡RESPACK-7二口-二只七段數(shù)碼管7SEG-COM-CAT-GRNI只管腳說明:VCC供電電壓。GND接地。P0 口: P0 口為一個8位

36、漏級開路雙向I/O 口, 每腳可吸收8TTL門電流。當P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外 部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼 輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1 口: P1 口是一 個內(nèi)部提供上拉電阻的8位雙向I/O 口,P1 口緩沖器能接收輸出4TTL門電流。P1 口管腳寫U31918XTAL1P0.2/AD239P0.0/AD0P0.1/AD1XTAL2RST293031PSENALEEA13P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7363534333

37、221222324252627281011121314151617P0.7/AD7P2.5/A13P3.0/RXDP3.3/INT1P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P2.3/A11P2.4/A12P2.6/A14P2.7/A15P3.4/T0P3.5/T1P2.0/A8P2.1/A9P2.2/A10P3.1/TXDP3.2/INT0P3.6/WRP3.7/RDAT89C51圖3 AT89C51管腳圖入1后,被內(nèi)部上拉為高,可用作輸入,P1 口被外部下拉為低電平時,將輸出電流,這是由 于內(nèi)部上拉的緣故。在 FLASH編程和校驗時,P1 口作為第八位地址接收。RST

38、復位輸入。 當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG當訪問外部存 儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率 的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部 數(shù)據(jù)存儲器時,將跳過一個 ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOV,MOV指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器 在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器

39、的選通信號。在由外部程序 存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效 的/PSEN信號將不出現(xiàn)。/EA/VPP:當/EA保持低電平時,貝U在此期間外部程序存儲器(0000H-FFFFH,不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加 12V編程電源(VPP。XTAL1 :反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2來自反向振蕩器的輸出。振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石

40、晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件, XTAL2應不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的 脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。VIRTUALTERMINAJL在工具欄中單擊虛擬儀器按紐,再在對象選擇器中選擇虛擬終端 放置兩個虛擬終端。在ISIS原理圖編輯窗口中放置元件,再單擊工具箱中元件終端圖標,在對象選擇器中 單擊POWE和GROUND置電源和地。放置好元件后,布好線。左鍵雙擊各元件,設置相應元 件參數(shù),完成電路圖的設計。3.4 軟件設計A、B兩機進行異步串行通信,當B機接收到A機發(fā)出的數(shù)據(jù)后,一方面通過其數(shù)碼管顯 示,另外加

41、上偏移量后發(fā)出。當 A機收到B機發(fā)出的數(shù)據(jù)后,一方面通過其數(shù)碼管顯示,另 外經(jīng)延時后再發(fā)出下一個數(shù)據(jù)。 A、B兩機的流程圖如下所示。(1)發(fā)送端程序流程圖(2)接收方程序流程圖A B兩臺51單片機的異步串行接收采用查詢方式,它們詳細的C51程序如下所示/A機程序#i nclude/包含單片機寄存器的頭文件un sig ned char code ddata=0x77,0x7c,0x39,0x5e,0x79,0x71,0x73,0x3e,0x31,0x6e,0x76,0x38,0xff,0x00; A,B,C,D,E,F,P,U,R,Y,H 丄,全亮,全滅的段碼/*函數(shù)功能:發(fā)送一個字節(jié)數(shù)據(jù)*/

42、void Send(un sig ned char dat)SBUF=dat;while(TI=0); / 等待TI=0;/* 函數(shù)功能:接收一個字節(jié)數(shù)據(jù)unsigned char Receive(void) unsigned char dat;while(RI=0) ; /RI=0; / dat=SBUF; /等待,直至接收完畢( RI=1 ) 為了接收下一幀數(shù)據(jù),需將 RI 清 0 將接收緩沖器中的數(shù)據(jù)存于 datreturn dat;/*函數(shù)功能:延時約 150msvoid delay(void)unsigned char m,n; for(m=0;m200;m+) for(n=0;n2

43、50;n+)/*函數(shù)功能:主函數(shù)void main(void)unsigned char i;TMOD=0x20; /TMOD=0010 OOOOB 定時器 T1 工作于方式 2SCON=0x50; SCON=0101 0000B 串口工作方式 1,允許接收PCON=0x00;TH1=0xfd; /TL1=0xfd; /TR1=1;/P2=0x01; /定時器TH1賦初值,波特率9600定時器 TL1 賦初值啟動定時器 T1置 P2.0 口為高電平while(1) for(i=0;i8;i+)Send(i); / 發(fā)送數(shù)據(jù) iP0=ddataReceive(); / 將接收到的數(shù)據(jù)送 P0 口

44、顯示 delay(); /600ms 后發(fā)送下一個數(shù)據(jù) delay();delay();delay();/B 機程序#include / 包含單片機寄存器的頭文件 unsigned char code ddata= 0x77,0x7c,0x39,0x5e,0x79,0x71,0x73,0x3e,0x31,0x6e, 0x76,0x38,0xff,0x00; /A,B,C,D,E,F,P,U,R,Y,H,L, 全亮,全滅的段碼 /*函數(shù)功能:發(fā)送一個字節(jié)數(shù)據(jù)*/void Send(unsigned char dat)SBUF=dat;while(TI=0); / 等待TI=0;/*函數(shù)功能:接收

45、一個字節(jié)數(shù)據(jù)*/unsigned char Receive(void)unsigned char dat;while(RI=0); / 等待,直至接收完畢( RI=1 )RI=0; / 為了接收下一幀數(shù)據(jù),需將 RI 清 0dat=SBUF; / 將接收緩沖器中的數(shù)據(jù)存于 datreturn dat;/*函數(shù)功能:主函數(shù)*/void main(void)unsigned char dat;TMOD=0x20; / 定時器 T1 工作于方式 2SCON=0x50; SCON=0101 OOOOB 串口工作方式 1,允許接收(REN=1PCON=0x00;TH1=0xfd; / 定時器TH1賦初值

46、,波特率9600TL1=0xfd; / 定時器 TL1 賦初值TR1=1;/ 啟動定時器 T1P2=0X01; /置P2.0 口為高電平while(1)dat=Receive();P0=ddatadat; /將接收到的數(shù)據(jù)送 P0 口顯示Send(dat+8);/ 偏移量為 +8打開Keil程序(本人使用的是Keil8.06中文版),執(zhí)行菜單命令“工程新建工 程”創(chuàng)建“l(fā)ess。n1 ”項目,并選擇單片機型號為 AT89C51執(zhí)行菜單命令“文件新建” 創(chuàng)建文件,輸入A機的C語言源程序,保存為“ less。nl.C ”。在Project Workspace窗口中 右擊源代碼組 1,選擇“添加文件

47、到組源代碼組 l ”將源程序“ lesson1.C ”添加到項目 中。在Keil中執(zhí)行執(zhí)行菜單命令“工程”-“創(chuàng)建目標”,編譯源程序。如果編譯成功, 則在“ Output Win dow ”的“創(chuàng)建”窗口中顯示沒有錯誤,并創(chuàng)建了“ less。nl.HEX ”文件(注意此時可執(zhí)行文件的輸出路徑和文件名)。使用相同的方法在創(chuàng)建B機的C語言程序,保存為“ lesson2.C ”,并產(chǎn)生“ lesson2.HEX ”文件。4系統(tǒng)調(diào)試關(guān)于Proteus與Keil的聯(lián)合仿真調(diào)試。需注意Proteus的ISIS中A、B機的CPI屬性中 Program File 與Keil的卩Vision4中的路徑和文件名要一致。啟動Proteus的ISIS,并將其放在屏幕的右上角(可將原理圖放大到合適大?。?;再啟 動Keil的卩Vision4,并將其放在屏幕的左下角。在Keil中執(zhí)行菜單命令“調(diào)試啟動/停止調(diào)試”,進入 Keil調(diào)試環(huán)境。同時, 在Proteus ISIS 的窗口中可看出

溫馨提示

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

評論

0/150

提交評論