雙機串行通信單片機單片機課程設(shè)計說明書_第1頁
雙機串行通信單片機單片機課程設(shè)計說明書_第2頁
雙機串行通信單片機單片機課程設(shè)計說明書_第3頁
雙機串行通信單片機單片機課程設(shè)計說明書_第4頁
雙機串行通信單片機單片機課程設(shè)計說明書_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、雙機串行通信串行通信是單片機的一個重要應(yīng)用。本次課程設(shè)計就是要利用單片機來完成一個系統(tǒng),實現(xiàn)雙片單片機串行通信。通信的結(jié)果實用數(shù)碼管進行顯示,數(shù)碼管采用查表方式顯示。兩個單片機之間采用rs232進行雙機通信。在通信過程中,使用通信協(xié)議進行通信。關(guān)鍵詞:51單片機,串行通信,接口abstractserial communication is an important application of single chip. this course is designed to using single chip computer to complete a system, the realizat

2、ion biplate microcontroller serial communication. communication results and practical to display, digital digital tube pipe, adopting look-up table display. two microcontroller between adopt rs232 for dual-computer communications. in communication process, uses communication protocol to communicate.

3、 key words: 51 scm, serial communication, interface 目錄第1章 準備工作11.1設(shè)計目的11.2設(shè)計要求11.3設(shè)計方案1第2章 設(shè)計步驟及原理22.1 硬件設(shè)計22.1.1 51單片機串行通信功能22.1.2 max232芯片42.1.3 整體電路設(shè)計42.2軟件設(shè)計62.2.1串行通信軟件實現(xiàn)62.2.2 程序流程圖72.3聯(lián)合調(diào)試9第3章 設(shè)計總結(jié)及心得10第4章 附錄114.1 主機發(fā)送程序114.2 從機接收程序124.3 系統(tǒng)電路圖14參考文獻16致 謝17第1章 準備工作1.1設(shè)計目的(1)訓(xùn)練學(xué)生正確的應(yīng)用單片機,培養(yǎng)解決工業(yè)

4、控制、工業(yè)檢測等領(lǐng)域具體問題的初步能力。(2)讓學(xué)生通過所做課題,熟悉單片微機應(yīng)用系統(tǒng)開發(fā)、研制的過程、軟硬件設(shè)計的方法、工作內(nèi)容、工作步驟。(3)進行基本技能訓(xùn)練,是理論聯(lián)系實際,提高動手能力和分析問題、解決問題的能力。1.2設(shè)計要求設(shè)計之前應(yīng)對各芯片的引腳及原理進行預(yù)習(xí),了解其基本的使用方法并初步制定設(shè)計方案,方案應(yīng)實現(xiàn)兩片單片機之間進行串行通信,發(fā)送端將0f循環(huán)發(fā)送到接收端,并在接收端顯示。1.3設(shè)計方案本次設(shè)計,對于兩片89c51,采用rs232進行雙機通信。發(fā)送方的數(shù)據(jù)由串行口txd段輸出,經(jīng)過電平轉(zhuǎn)換芯片max232將ttl電平轉(zhuǎn)換為rs232電平輸出,經(jīng)過傳輸線將信號傳送到接收端

5、。接收方也使用max232芯片進行電平轉(zhuǎn)換后,信號到達接收方串行口的接收端。接受方接收后,在數(shù)碼管上顯示接收的信息。為提高抗干擾能力,還可以在輸入輸出端加光耦合進行光電隔離。軟件部分,通過通信協(xié)議進行發(fā)送接收,主機先送aah給從機,當(dāng)從機接收到aah后,向主機回答bbh。主機收到bbh后就把數(shù)碼表tab16中的10個數(shù)據(jù)送給從機,并發(fā)送檢驗和。從機收到16個數(shù)據(jù)并計算接收到數(shù)據(jù)的檢驗和,與主機發(fā)送來的檢驗和進行比較,若檢驗和相同則發(fā)送00h給主機;否則發(fā)送ffh給主機,重新接受。從機收到16個正確數(shù)據(jù)后送到一個數(shù)碼管顯示。第2章 設(shè)計步驟及原理2.1 硬件設(shè)計2.1.1 51單片機串行通信功能

6、圖1.at89c51計算機與外界的信息交換稱為通信,常用的通信方式有兩種:并行通信和串行通信。51單片機用4個接口與外界進行數(shù)據(jù)輸入與數(shù)據(jù)輸出就是并行通信,并行通信的特點是傳輸信號的速度快,但所用的信號線較多,成本高,傳輸?shù)木嚯x較近。串行通信的特點是只用兩條信號線(一條信號線,再加一條地線作為信號回路)即可完成通信,成本低,傳輸?shù)木嚯x較遠。51單片機的串行接口是一個全雙工的接口,它可以作為uart(通用異步接受和發(fā)送器)用,也可以作為同步移位寄存器用。51單片機串行接口的結(jié)構(gòu)如下:(1)數(shù)據(jù)緩沖器(sbuf)接受或發(fā)送的數(shù)據(jù)都要先送到sbuf緩存。有兩個,一個緩存,另一個接受,用同一直接地址9

