單片機雙擊串行通信MS51匯編代碼_第1頁
單片機雙擊串行通信MS51匯編代碼_第2頁
單片機雙擊串行通信MS51匯編代碼_第3頁
單片機雙擊串行通信MS51匯編代碼_第4頁
單片機雙擊串行通信MS51匯編代碼_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、石家莊鐵道大學(xué)四方學(xué)院石家莊鐵道大學(xué)四方學(xué)院集中實踐報告書集中實踐報告書課題名稱課題名稱雙機串行通信設(shè)計雙機串行通信設(shè)計姓姓 名名邢志杰邢志杰學(xué)學(xué) 號號20127019系、系、 部部電氣工程系電氣工程系專業(yè)班級專業(yè)班級方方 1210-4指導(dǎo)教師指導(dǎo)教師馬麗馬麗2015 年年 7 月月 3 日日 20122012 級級單片機接口課程設(shè)計單片機接口課程設(shè)計一、設(shè)計任務(wù)及要求:一、設(shè)計任務(wù)及要求:設(shè)計任務(wù):設(shè)計任務(wù):雙機串行通信設(shè)計設(shè)計要求:設(shè)計要求:1、兩片單片機利用串行口進(jìn)行串行通信:串行通信的波特率可從鍵盤進(jìn)行設(shè)定,可選的波特率為 1200、2400、4800 和 9600bit/s。串行口工

2、作方式為方式 1 的全雙工串行通信。 2、兩個單片機之間進(jìn)行通訊波特率的設(shè)定,最終歸結(jié)到對定時計數(shù)器 T1 計數(shù)初值 TH1、TL1 進(jìn)行設(shè)定。故本題目本質(zhì)上是通過鍵盤掃描得到設(shè)定的波特率,從而載入相應(yīng)的 T1 計數(shù)初值 TH1、TL1 實現(xiàn)的。 3、要求發(fā)送方讀入按鍵值,發(fā)送到接收方,接收方接受數(shù)據(jù)并顯示在數(shù)碼管上。 4、要求做出實物。二、指導(dǎo)教師評語:二、指導(dǎo)教師評語: 三、成績?nèi)⒊煽?指導(dǎo)教師簽名: 年 月 日 目 錄第 1 章 設(shè)計目的1第 2 章 設(shè)計要求1第 3 章 硬件電路設(shè)計13.1 系統(tǒng)框圖13.2 STC89C52 單片機最小系統(tǒng)23.3 按鍵電路33.4 主電路設(shè)計4第

3、 4 章 軟件程序設(shè)計44.1 主程序流程圖44.2 鍵盤掃描子程序流程圖54.3 從機主程序流程圖64.4 從機中斷子程序流程圖74.5 程序調(diào)試84.6 雙機串行通信源程序9第 5 章 結(jié)論13參考文獻(xiàn)131第 1 章 設(shè)計目的1.1 設(shè)計目的(1)掌握單片機實際系統(tǒng)的開發(fā)步驟。(2)了解串行通信的原理;了解數(shù)碼管顯示的工作原理;了解鍵盤掃描的工作原理;對雙機串行通信軟件編程、調(diào)試、相關(guān)硬件設(shè)備的使用技能等方面得到真正的實踐機會,把軟硬件結(jié)合,克服其中的種種問題,提高編程能力。第 2 章 設(shè)計要求2.1 設(shè)計要求(1)兩片單片機利用串行口進(jìn)行串行通信:串行通信的波特率可從鍵盤進(jìn)行設(shè)定,可選

4、的波特率為 1200、2400、4800 和 9600bit/s。串行口工作方式為方式 1 的全雙工串行通信。 (2)兩個單片機之間進(jìn)行通訊波特率的設(shè)定,最終歸結(jié)到對定時計數(shù)器T1 計數(shù)初值 TH1、TL1 進(jìn)行設(shè)定。故本題目本質(zhì)上是通過鍵盤掃描得到設(shè)定的波特率,從而載入相應(yīng)的 T1 計數(shù)初值 TH1、TL1 實現(xiàn)的。 (3)要求發(fā)送方讀入按鍵值,發(fā)送到接收方,接收方接受數(shù)據(jù)并顯示在數(shù)碼管上。 (4)要求做出實物。第 3 章 硬件電路設(shè)計3.1系統(tǒng)框圖2按鍵電路單片機 1AT89C52單片機 2AT89C52顯示電路圖 3-1 系統(tǒng)框圖3.2STC89C52 單片機最小系統(tǒng)89C52 共有四個

