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

下載本文檔

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

文檔簡(jiǎn)介

1、探2012 級(jí)單片機(jī)接口課程設(shè)計(jì)探石家莊鐵道大學(xué)四方學(xué)院集中實(shí)踐報(bào)告書課題名稱雙機(jī)串行通信設(shè)計(jì)姓名邢志杰學(xué)號(hào)系、部電氣工程系專業(yè)班級(jí)方1210-4指導(dǎo)教師馬麗2015年7月3日一、設(shè)計(jì)任務(wù)及要求:設(shè)計(jì)任務(wù):雙機(jī)串行通信設(shè)計(jì)設(shè)計(jì)要求:1、 兩片單片機(jī)利用串行口進(jìn)行串行通信:串行通信的波特率可從鍵盤進(jìn)行設(shè)定, 可選的波特率為1200、2400、4800和9600bit/s。串行口工作方式為方式 1的全雙工 串行通信。2、 兩個(gè)單片機(jī)之間進(jìn)行通訊波特率的設(shè)定,最終歸結(jié)到對(duì)定時(shí)計(jì)數(shù)器T1計(jì)數(shù) 初值TH1、TL1進(jìn)行設(shè)定。故本題目本質(zhì)上是通過鍵盤掃描得到設(shè)定的波特率,從 而載入相應(yīng)的T1計(jì)數(shù)初值TH1、

2、TL1實(shí)現(xiàn)的。3、要求發(fā)送方讀入按鍵值,發(fā)送到接收方,接收方接受數(shù)據(jù)并顯示在數(shù)碼管上。4、要求做出實(shí)物。、指導(dǎo)教師評(píng)語(yǔ):二、成績(jī)指導(dǎo)教師簽名:年月 日目錄第1章 設(shè)計(jì)目的 錯(cuò)誤!未定義書簽。第2章 設(shè)計(jì)要求 錯(cuò)誤!未定義書簽。第3章 硬件電路設(shè)計(jì) 錯(cuò)誤!未定義書簽。3.1系統(tǒng)框圖 13.2STC89C52單片機(jī)最小系統(tǒng) 23.3按鍵電路 33.4主電路設(shè)計(jì) 錯(cuò)誤!未定義書簽。第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第 1 章 設(shè)計(jì)目

3、的1.1 設(shè)計(jì)目的(1)掌握單片機(jī)實(shí)際系統(tǒng)的開發(fā)步驟。(2)了解串行通信的原理;了解數(shù)碼管顯示的工作原理;了解鍵盤掃描的 工作原理; 對(duì)雙機(jī)串行通信軟件編程、 調(diào)試、相關(guān)硬件設(shè)備的使用技能等方面得 到真正的實(shí)踐機(jī)會(huì),把軟硬件結(jié)合,克服其中的種種問題,提高編程能力。第 2 章 設(shè)計(jì)要求2.1 設(shè)計(jì)要求(1)兩片單片機(jī)利用串行口進(jìn)行串行通信:串行通信的波特率可從鍵盤進(jìn)行設(shè)定,可選的波特率為 1200、2400、4800和9600bit/s。串行口工作方式為方 式 1 的全雙工串行通信。(2) 兩個(gè)單片機(jī)之間進(jìn)行通訊波特率的設(shè)定,最終歸結(jié)到對(duì)定時(shí)計(jì)數(shù)器 T1 計(jì)數(shù)初值 TH1 、 TL1 進(jìn)行設(shè)定。

4、 故本題目本質(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)框圖圖3-1系統(tǒng)框圖3.2 STC89C5單片機(jī)最小系統(tǒng)89C52共有四個(gè)八位的并行雙向口,即有 32根輸入輸出口線。各口的每 位均由鎖存器、輸出驅(qū)動(dòng)器和輸入緩沖器組成。VCC(40引腳):電源電壓VSS( 20引腳):接地LSSTALLPC O. ADO m i Am3918PTTAL3PQ 2 AZ>Z37J JLD53 B3 2PS 5 ADS

5、J* _EtZTu - - I '-HSTC9C52M_ L. ADO21q2 sAJJ1Oj *P 2 3 AI>1124-LLE肥 4 9172 5F2 5 AD13丄芒列!UFZ - ADI ?LP LQ T2P3 Q&W77Pl IPJ l. TXD P3 2.-TKTD4Fl J. INTI-4- 1 44 THidPLJ5MJ5.T113OL.SltfaL 7PJ KRD17圖3-2 STC89C52引腳圖P0端口(P0.0P0.7, 3932引腳):P0 口是一個(gè)漏極開路的8位雙向I/O 口。 作為輸出端口,每個(gè)引腳能驅(qū)動(dòng) 8個(gè)TTL負(fù)載,對(duì)端口 P0寫入“

