單片機(jī)雙機(jī)之間的串行通信設(shè)計(jì)_第1頁
單片機(jī)雙機(jī)之間的串行通信設(shè)計(jì)_第2頁
單片機(jī)雙機(jī)之間的串行通信設(shè)計(jì)_第3頁
單片機(jī)雙機(jī)之間的串行通信設(shè)計(jì)_第4頁
單片機(jī)雙機(jī)之間的串行通信設(shè)計(jì)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 專業(yè)方向課程設(shè)計(jì)報(bào)告 題目:單片機(jī)雙機(jī)之間的串行通信設(shè)計(jì) 單片機(jī)雙機(jī)之間的串行通信設(shè)計(jì)一設(shè)計(jì)要求: 兩片單片機(jī)利用串行口進(jìn)行串行通信:串行通信的波特率可從鍵盤進(jìn)行設(shè)定,可選的波特率為1200、2400、4800和9600bit/s。2、 方案論證: 方案一:以兩片51單片機(jī)作為通信部件,以4*4矩陣鍵盤作為數(shù)據(jù)輸入接口,通過16個(gè)不同鍵值輸入不同的信息,按照51單片機(jī)的方式3進(jìn)行串口通信,從機(jī)采用中斷方式接收信息并按照通信協(xié)議改變波特率或者用I/O口輸出、CD4511譯碼、數(shù)碼管顯示相關(guān)數(shù)據(jù),整個(gè)系統(tǒng)的軟件部分采用C語言編寫。 方案二:整個(gè)系統(tǒng)的硬件設(shè)計(jì)與方案一樣,但是通信方式采用方式一進(jìn)行

2、通信,主從機(jī)之間的訪問采用查詢方式,數(shù)據(jù)輸出直接由單片機(jī)的譯碼程序輸出譯碼數(shù)據(jù),同時(shí)軟件編寫采用匯編語言。兩種方式從設(shè)計(jì)上來說各有特色,而且兩種方式都應(yīng)該是可行的。方案一中按照方式三通信可以輸出九位數(shù)據(jù)而方式一只能輸出八位數(shù)據(jù),但就本題的要求來說方式一就可以了。主從機(jī)之間的交流采用中斷方式是一種高效且保護(hù)單片機(jī)的選擇,但是相比之下本人對(duì)查詢方式的理解更好一些。數(shù)碼管的顯示若采用CD4511譯碼則直接輸出數(shù)據(jù)就可以了,但是這樣會(huì)增加硬件陳本,而且單片機(jī)的資源大部分都還閑置著,所以直接編寫一段譯碼程序是比較好的做法。另外在軟件編寫上,采用C語言在后續(xù)設(shè)計(jì)中對(duì)硬件的考慮稍少一些,換言之采用匯編可以使

3、自己對(duì)整個(gè)通信過程及單片機(jī)的部分結(jié)構(gòu)有更清晰地認(rèn)識(shí)所以綜合考慮采用方案二。3、 理論設(shè)計(jì):采用AltiumDesigner繪制的原理圖(整圖)本系統(tǒng)主要包括五個(gè)基本模塊:單片機(jī)最小系統(tǒng)(包括晶振電路、電源、復(fù)位電路及相關(guān)設(shè)置電路)、4*4矩陣鍵盤、功能控制電路、數(shù)據(jù)顯示電路、波特率更改指示電路。本設(shè)計(jì)的基本思路是通過控制口選擇將要實(shí)現(xiàn)的功能, 然后矩陣鍵盤輸入數(shù)據(jù),單片機(jī)對(duì)數(shù)據(jù)進(jìn)行處理(加校驗(yàn)碼、設(shè)置功能標(biāo)志位),然后與從機(jī)握手,一切就緒之后后就開始發(fā)送數(shù)據(jù),然后從機(jī)對(duì)接收數(shù)據(jù)校驗(yàn),回發(fā)校驗(yàn)結(jié)果,主機(jī)根據(jù)校驗(yàn)結(jié)果進(jìn)行下一步動(dòng)作,或者重發(fā),或者進(jìn)入下一數(shù)據(jù)的發(fā)送過程,然后按照此過程不段循環(huán),直到