5、八位的并行雙向口,即有 32 根輸入輸出口線。各口的每一位均由鎖存器、輸出驅(qū)動器和輸入緩沖器組成。 VCC(40 引腳):電源電壓VSS(20 引腳):接地 圖 3-2 STC89C52 引腳圖P0 端口(P0.0P0.7,3932 引腳):P0 口是一個漏極開路的 8 位雙向 I/O口。作為輸出端口,每個引腳能驅(qū)動 8 個 TTL 負(fù)載,對端口 P0 寫入“1”時,可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時,P0 口也可以提供低 8 位地址和 8 位數(shù)據(jù)的復(fù)用總線。此時,P0 口內(nèi)部上拉電阻有效。在 Flash ROM 編程時,P0 端口接收指令字節(jié);而在校驗程序時,則輸出指令字節(jié)。驗

6、證時,要求外接上拉電阻。3P1 端口(P1.0P1.7,18 引腳):P1 口是一個帶內(nèi)部上拉電阻的 8 位雙向I/O 口。P1 的輸出緩沖器可驅(qū)動(吸收或者輸出電流方式)4 個 TTL 輸入。對端口寫入 1 時,通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1 口作輸入口使用時,因為有內(nèi)部上拉電阻,那些被外部拉低的引腳會輸出一個電流。P1 口特點是輸出鎖存器,輸出時沒有條件。輸入緩沖,輸入時有條件,即需要先將該口設(shè)為輸入狀態(tài),先輸出 1。 此外,P1.0 和 P1.1 還可以作為定時器/計數(shù)器 2 的外部技術(shù)輸入(P1.0/T2)和定時器/計數(shù)器 2 的觸發(fā)輸入(P1.1/T2EX

7、) 。P3 口為準(zhǔn)雙向口??梢宰止?jié)訪問,也可以位訪問。P3.0-RXD,串行輸入口。P3.1-TXD,串行輸出口。P3.2-INT0,外部中斷 0 的請求。P3.3-INT1,外部中斷 1 的請求。P3.4-T0,定時器/計數(shù)器 0 外部計數(shù)脈沖。P3.5-T1,定時器/計數(shù)器,1 外部計數(shù)脈沖。P3.6-WR,外部數(shù)據(jù)存儲器寫選通。P3.7-RD,外部數(shù)據(jù)存儲器讀選通。RST(9 引腳):復(fù)位輸入。當(dāng)輸入連續(xù)兩個機器周期以上高電平時為有效,用來完成單片機單片機的復(fù)位初始化操作。ALE(30 引腳):地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低 8 位地址的輸出脈沖。XTAL1(1

8、9 引腳):振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。XTAL2(18 引腳):振蕩器反相放大器的輸入端。STC89C52 引腳圖如圖3-2 所示。3.3 按鍵電路4圖 3-3 按鍵電路圖本設(shè)計按鍵采用矩陣鍵盤,鍵盤連接主機的 P2 口,主機從矩陣鍵盤接收信息,通過串行輸出口輸出到從機,從機從串行輸入口接收信息并把信息顯示在數(shù)碼管上。3.4 主電路設(shè)計aabbccddeeffgghh001122335566abcdefg4477P3P3P3P3hP10P11P12P1345673210P10P11P12P13D02D13D24D35D46D57D68D79Q019Q118Q217Q316Q4

9、15Q514Q613Q712LE11OE1U474HC573S3S0XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A92

10、2P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P

11、2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U2AT89C52D02D13D24D35D46D57D68D79Q019Q118Q217Q316Q415Q514Q613Q712LE11OE1U374HC573C133pFC233pFX1CRYSTALR110kC433pFC533pFX2CRYSTALR210kC610uFR310kC310uF圖 3-4 主電路圖第 4 章 軟件程序設(shè)計5設(shè)計思路為:主機通過鍵盤掃描程序確認(rèn)是否有鍵按下,若有鍵按下則將按鍵號對應(yīng)的顯示代碼發(fā)送給從機,并判

12、斷是否是波特率按鍵,若是則進(jìn)行波特率調(diào)整,若無鍵按下,則繼續(xù)進(jìn)行鍵盤掃描。從機主程序動態(tài)顯示緩沖區(qū)內(nèi)的數(shù)據(jù)。中斷子程序接收數(shù)據(jù)并判斷是否是波特率按鍵所對應(yīng)的顯示代碼,若是則進(jìn)行波特率調(diào)整,然后將數(shù)據(jù)保存到緩沖區(qū)。初始波特率都為 9600。 4.1 主程序流程圖 鍵盤連接到甲機的 P2 口,通過按鍵掃描確定鍵值,從機與主機通過串行輸入口 P3.0 和串行輸出口 P3.1 相連接,實現(xiàn)兩機之間的串行通信。開始設(shè)置串行口工作方式及波特率檢測按鍵確定按鍵號并發(fā)送波特率按鍵調(diào)整波特率YYNN圖4-1 主機主程序流程圖4.2 鍵盤掃描子程序流程圖6矩陣式鍵盤掃描的方法常用的有兩種,一種是逐列送0,依次讀回