6、 1時(shí),可以作 為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0 口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。此時(shí),P0 口內(nèi)部上拉電阻有效。在Flash ROM編程時(shí), P0端口接收指令字節(jié);而在校驗(yàn)程序時(shí),則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接 上拉電阻。P1 端口( P1.0P1.7,18 引腳): P1 口是一個(gè)帶內(nèi)部上拉電阻的 8 位雙向I/O 口。P1的輸出緩沖器可驅(qū)動(dòng)(吸收或者輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫入 1 時(shí),通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。 P1 口作輸入口使用時(shí), 因?yàn)橛袃?nèi)部上拉電阻, 那些被外部拉低的引腳會(huì)輸出一個(gè)電 流。 P1 口特點(diǎn)是輸出

7、鎖存器,輸出時(shí)沒有條件。輸入緩沖,輸入時(shí)有條件,即 需要先將該口設(shè)為輸入狀態(tài),先輸出 1 。此外, P1.0 和 P1.1 還可以作為定時(shí)器 /計(jì)數(shù)器 2 的外部技術(shù)輸入( P1.0/T2) 和定時(shí)器 /計(jì)數(shù)器 2 的觸發(fā)輸入( P1.1/T2EX)。P3 口為準(zhǔn)雙向口??梢宰止?jié)訪問,也可以位訪問。P3.0-RXD,串行輸入口。P3.1-TXD, 串行輸出口。P3.2-INT0,外部中斷0的請(qǐng)求。P3.3-INT1 ,外部中斷 1 的請(qǐng)求。P3.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,

8、外部數(shù)據(jù)存儲(chǔ)器讀選通。RST( 9 引腳):復(fù)位輸入。當(dāng)輸入連續(xù)兩個(gè)機(jī)器周期以上高電平時(shí)為有效, 用來(lái)完成單片機(jī)單片機(jī)的復(fù)位初始化操作。ALE ( 30 引腳):地址鎖存控制信號(hào)( ALE )是訪問外部程序存儲(chǔ)器時(shí),鎖 存低 8 位地址的輸出脈沖。XTAL1 ( 19 引腳):振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。XTAL2( 18 引腳):振蕩器反相放大器的輸入端。 STC89C52 引腳圖如圖 3-2 所示。3.3 按鍵電路II II ¥>JOO圖3-3按鍵電路圖本設(shè)計(jì)按鍵采用矩陣鍵盤,鍵盤連接主機(jī)的P2 口,主機(jī)從矩陣鍵盤接收信息,通過串行輸出口輸出到從機(jī),從機(jī)從串

9、行輸入口接收信息并把信息顯示在數(shù) 碼管上。3.4 主電路設(shè)計(jì)TAL1XTAL2RSTALEEAP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD-S3嚴(yán)-.a.*r* *nL L ->=-

10、*L iL i嚴(yán)u.寸L rii *it. * L * L 1R210k312XTAL1P0.0/AD0XTAL2P0.1/AD1P0.2/AD2P0.3/AD3RSTP0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7ALEP2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12EAP2.5/A13P1 0/T2P2.6/A14P2.7/A15P3 0/RXDP1.1/T2EXP1.2P3.1/TXDP3.2/INT0P1.3P3.3/INT1P1.4P3.4/T0P1.5P3.5/T1P1.6P3.6/WRP1.7P3.7/RD二3776 r F2123d:

11、dd5-4;e27SFS* 一107-91119187615FO!74HC5 7 3DOD1D2D3D4D5D6D7QOQ1Q2Q3Q4Q5Q6Q774HC573圖3-4主電路圖第4章軟件程序設(shè)計(jì)設(shè)計(jì)思路為:主機(jī)通過鍵盤掃描程序確認(rèn)是否有鍵按下, 若有鍵按下則將按 鍵號(hào)對(duì)應(yīng)的顯示代碼發(fā)送給從機(jī),并判斷是否是波特率按鍵,若是則進(jìn)行波特率 調(diào)整,若無(wú)鍵按下,則繼續(xù)進(jìn)行鍵盤掃描。從機(jī)主程序動(dòng)態(tài)顯示緩沖區(qū)內(nèi)的數(shù)據(jù)。 中斷子程序接收數(shù)據(jù)并判斷是否是波特率按鍵所對(duì)應(yīng)的顯示代碼,若是則進(jìn)行波特率調(diào)整,然后將數(shù)據(jù)保存到緩沖區(qū)。初始波特率都為 9600。4.1 主程序流程圖鍵盤連接到甲機(jī)的P2 口,通過按鍵掃描