4、結(jié)束。單片機(jī)最小系統(tǒng):接上電源和地,晶振電路提供脈沖,加上復(fù)位電路,將EA接入高電電平選擇片內(nèi)程序存儲(chǔ)器。這是一個(gè)單片機(jī)能夠工作的最低設(shè)置。4*4矩陣鍵盤:將矩陣鍵盤接入p1口通過按鍵掃描程序讀寫P1口從而判斷有無安鍵按下,通過查鍵值程序確定其鍵值從而得到輸入數(shù)據(jù)。這是整個(gè)系統(tǒng)的輸入接口。功能控制電路:控制鍵(圖中為K3)被按下時(shí)p0.0為低電平,否則為高電平,這樣就可以根據(jù)讀入的p0.0的電平差別控制通信系統(tǒng)的功能。高電平時(shí)讓從機(jī)顯示接收到的數(shù)據(jù),低電平從機(jī)更改波特率。 數(shù)據(jù)顯示模塊:譯碼程序?qū)@得的數(shù)據(jù)譯成可直接顯示的段碼輸?shù)絧2口,用數(shù)碼管顯示。為防止單片機(jī)的帶負(fù)載能力不足,本設(shè)計(jì)中加了

5、上拉電阻使數(shù)碼管顯示更清晰。 波特率更改指示電路:在從機(jī)更改波特率之后同時(shí)給P1口寫數(shù)是相應(yīng)指示燈亮,指示此時(shí)兩機(jī)之間通信的波特率為多少。 開始 開始 主機(jī)軟件流程圖 從機(jī)軟件流程圖初始化,設(shè)置初始波特率及相應(yīng)寄存器初始化,設(shè)置初始波特率及相應(yīng)寄存器等待主機(jī)握手N 鍵按下? 收OEH?Y NY調(diào)用發(fā)送程序準(zhǔn)備發(fā)送數(shù)據(jù) 回發(fā)02H回發(fā)01H發(fā)送呼叫信號(hào)0EH,并等待從機(jī)回答 等待主機(jī)發(fā)送數(shù)據(jù)并校驗(yàn)N 01H? N 無錯(cuò)?Y P1.0=1?回發(fā)F0HYNY回發(fā)0FH對(duì)鍵值加校驗(yàn)位,加標(biāo)志位,等待發(fā)送 對(duì)鍵值加校驗(yàn)位,發(fā)送NAcc.5=1?NY更改波特率,及相關(guān)處理 等待從機(jī)回答 顯示接收數(shù)據(jù)N0F

6、H?Y 等待從機(jī)回答 返回 0FH?Y 返回4、 電路仿真及仿真結(jié)果分析:控制鍵未被按下時(shí),從機(jī)顯示接收到到的數(shù)據(jù)指示燈未亮表明此時(shí)從機(jī)未設(shè)置波特率,以初始波特率工作控制鍵未被按下兩機(jī)之間數(shù)字信號(hào)的傳輸用示波器觀察兩機(jī)之間的信息交流指示燈亮表明通信系統(tǒng)此時(shí)以指定波特率工作控制鍵被按下時(shí),從機(jī)不顯示數(shù)據(jù)控制鍵被按下下圖是系統(tǒng)軟件仿真的結(jié)果,以下現(xiàn)象表明系統(tǒng)能正常工作并實(shí)現(xiàn)預(yù)設(shè)結(jié)果。 5、 作品功能和使用說明:電源接口及開關(guān)波特率指示燈接上電源系統(tǒng)開始工作,功能件控制從機(jī)功能,鍵盤輸入數(shù)據(jù),主機(jī)發(fā)送數(shù)據(jù),從機(jī)接收數(shù)據(jù)。當(dāng)控制鍵未被按下時(shí),從機(jī)顯示接收到的數(shù)據(jù);控制鍵被按下時(shí)從機(jī)不再顯示數(shù)據(jù),只更改

7、波特率,同時(shí)點(diǎn)亮相應(yīng)的指示燈。指示燈會(huì)指示當(dāng)前工作的波特率,燈不亮?xí)r單片機(jī)以默認(rèn)波特率工作。系統(tǒng)斷電時(shí)結(jié)束通信。 從機(jī)更改波特率,不顯示數(shù)據(jù)從機(jī)只顯示數(shù)據(jù)6、 心得體會(huì):經(jīng)過這幾天的努力終于將設(shè)計(jì)完成了。整個(gè)過程雖然遇到很多問題,但是確實(shí)感覺又學(xué)到了了不少東西。整個(gè)系統(tǒng)的設(shè)計(jì)很快就決定下來了,但是在軟件編寫完之后進(jìn)行軟件仿真時(shí),一直不能不能成功。然后一步步的查錯(cuò),從功能流程圖開始,一步步檢查,理清系統(tǒng)的時(shí)序邏輯關(guān)系。確保邏輯功能沒問題后,對(duì)軟件進(jìn)行調(diào)試,逐步調(diào)試、設(shè)置相關(guān)寄存器、查看相應(yīng)的io口,然后發(fā)現(xiàn)這里也沒什么問題。于是直接在程序中設(shè)置標(biāo)志位,觀察程序的運(yùn)行情況。后來發(fā)現(xiàn)問題主要出現(xiàn)在兩

