單片機(jī)雙擊串行通信C語言設(shè)計(jì)報(bào)告含代碼_第1頁
單片機(jī)雙擊串行通信C語言設(shè)計(jì)報(bào)告含代碼_第2頁
單片機(jī)雙擊串行通信C語言設(shè)計(jì)報(bào)告含代碼_第3頁
單片機(jī)雙擊串行通信C語言設(shè)計(jì)報(bào)告含代碼_第4頁
單片機(jī)雙擊串行通信C語言設(shè)計(jì)報(bào)告含代碼_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

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

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

5、統(tǒng)框圖3.2STC89C52 單片機(jī)最小系統(tǒng)89C52 共有四個(gè)八位的并行雙向口,即有 32 根輸入輸出口線。各口的每一位均由鎖存器、輸出驅(qū)動(dòng)器和輸入緩沖器組成。 VCC(40 引腳):電源電壓VSS(20 引腳):接地圖 3-2STC89C52 引腳圖P0 端口(P0.0P0.7,3932 引腳):P0 口是一個(gè)漏極開路的 8 位雙向I/O 口。作為輸出端口,每個(gè)引腳能驅(qū)動(dòng) 8 個(gè) TTL 負(fù)載,對端口 P0 寫入“1”時(shí),可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0 口也可以提供低 8 位地址和 8 位數(shù)據(jù)的復(fù)用總線。此時(shí),P0 口部上拉電阻有效。在 Flash ROM 編程時(shí),

6、P0 端口接收指令字節(jié);而在校驗(yàn)程序時(shí),則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接上拉電阻。P1 端口(P1.0P1.7,18 引腳):P1 口是一個(gè)帶部上拉電阻的 8 位雙向I/O 口。P1 的輸出緩沖器可驅(qū)動(dòng)(吸收或者輸出電流方式)4 個(gè) TTL 輸入。對端口寫入 1 時(shí),通過部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時(shí),因?yàn)橛胁可侠娮?,那些被外部拉低的引腳會(huì)輸出一個(gè)電流。P1 口特點(diǎn)是輸出鎖存器,輸出時(shí)沒有條件。輸入緩沖,輸入時(shí)有條件,即需要先將該口設(shè)為輸入狀態(tài),先輸出 1。 此外,P1.0 和 P1.1 還可以作為定時(shí)器/計(jì)數(shù)器 2 的外部技術(shù)輸入(P1.0/T2)和定

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

8、存儲(chǔ)器時(shí),鎖存低 8 位地址的輸出脈沖。XTAL1(19 引腳):振蕩器反相放大器和部時(shí)鐘發(fā)生電路的輸入端。XTAL2(18 引腳):振蕩器反相放大器的輸入端。STC89C52 引腳圖如圖3-2 所示。3.3 按鍵電路圖 3-3 按鍵電路圖本設(shè)計(jì)按鍵采用矩陣鍵盤,鍵盤連接主機(jī)的 P2 口,主機(jī)從矩陣鍵盤接收信息,通過串行輸出口輸出到從機(jī),從機(jī)從串行輸入口接收信息并把信息顯示在數(shù)碼管上。3.4 主電路設(shè)計(jì)圖 3-4 主電路圖第 4 章 軟件程序設(shè)計(jì)設(shè)計(jì)思路為:主機(jī)通過鍵盤掃描程序確認(rèn)是否有鍵按下,若有鍵按下則將按鍵號(hào)對應(yīng)的顯示代碼發(fā)送給從機(jī),并判斷是否是波特率按鍵,若是則進(jìn)行波特率調(diào)整,若無鍵按

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

10、下:. v開始P2 口列置 0,行置 1讀回 P2 口得鍵號(hào)行值是否變化調(diào)整行,列值結(jié)束YN圖4-2 鍵盤掃描子程序流程圖4.3 從機(jī)主程序流程圖從機(jī)主程序動(dòng)態(tài)顯示緩沖區(qū)的4個(gè)數(shù)據(jù)。從機(jī)的 P1口經(jīng)鎖存器74HC573連接數(shù)碼管位碼,P2口經(jīng)鎖存器74HC573連接數(shù)碼管的段碼。從機(jī)與主機(jī)通過串行輸入口 P3.0和串行輸出口 P3.1相連接,利用中斷來接收主機(jī)發(fā)來的數(shù)據(jù),并根據(jù)接收的數(shù)據(jù)來判斷是否需要進(jìn)行波特率調(diào)整。從機(jī)主程序流程圖如下:. v開始初始化送段碼,送位碼顯示完.調(diào)整指針YN圖 4-3 從機(jī)主程序流程圖4.4 從機(jī)中斷子程序流程圖. v開始清接收標(biāo)志位RI保存到緩沖區(qū)波特率按鍵.調(diào)