7、9h,發(fā)送時用指令將數(shù)據(jù)送到sbuf即可啟動發(fā)送;接收時用指令將sbuf中接收到的數(shù)據(jù)取出。(2)串行控制寄存器(pcon)scon用于串行通信方式的選擇,收發(fā)控制及狀態(tài)指示,各位含義如下:sm0sm1sm2rentb8rb8tirism0,sm1:串行接口工作方式選擇位,這兩位組合成00,01,10,11對應(yīng)于工作方式0、1、2、3。串行接口工作方式特點見下表sm0sm1工作方式功能波特率 0008位同步移位寄存器(用于i/o擴展)forc/1201110位異步串行通信(uart)可變(t1溢出率*2smod/32)10211位異步串行通信(uart)forc/64或forc/3211311

8、位異步串行通信(uart)可變(t1溢出率*2smod/32)sm2:多機通信控制位。ren:接收允許控制位。軟件置1允許接收;軟件置0禁止接收。tb8:方式2或3時,tb8為要發(fā)送的第9位數(shù)據(jù),根據(jù)需要由軟件置1或清0。rb9:在方式2或3時,rb8位接收到的第9位數(shù)據(jù),實際為主機發(fā)送的第9位數(shù)據(jù)tb8,使從機根據(jù)這一位來判斷主機發(fā)送的時呼叫地址還是要傳送的數(shù)據(jù)。ti:發(fā)送中斷標志。發(fā)送完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)發(fā)送。ri:接收中斷標志。接收完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)接收。(3)輸入移位寄存器接收的數(shù)據(jù)先串行進入輸入

9、移位寄存器,8位數(shù)據(jù)全移入后,再并行送入接收sbuf中。(4)波特率發(fā)生器波特率發(fā)生器用來控制串行通信的數(shù)據(jù)傳輸速率的,51系列單片機用定時器t1作為波特率發(fā)生器,t1設(shè)置在定時方式。波特率時用來表示串行通信數(shù)據(jù)傳輸快慢程度的物理量,定義為每秒鐘傳送的數(shù)據(jù)位數(shù)。(5)電源控制寄存器pcon其最高位為smod。(6)波特率計算當(dāng)定時器t1工作在定時方式的時候,定時器t1溢出率=(t1計數(shù)率)/(產(chǎn)生溢出所需機器周期)。由于是定時方式,t1計數(shù)率= forc/12。產(chǎn)生溢出所需機器周期數(shù)=模m-計數(shù)初值x。2.1.2 max232芯片用8051串行接口通信,如果兩臺8051單片機之間的距離很近(不

10、超過1.5m),可以采用直接將兩臺8051單片機的串行接口直接相連,利用其自身的ttl電平(0-5v)直接傳輸數(shù)據(jù)信息。如果傳輸距離較遠(超過1.5m),由于傳輸線的阻抗與分布電容,會產(chǎn)生電平損耗和波形畸變,以至于檢測不出數(shù)據(jù)或數(shù)據(jù)出錯。此時可利用 rs232標準總線接口,將單片機輸出的ttl電平轉(zhuǎn)換為rs232標準電平(邏輯1為-15-5v;邏輯0為+5-+15v)。用rs232可將傳輸距離提高到15m,如果想遠距離傳輸,可以采用rs422或者rs485。電平轉(zhuǎn)換芯片max232是美信公司(maxim)生產(chǎn),專用于進行將ttl電平轉(zhuǎn)換為rs232電平的芯片,max232內(nèi)部有泵電源,能將+5

11、v電源電壓在芯片內(nèi)提高到rs232電平所需的+10v或者-10v電平。圖2.電平轉(zhuǎn)換芯片max2322.1.3 整體電路設(shè)計最終設(shè)計電路如下圖3所示,發(fā)送方的數(shù)據(jù)由串行口txd段輸出,經(jīng)過電平轉(zhuǎn)換芯片max232將ttl電平轉(zhuǎn)換為rs232電平輸出,經(jīng)過傳輸線將信號傳送到接收端。接收方也使用max232芯片進行電平轉(zhuǎn)換后,信號到達接收方串行口的接收端。接受方接收后,通過p1口在數(shù)碼管上顯示接收的信息。圖3.串行通信電路2.2軟件設(shè)計通過通信協(xié)議進行發(fā)送接收,主機先送aah給從機,當(dāng)從機接收到aah后,向主機回答bbh。主機收到bbh后就把數(shù)碼表tab16中的10個數(shù)據(jù)送給從機,并發(fā)送檢驗和。從