13、行;另一種為反轉(zhuǎn)法。本程序采用前者,程序流程圖如下:開始P2 口列置 0,行置 1讀回 P2 口得鍵號行值是否變化調(diào)整行,列值結(jié)束YN圖4-2 鍵盤掃描子程序流程圖4.3 從機主程序流程圖從機主程序動態(tài)顯示緩沖區(qū)的4個數(shù)據(jù)。從機的 P1口經(jīng)鎖存器74HC573連接數(shù)碼管位碼,P2口經(jīng)鎖存器74HC573連接數(shù)碼管的段碼。從機與主機通過串行輸入口 P3.0和串行輸出口 P3.1相連接,利用中斷來接收主機發(fā)來的數(shù)據(jù),并根據(jù)接收的數(shù)據(jù)來判斷是否需要進(jìn)行波特率調(diào)整。從機主程序流程圖如下:7開始初始化送段碼,送位碼顯示完?調(diào)整指針YN圖 4-3 從機主程序流程圖4.4 從機中斷子程序流程圖 8開始清接收

14、標(biāo)志位RI保存到緩沖區(qū)波特率按鍵?調(diào)整波特率中斷返回NY圖 4-3 從機中斷子程序流程圖4.5 程序調(diào)試圖 4-5 程序調(diào)試94.6 雙機串行通信源程序/*程序調(diào)試軟件:Keil uVision4程序仿真軟件:ISIS 即 Proteus-7.8sp2/*雙機串行通信主機程序源代碼:/*雙機串行通信波特率可改變主機程序代碼(匯編)主機功能:通過鍵盤掃描得到鍵號,并發(fā)送對應(yīng)鍵號的顯示代碼,同時判斷是否是波特率按鍵。簡要說明:甲機P2口接4*4矩陣式鍵盤,高4位行,低4位列。其中04號按鍵分別代表4種不同波特率(1200、2400、4800、9600) 。初始波特率9600。編 寫:邢志杰(QQ8

15、24997141)時 間:2015年07月02日最后修改:2015年07月03日*/ORG 00HAJMP MAINORG 30HMAIN:MOV SP,#60HMOV TMOD,#20H ;定時器T1,方式2MOV TH1,#0FDH ;初始波特率9600MOV TL1,#0FDHSETB TR1MOV SCON,#40H ;串口方式1;主程序從這里開始LOP1:MOV P2,#0F0H ;列置0,行置1MOV A,P2 ;讀回P2口ANL A,#0F0H ;屏蔽列,保留行MOV B,A ;暫存A,用于二次讀回時判斷XRL A,#0F0H ;相異或判斷是否有鍵按下JZ LOP1 ;無鍵按下返

16、回LCALL Delay ;有按鍵,延時消抖MOV A,P2 ;二次讀回ANL A,#0F0H ;屏蔽列,保留行CJNE A,B,LOP1 ;判斷兩次讀數(shù)是否相等, (其實沒多大用) 。LCALL SCAN ;掉鍵盤掃描LCALL LOOSE ;等待按鍵松開LCALL GET_KEY ;得鍵號并發(fā)送,同時根據(jù)是否是波特率按鍵來改變波特率AJMP LOP1 ;主程序到此結(jié)束,返回開始處不斷循環(huán);鍵盤掃描函數(shù)10SCAN:MOV R3,#0 ;列號初值0MOV R2,#0FEH ;R2用于掃描時行置1,逐列送0SCAN2:MOV A,R2MOV P2,A ;行置1,逐列送0MOV A,P2 ;逐列

17、送0,依次讀回行JB ACC.4,LOOP1 ;判斷第0行是否為0,若為0則該列,該行有按鍵MOV R4,#0 ;第0行的行號0送R4RETLOOP1:JB ACC.5,LOOP2MOV R4,#04H ;第1行的行號4送R4RETLOOP2:JB ACC.6,LOOP3MOV R4,#08H ;第2行的行號8送R4RETLOOP3:JB ACC.7,SCAN1MOV R4,#0CH ;第3行的行號12送R4RETSCAN1:INC R3 ;該列無按鍵則列號加1MOV A,R2RL AMOV R2,AJB ACC.4,SCAN2 ;4列未掃描完,掃描下一列RET;等待按鍵松開子函數(shù)LOOSE:

18、MOV P2,#0F0HMOV A,P2ANL A,#0F0HXRL A,#0F0HJNZ LOOSERET;得鍵號并發(fā)送GET_KEY: MOV A,R4ADD A,R3 ;得偏移量A即鍵號MOV B,A ;暫存鍵號MOV DPTR,#TAB ;查表得對應(yīng)鍵號的顯示代碼MOVC A,A+DPTRMOV SBUF,A ;發(fā)送顯示代碼JNB TI,$ ;未發(fā)完等待CLR TI ;清發(fā)送標(biāo)志位MOV A,B ;取出鍵號,判斷是否是波特率按鍵并調(diào)整波特率CJNE A,#0,GET1 ;鍵號0對應(yīng)波特率1200MOV TL1,#0E8HMOV TH1,#0E8HAJMP GET411GET1:CJNE

19、 A,#1,GET2;鍵號1對應(yīng)波特率2400MOV TL1,#0F4HMOV TH1,#0F4HAJMP GET4GET2:CJNE A,#2,GET3;鍵號2對應(yīng)波特率4800MOV TL1,#0FAHMOV TH1,#0FAHAJMP GET4GET3:CJNE A,#3,GET4;鍵號3對應(yīng)波特率9600MOV TL1,#0FDHMOV TH1,#0FDHGET4:RET;延時子涵數(shù)(10ms)Delay:MOV R2,#20DEY1:MOV R3,#248NOP DJNZ R3,$DJNZ R2,DEY1RETSJMP $;共陰極數(shù)碼管顯示代碼TAB:DB 3FH,06H,5BH,4

20、FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00HEND雙機串行通信從機程序源代碼/*雙機串行通信波特率可改變從機程序代碼(匯編)從機功能:主函數(shù)顯示緩沖區(qū)數(shù)據(jù)。中斷子函數(shù)接收主機發(fā)送的顯示代碼,同時判斷是否是波特率按鍵代碼。簡要說明:P1口接4個數(shù)碼管位碼,P2口接段碼。緩沖區(qū)30H33H用于存放要顯示的數(shù)據(jù)代碼。其中30H存放波特率的顯示代碼初值為:4FH即顯示3 (波特率9600) 。編 寫:邢志杰時 間:2015年07月02日最后修改:2015年07月03日*/ORG 00HAJMP MAINORG 23HAJMP Rece ;

21、中斷子程序ORG 30HMAIN:MOV SP,#60HMOV TMOD,#20H ;T1方式1MOV TH1,#0FDH ;波特率9600 12MOV TL1,#0FDHMOV SCON,#50H ;串口方式1,允許接收SETB TR1SETB ESSETB EAMOV R6,#3 ;動態(tài)顯示三個非波特率數(shù)據(jù)MOV 30H,#4FH ;保存接收的數(shù)據(jù)(波特率代碼)初值為3所對應(yīng)的代碼,代表初始波特率9600MOV R1,#31H ;保存接收的數(shù)據(jù)(非波特率代碼) ;主函數(shù)一直在顯示緩沖區(qū)DISP:MOV P1,#0FEH ;送位碼MOV P2,30H ;送段碼LCALL Delay ;調(diào)延時

22、函數(shù)MOV P1,#0FDH MOV P2,31HLCALL Delay MOV P1,#0FBH MOV P2,32HLCALL Delay MOV P1,#0F7H MOV P2,33HLCALL DelayAJMP DISP ;返回主函數(shù)開始處,循環(huán)顯示 ;接收中斷子函數(shù)Rece:CLR RI ;清接收標(biāo)志位MOV A,SBUF LCALL Option ;調(diào)波特率選擇子函數(shù)MOV R1,A ;存入緩沖區(qū)INC R1 DJNZ R6,Rec1 ;三個數(shù)未顯示完跳轉(zhuǎn)MOV R1,#31H ;三個數(shù)顯已示完,從31H從新開始MOV R6,#3Rec1:RETI;延時子函數(shù)Delay:MOV R2,#20DEY1:MOV R3,#248NOP DJNZ R3,$DJNZ R2,DEY1RET;波特率判斷選擇13Option:CJNE A,#3FH,Opt1 ;判斷是否是波特率1200所對應(yīng)的按鍵代碼MOV TL1,#0E8HMOV TH1,#0E8HACALL Rest ;是波特率按鍵則初始化緩沖區(qū),重新顯示AJMP Opt4Opt1:CJNE A,#06H,Opt2MOV TL1,#0F4HMOV TH1,

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論