8、個(gè)地方:一是軟件不能自動(dòng)返回,重復(fù)執(zhí)行,于是在程序中增加了循環(huán)語句和返回語句;二是沒有正確保存數(shù)據(jù)和取數(shù)據(jù),主要體現(xiàn)在查鍵值后沒有保護(hù)數(shù)據(jù)及進(jìn)行校驗(yàn)后沒有進(jìn)行重取原數(shù)據(jù),這是兩個(gè)非常易錯(cuò)的問題。另外功能上單片機(jī)之間的“握手”和等待通訊過程也是非常重要的。另外在硬件制作時(shí)也遇到了一些問題,主要是在制作PCB板時(shí)由于腐蝕過度導(dǎo)致出現(xiàn)了很多斷路,以至調(diào)試時(shí)得檢查電路,同時(shí)對(duì)整個(gè)系統(tǒng)的美觀造成很大影響。不過,這次設(shè)計(jì)確實(shí)讓我對(duì)通信過程有更深的理解。七、參考文獻(xiàn)1李建忠.單片機(jī)原理及應(yīng)用(第二版.西安電子科技大學(xué)出版社 )2何小艇.電子系統(tǒng)設(shè)計(jì)(第四版.浙江大學(xué)出版社)系統(tǒng)程序:/* 約定:主機(jī)發(fā)送呼叫

9、信號(hào)"0EH",咨詢從機(jī)是否可以接受數(shù)據(jù) * 從機(jī)發(fā)送"01H"表示可以接受,否則發(fā)送"02H"表示暫時(shí)不能接受數(shù)據(jù) * 主機(jī)只有收到了應(yīng)答信號(hào)"01H"才向從機(jī)發(fā)送數(shù)據(jù),否則繼續(xù)呼叫 * 主機(jī)收到"0FH"表示發(fā)送正確,收到"F0H"表示發(fā)送錯(cuò)誤 * 設(shè)置:串口工作于方式1 ,定時(shí)器做波特率發(fā)生器工作于方式2,SMOD=1, * 波特率為1200時(shí)計(jì)數(shù)初值為D0, 2400-E8H, 4800-F4H, 9600-FAH * 兩片單片機(jī)開始波特率設(shè)為4800 * 通過按鍵進(jìn)

10、行功能選擇,按下P0.0=0設(shè)置波特率 未按P0.0=1數(shù)據(jù)顯示 * */主機(jī)程序:/*發(fā)送程序*/ ORG0000H LJMP MAIN ORG 0030HMAIN: MOV SP,#60H MOV TMOD, #20H ;置定時(shí)器/計(jì)數(shù)器1工作于方式2定時(shí) MOV TL1, #0F4H ;置定時(shí)器/計(jì)數(shù)器1初值,初始波特率為4800 MOV TH1, #0F4H ;置重裝值 MOV PCON,#80H ;SMOD=1 MOV SCON,#50H ;串行口工作于方式1 SETB TR1/*首先進(jìn)行查鍵子程序*/ BEGAIN: ACALL KEY MOV R1,A ACALL HUJIAO

11、AJMPBEGAIN /*按鍵掃描*/KEY: ACALL KS1 ;調(diào)用判斷有無鍵按下子程序 JNZ LK1 ;有鍵按下(A)=0, AJMP KEYLK1: ACALL DELAY ACALL KS1 JNZ CKEY AJMP KEYCKEY: MOV R2,#7FH MOV R4,#00HCKEY1: MOV P1,R2 JB P1.0,LONE MOV A,#00H AJMP LPK ;轉(zhuǎn)到鍵值計(jì)算子程序LONE: JB P1.1,LTWO MOV A,#04H AJMP LPKLTWO: JB P1.2,LTHR MOV A,#08H AJMP LPKLTHR: JB P1.3,N

12、EXT0 MOV A,#0CHLPK: ADD A,R4 PUSH ACCLK3: ACALL KS1 JNZ LK3 ACALL DELAY POP ACC RET NEXT0: INC R4 MOV A,R2 JNB P1.3,KEND RR A MOV R2,A AJMP CKEY1KEND: AJMP KEY KS1: MOV P1,#0FH MOV A,P1 CPL A ANL A,#0FH RET /*然后呼叫從機(jī)*/HUJIAO: CALL DELAY MOV A,#0EH CPL P3.4 MOV SBUF,AWAIT1: JBC TI,TXYES ;等待發(fā)送完成 SJMP W