12、機收到16個數(shù)據(jù)并計算接收到數(shù)據(jù)的檢驗和,與主機發(fā)送來的檢驗和進行比較,若檢驗和相同則發(fā)送00h給主機;否則發(fā)送ffh給主機,重新接受。從機收到16個正確數(shù)據(jù)后送到一個數(shù)碼管顯示。 2.2.1串行通信軟件實現(xiàn)(1)串行口工作于方式1;用定時器1產(chǎn)生9600bit/s的波特率,工作于方式2。(2)功能:將本機rom中數(shù)碼表tab16中的16個數(shù)發(fā)送到從機,并保存在從機內(nèi)部rom中,從機收到這16個數(shù)據(jù)后送到一個數(shù)碼管循環(huán)顯示。(3)通信協(xié)議:主機首先發(fā)送連絡(luò)信號(aah),從機接收到之后返回一個連絡(luò)信號(bbh)表示從機已準備好接收。(4)通信過程使用第九位發(fā)送奇偶校驗位。(5)從機接收到一個數(shù)

13、據(jù)后,立即進行奇偶校驗,若數(shù)據(jù)沒有錯誤,則返回00h,否則返回ffh。(6)主機發(fā)送一個數(shù)據(jù)后,等待從機返回數(shù)據(jù);若為00h,則繼續(xù)發(fā)送下一個數(shù)據(jù),若為ffh,則重新發(fā)送數(shù)據(jù)。2.2.2 程序流程圖(1)發(fā)送端程序流程圖主程序開始從機是否回答bbh?程序初始化主機發(fā)送aahn主機發(fā)送數(shù)據(jù),檢驗和輸出完成?n清除標志位 (2)接收方程序流程圖主程序開始檢驗和相等?程序初始化接收數(shù)據(jù),計算檢驗和n發(fā)送00h至主機接收完成?n清除標志位發(fā)送ffh,重新接收顯示2.3聯(lián)合調(diào)試在protues上進行仿真實驗。首先使用keilc將編寫完成的程序編譯生成hex文件,將hex文件燒錄到兩片單片機中,進行仿真實

14、驗,結(jié)果如下圖所示,可以看到,接收端已將接受到的數(shù)據(jù)完整的顯示了出來。圖4.仿真圖第3章 設(shè)計總結(jié)及心得經(jīng)過繁忙而又緊張的課程設(shè)計,終于順利的完成了設(shè)計任務(wù)。雖然在這段時間里每天都那么繁忙,但是在這忙碌的過程中卻得到了許多的收獲。經(jīng)過課程設(shè)計,在查閱資料的過程中,學(xué)習(xí)了基于單片機的c語言程序設(shè)計,了解了單片機串行通信的基本知識,對于以后的學(xué)習(xí)和工作都有很大的益處。在學(xué)習(xí)的過程中,也遇到了一些困難,比如開始的時候,由于發(fā)送端和接收端的通信協(xié)議沒有做好,導(dǎo)致數(shù)據(jù)不能正確的傳輸,在解決問題的過程中,對于通信協(xié)議的實現(xiàn)有了深刻的認識。通過這次課程設(shè)計,鍛煉了自己獨立思考的能力。第4章 附錄4.1 主機

15、發(fā)送程序#include <reg51.h>#define uchar unsigned char void init();void send();uchartab16 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar i,sum;int j;main() init(); send(); void init(void) ea=1; es=1; tmod=0x20; th1=0xfd; tl1=0xfd; pcon=0x00; scon=0x50; tr1=1

16、; void send(void)do sbuf=0xaa; while(!ti); ti=0; while(!ri); ri=0; while(sbuf0xbb)!=0);do sum=0; for(i=0;i<=15;i+) sbuf=tabi; sum+=tabi;while(!ti);ti=0;sbuf=sum;while(!ti);ti=0;while(!ri);ri=0;while(sbuf!=0);4.2 從機接收程序#include<reg51.h>#define uchar unsigned char#define uint unsigned intvoid

17、 delay(int );void receive(void) ;void init(void);uchar i,sum;int j;uchartab16 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void main() init(); receive(); void init(void) ea=1; es=1; tmod=0x20; th1=0xfd; tl1=0xfd; pcon=0x00; scon=0x50; tr1=1; void delay(int x)int

18、i,j;for(i=0;i<x;i+)for(j=1;j<=150;j+ );void receive(void) uchar tabs16; do while(!ri);ri=0; while(sbuf0xaa)!=0); sbuf=0xbb; while(!ti);ti=0; while(1) sum=0; for(i=0;i<=15;i+) while(!ri);ri=0; tabsi=sbuf; sum+=tabsi; while(!ri);ri=0; if(sbufsum)=0) sbuf=0x00; while(!ti); ti=0; break; else sbuf=0xff; while(!ti); ti=0; while(1) for(i=0;i<=15;i+) p1=tabsi; delay(500);4.3 系統(tǒng)電路圖參考文獻(1)單片機課程設(shè)計指導(dǎo)楊居義著,清華大學(xué)出版社,2009年9月(2)單片機原理及應(yīng)用林立等著,電子工業(yè)出版社,2009年7月致 謝首先感謝指導(dǎo)老師,在我的學(xué)習(xí)過程中他們給了我很大的幫助,幫助我理解不懂的地方,幫助我糾正了很多無法解決的錯誤,使我最終能夠

溫馨提示

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

評論

0/150

提交評論