11、整波特率中斷返回NY圖 4-3 從機(jī)中斷子程序流程圖4.5 程序調(diào)試圖 4-5 程序調(diào)試4.6 雙機(jī)串行通信源程序/*程序調(diào)試軟件:Keil uVision4程序仿真軟件:ISIS 即 Proteus-7.8sp2/*雙機(jī)串行通信主機(jī)程序源代碼:/*程序名稱:雙機(jī)串行通信波特率可調(diào)主機(jī)程序(C語言). v主機(jī)功能:通過鍵盤掃描得到鍵號(hào)并發(fā)送,同時(shí)判斷是否是波特率按鍵,若是則調(diào)整波特率。簡要說明:主機(jī)P2口接4*4矩陣式鍵盤,高4位行,低4位列。其中04號(hào)按鍵分別代表4種不同波特率(1200、2400、4800、9600) 。初始波特率9600。編 寫:邢志杰(QQ824997141)時(shí) 間:2

12、015年07月02日最后修改:2015年07月03日*/*include *define uint unsigned int*define uchar unsigned charint log=0,bot=0; /log,bot分別是按鍵標(biāo)志位和波特率調(diào)整標(biāo)志位uchar temp, num;void delay(uint z) /延時(shí)函數(shù)uint x,y;for(x=z;x0;x-) for(y=110;y0;y-);/*按鍵掃描子函數(shù)*/ void keyscan() P2=0 xf0; temp=P2; temp&=0 xf0; if(temp!=0 xf0) delay(5); /延時(shí)

13、消抖 P2=0 xf0; /二次讀回. v temp=P2; temp&=0 xf0; if(temp!=0 xf0) log=1; /有按鍵 P2=0 xfe; temp=P2; if(temp!=0 xfe) switch(temp) case 0 xee: num=0;bot=1;break;/bot=1表示是波特率按鍵 case 0 xde: num=4;break; case 0 xbe: num=8;break; case 0 x7e: num=12;break; P2=0 xfd; temp=P2; if(temp!=0 xfd) switch(temp) case 0 xed:

14、 num=1;bot=1;break;/bot=1表示是波特率按鍵case 0 xdd: num=5;break; case 0 xbd: num=9;break; case 0 x7d: num=13;break; P2=0 xfb; temp=P2; if(temp!=0 xfb) switch(temp) case 0 xeb: num=2;bot=1;break;/bot=1表示是波特率按鍵 case 0 xdb: num=6;break; case 0 xbb: num=10;break; case 0 x7b: num=14;break; P2=0 xf7; temp=P2; if

15、(temp!=0 xf7) switch(temp) . v case 0 xe7: num=3;bot=1;break;/bot=1表示是波特率按鍵 case 0 xd7: num=7;break; case 0 xb7: num=11;break; case 0 x77: num=15;break; /等待按鍵松開 P2=0 xf0; temp=P2; temp&=0 xf0; while(temp!=0 xf0) temp=P2; temp&=0 xf0; /*主函數(shù)*/void main() TMOD=0 x20; /設(shè)置定時(shí)器 1 為工作方式 2TH1=0 xfd; /裝初值設(shè)置波特

16、率TL1=0 xfd;TR1=1; /打開定時(shí)器 1SCON=0 x40; /8位異步while(1) keyscan(); if(log=1) /有鍵按下發(fā)送鍵號(hào) SBUF=num; /發(fā)送按鍵號(hào)while(!TI); TI=0; /清發(fā)送標(biāo)志位 log=0; /清按鍵標(biāo)志位. vif(bot=1) /是波特率按鍵進(jìn)行波特率調(diào)整 switch(num) case 0: TH1=TL1=0 xe8;break; case 1: TH1=TL1=0 xf4;break; case 2: TH1=TL1=0 xfa;break; case 3: TH1=TL1=0 xfd;break; bot=0

17、; /清波特率標(biāo)志位 雙機(jī)串行通信從機(jī)程序源代碼:/*程序名稱:雙機(jī)串行通信波特率可調(diào)從機(jī)C語言程序從機(jī)功能:主函數(shù)顯示緩沖區(qū)數(shù)據(jù)。中斷子函數(shù)接收主機(jī)發(fā)送的顯示代碼,同時(shí)判斷是否是波特率按鍵代碼,若是則進(jìn)行調(diào)整。簡要說明:P1口接4個(gè)數(shù)碼管位選端,P2口接段選端,數(shù)碼管采用共陰極接法。編 寫:邢志杰時(shí) 間:2015年07月02日最后修改:2015年07月03日*/*include *define uint unsigned int*define uchar unsigned charint i=1;uchar val=3,16,16,16,va; ucharcodetable=0 x3f,0

18、x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39, 0 x5e,0 x79,0 x71,0;/0F共陰極數(shù)碼管顯示段碼,0為全部熄. v滅段碼void delay(uint x) /延時(shí)uchar t; while(x-)for(t=0;t110;t+);void ser() interrupt 4 /無返回值,函數(shù)名ser,關(guān)鍵字,中斷號(hào)4 RI=0; va=SBUF;vali=va;switch(va) /判斷是否需進(jìn)行波特率調(diào)整case 0: TH1=TL1=0 xe8; val0=va;val1=

19、val2=val3=16;i=3;break;case 1: TH1=TL1=0 xf4;val0=va;val1=val2=val3=16;i=3; break;case 2: TH1=TL1=0 xfa; val0=va;val1=val2=val3=16;i=3; break;case 3: TH1=TL1=0 xfd; val0=va;val1=val2=val3=16;i=3; break;default:break;i+;if(i=4) i=1;. vvoid main() TMOD=0 x23; /設(shè)置定時(shí)器1為工作方式2TH1=0 xfd; /裝初值設(shè)置波特率TL1=0 xfd; TR1=1; /打開定時(shí)器1 SCON=0 x50; /8

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論