12、確定鍵值,從機(jī)與主機(jī)通過串行輸 入口 P3.0和串行輸出口 P3.1相連接,實(shí)現(xiàn)兩機(jī)之間的串行通信。4.2 鍵盤掃描子程序流程圖矩陣式鍵盤掃描的方法常用的有兩種,一種是逐列送 0,依次讀回行;另一種為反轉(zhuǎn)法。本程序采用前者,程序流程圖如下: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相連接,利用中斷來(lái)接收主機(jī)發(fā)來(lái)的數(shù)據(jù),并根據(jù) 接收的數(shù)據(jù)來(lái)判斷是否需要進(jìn)行波特率調(diào)整。從機(jī)主程序流程圖如下:圖4-3從機(jī)主程序流程圖4.4從機(jī)

13、中斷子程序流程圖圖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語(yǔ)言)主機(jī)功能: 通過鍵盤掃描得到鍵號(hào)并發(fā)送, 同時(shí)判斷是否是波特率按鍵, 若是則 調(diào)整波特率。簡(jiǎn)要說(shuō)明:主機(jī)P2口接4*4矩陣式鍵盤,高4位行,低4位列。 其中04號(hào)按鍵分別代表 4種不同波特率( 1200、2400、4800、9600)。 初始波特率 9600。編 寫:邢志杰 (QQ824997141)時(shí)

14、間: 2015年07月02日最后修改: 2015年07月03日*/#include <AT89x52.h>#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;x>0;x-) for(y=110;y>0;y-);/* 按鍵掃描子函數(shù) */void keyscan()P2=0xf0;temp=P2; temp&=0x

15、f0;if(temp!=0xf0)delay(5); / 延時(shí)消抖P2=0xf0;/ 二次讀回temp=P2;temp&=0xf0; if(temp!=0xf0)log=1; / 有按鍵P2=0xfe;temp=P2;if(temp!=0xfe)switch(temp)case 0xee: num=0;bot=1;break;/bot=1 表示是波特率按鍵 case 0xde: num=4;break;case 0xbe: num=8;break;case 0x7e: num=12;break;P2=0xfd;temp=P2;if(temp!=0xfd)switch(temp)case

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

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

18、CON=0x40; /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)志位 if(bot=1) / 是波特率按鍵進(jìn)行波特率調(diào)整 switch(num)case 0: TH1=TL1=0xe8;break;case 1: TH1=TL1=0xf4;break;case 2: TH1=TL1=0xfa;break;case 3: TH1=TL1=0xfd;break;bot=0; / 清波特率標(biāo)志位雙機(jī)串行通信從機(jī)程序源代碼:程序名稱:雙機(jī)串行通信波特

19、率可調(diào)從機(jī) C語(yǔ)言程序從機(jī)功能:主函數(shù)顯示緩沖區(qū)數(shù)據(jù)。中斷子函數(shù)接收主機(jī)發(fā)送的顯示代碼,同時(shí) 判斷是否是波特率按鍵代碼,若是則進(jìn)行調(diào)整。簡(jiǎn)要說(shuō)明:P1 口接4個(gè)數(shù)碼管位選端,P2 口接段選端,數(shù)碼管采用共陰極接法。編寫:邢志杰時(shí)間: 2015年07月02日最后修改: 2015年07月03日*/#include <AT89x52.h>#define uint unsigned int#define uchar unsigned charint i=1;uchar val=3,16,16,16,va;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0

20、x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39, 0x5e,0x79,0x71,0; /0F 共陰極數(shù)碼管顯示段碼, 0為全部熄滅段 碼void delay(uint x) / 延時(shí)uchar t;while(x-)for(t=0;t<110;t+);void ser() interrupt 4 / 無(wú)返回值,函數(shù)名 ser ,關(guān)鍵字,中斷號(hào) 4RI=0;va=SBUF;vali=va;switch(va) / 判斷是否需進(jìn)行波特率調(diào)整case 0: TH1=TL1=0xe8;val0=va;val1=val2=val3=16;i=3;break;case 1: TH1=TL1=0xf4;val0=va;val1=val2=val3=16;i=3;break;case 2: TH1=TL1=0xfa;val0=va;val1=val2=val3=16;i=3;break;case 3: TH1=TL1=0xfd;val0=va;val1=val2=val3=16;i=3;break;default:break;i+;if(i=4)i=1;void main()TMOD=0x23; / 設(shè)置定時(shí)器 1為工作方式 2TH1=0xfd;/ 裝初值設(shè)置波特率TL1=0xfd;TR1=1;/ 打開定時(shí)器

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論