13、AIT1 TXYES: JBC RI,NEXT1 ;等待從機(jī)回答 SJMP TXYES NEXT1: MOV A,SBUF ;判斷從機(jī)是否同意,不同意則繼續(xù)呼叫 CJNE A,#01H,HUJIAO PANDUAN: JB P0.0,XSHU ;功能鍵被按下,則發(fā)送數(shù)據(jù)設(shè)置波特率,否則只顯示發(fā)送數(shù)據(jù) SHEZ: MOV A,R1 SETB ACC.5 ;ACC.5=1顯示 ACC.5=0設(shè)置波特率 MOV C,P MOV ACC.7,C MOV SBUF,AWAIT2: JNB TI,WAIT2 CLR TIWAITC1: JNB RI,WAITC1 CLR RI CPL P3.6 MOV A

14、,SBUF CJNE A,#0FH,SHEZ MOV A,R1 ANL A,#0FH CJNE A,#00H,L1 MOV TL1, #0D0H;重設(shè)波特率為1200 MOV TH1, #0D0H LJMP FHL1: CJNE A,#01H,L2 MOV TL1, #0E8H;重設(shè)波特率為2400 MOV TH1, #0E8H LJMP FHL2: CJNE A,#02H,L3 MOV TL1, #0F4H;重設(shè)波特率為4800 MOV TH1, #0F4H LJMP FHL3: CJNE A,#03H,FH MOV TL1, #0FAH;重設(shè)波特率為9600 MOV TH1, #0FAH

15、LJMP FH XSHU: MOV A,R1 ;只顯示數(shù)字時(shí),A的高位不處理直接發(fā)送 MOV C,P MOV ACC.7,C MOV SBUF,AWAIT3: JNB TI,WAIT3 CLR TIWAITC: JNB RI,WAITC CLR RI MOV A,SBUF CJNE A,#0FH,XSHU CLR P3.7FH: RET/*延時(shí)子程序*/DELAY: MOV R6,#0FFHLOOP1: DJNZ R6,LOOP1 RETJS: END從機(jī)程序: /*接收程序*/ ORG0000H LJMP MAIN ORG 0030HMAIN: MOV SP,#60HRSTRT: MOV T

16、MOD, #20H ;置定時(shí)器/計(jì)數(shù)器1工作于方式2定時(shí) MOV TL1, #0F4H;置定時(shí)器/計(jì)數(shù)器1初值,初始波特率為4800 MOV TH1, #0F4H ;置重裝值 MOV PCON,#80H ;SMOD=1 MOV SCON,#50H ;串行口工作于方式1 SETB TR1JIESHOU: CLR TI JNB RI,JIESHOU CLR RI MOV A,SBUF CJNE A,#0EH,FA2 FA1: MOV A,#01H MOV SBUF,A CPL P3.7WAIT1: JBC TI,RX SJMP WAIT1FA2: MOV A,#02H MOV SBUF,AWAIT

17、2: JBC TI,JIESHOU SJMP WAIT2RX: CLR TI JNB RI,RX CLR RI MOV A,SBUF MOV C,P MOV R1,A JC FAF0FA0F: MOV A,#0FH MOV SBUF,AWAIT3: JNB TI,WAIT3 CLR TI SJMP CHULIFAF0: MOV A,#0F0H MOV SBUF,AWAIT4: JNB TI,WAIT4 CLR TI LJMP RX CHULI: MOV A,R1 JB ACC.5,SHEZ ;ACC.5=1顯示 ACC.5=0設(shè)置波特率XIANS: ANL A,#0FH LCALL DISPL

18、AY LJMP JS SHEZ: MOV P2,#00H ANL A,#0FH CJNE A,#00H,L1 MOV TL1, #0D0H;重設(shè)波特率為1200 MOV TH1, #0D0H MOV P1,#0FEH ;CLR P1.0 LJMP JS L1: CJNE A,#01H,L2 MOV TL1, #0E8H;重設(shè)波特率為2400 MOV TH1, #0E8H MOV P1,#0FDH ;CLR P1.1 LJMP JS L2: CJNE A,#02H,L3 MOV TL1, #0F4H;重設(shè)波特率為4800 MOV TH1, #0F4H MOV P1,#0FBH ;CLR P1.2

19、 LJMP JSL3: CJNE A,#03H,JIE MOV TL1, #0FAH;重設(shè)波特率為9600 MOV TH1, #0FAH MOV P1,#0F7H ;CLR P1.3 JIE: LJMP JS/*延時(shí)子程序*/DELAY: MOV R6,#03FHLOOP1: DJNZ R6,LOOP1 RET/*譯碼程序*/DISPLAY: CJNE A,#00H,LT1 MOV A,#00111111B ;0 SJMPLASTLT1: CJNE A,#01H,LT2 MOV A,#00000110B ;1 SJMPLASTLT2: CJNE A,#02H,LT3 MOV A,#01011011B ;2 SJMPLASTLT3: CJNE A,#03H,LT4 MOV A,#

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲(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)論