單片機雙擊串行通信C語言設計報告(含代碼)_第1頁
單片機雙擊串行通信C語言設計報告(含代碼)_第2頁
單片機雙擊串行通信C語言設計報告(含代碼)_第3頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、TL1實現(xiàn)的。3、要求發(fā)送方讀入按鍵值,發(fā)送到接收方,接收方接受數(shù)據并顯示在數(shù)碼管上。4、要求做出實物。、指導教師評語:二、成績指導教師簽名:年月 日目錄第1章 設計目的 錯誤!未定義書簽。第2章 設計要求 錯誤!未定義書簽。第3章 硬件電路設計 錯誤!未定義書簽。3.1系統(tǒng)框圖 13.2STC89C52單片機最小系統(tǒng) 23.3按鍵電路 33.4主電路設計 錯誤!未定義書簽。第4章軟件程序設計 44.1主程序流程圖 44.2鍵盤掃描子程序流程圖 54.3從機主程序流程圖 64.4從機中斷子程序流程圖 74.5程序調試 84.6雙機串行通信源程序 9第5章結論 13參考文獻13第 1 章 設計目

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

4、 故本題目本質上是通過鍵盤掃描得到設定的波特 率,從而載入相應的 T1 計數(shù)初值 TH1 、 TL1 實現(xiàn)的。(3)要求發(fā)送方讀入按鍵值,發(fā)送到接收方,接收方接受數(shù)據并顯示在數(shù) 碼管上。(4)要求做出實物。第 3 章 硬件電路設計3.1 系統(tǒng)框圖圖3-1系統(tǒng)框圖3.2 STC89C5單片機最小系統(tǒng)89C52共有四個八位的并行雙向口,即有 32根輸入輸出口線。各口的每 位均由鎖存器、輸出驅動器和輸入緩沖器組成。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 口是一個漏極開路的8位雙向I/O 口。 作為輸出端口,每個引腳能驅動 8個TTL負載,對端口 P0寫入“

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

7、鎖存器,輸出時沒有條件。輸入緩沖,輸入時有條件,即 需要先將該口設為輸入狀態(tài),先輸出 1 。此外, P1.0 和 P1.1 還可以作為定時器 /計數(shù)器 2 的外部技術輸入( P1.0/T2) 和定時器 /計數(shù)器 2 的觸發(fā)輸入( P1.1/T2EX)。P3 口為準雙向口。可以字節(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ù)據存儲器寫選通。P3.7-RD,

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

9、行輸入口接收信息并把信息顯示在數(shù) 碼管上。3.4 主電路設計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嚴-.a.*r* *nL L ->=-

10、*L iL i嚴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章軟件程序設計設計思路為:主機通過鍵盤掃描程序確認是否有鍵按下, 若有鍵按下則將按 鍵號對應的顯示代碼發(fā)送給從機,并判斷是否是波特率按鍵,若是則進行波特率 調整,若無鍵按下,則繼續(xù)進行鍵盤掃描。從機主程序動態(tài)顯示緩沖區(qū)內的數(shù)據。 中斷子程序接收數(shù)據并判斷是否是波特率按鍵所對應的顯示代碼,若是則進行波特率調整,然后將數(shù)據保存到緩沖區(qū)。初始波特率都為 9600。4.1 主程序流程圖鍵盤連接到甲機的P2 口,通過按鍵掃描

12、確定鍵值,從機與主機通過串行輸 入口 P3.0和串行輸出口 P3.1相連接,實現(xiàn)兩機之間的串行通信。4.2 鍵盤掃描子程序流程圖矩陣式鍵盤掃描的方法常用的有兩種,一種是逐列送 0,依次讀回行;另一種為反轉法。本程序采用前者,程序流程圖如下:4.3 從機主程序流程圖從機主程序動態(tài)顯示緩沖區(qū)的4個數(shù)據。從機的P1 口經鎖存器74HC573連接 數(shù)碼管位碼,P2口經鎖存器74HC573連接數(shù)碼管的段碼。從機與主機通過串行輸 入口 P3.0和串行輸出口 P3.1相連接,利用中斷來接收主機發(fā)來的數(shù)據,并根據 接收的數(shù)據來判斷是否需要進行波特率調整。從機主程序流程圖如下:圖4-3從機主程序流程圖4.4從機

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

14、間: 2015年07月02日最后修改: 2015年07月03日*/#include <AT89x52.h>#define uint unsigned int#define uchar unsigned charint log=0,bot=0; /log,bot 分別是按鍵標志位和波特率調整標志位uchar temp, num;void delay(uint z) / 延時函數(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); / 延時消抖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; / 設置定時器 1 為工作方式 2TH1=0xfd;/ 裝初值設置波特率TL1=0xfd;TR1=1;/ 打開定時器 1S

18、CON=0x40; /8 位異步while(1)keyscan();if(log=1) / 有鍵按下發(fā)送鍵號SBUF=num; / 發(fā)送按鍵號while(!TI);TI=0; / 清發(fā)送標志位log=0; / 清按鍵標志位 if(bot=1) / 是波特率按鍵進行波特率調整 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; / 清波特率標志位雙機串行通信從機程序源代碼:程序名稱:雙機串行通信波特

19、率可調從機 C語言程序從機功能:主函數(shù)顯示緩沖區(qū)數(shù)據。中斷子函數(shù)接收主機發(fā)送的顯示代碼,同時 判斷是否是波特率按鍵代碼,若是則進行調整。簡要說明:P1 口接4個數(shù)碼管位選端,P2 口接段選端,數(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) / 延時uchar t;while(x-)for(t=0;t<110;t+);void ser() interrupt 4 / 無返回值,函數(shù)名 ser ,關鍵字,中斷號 4RI=0;va=SBUF;vali=va;switch(va) / 判斷是否需進行波特率調整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; / 設置定時器 1為工作方式 2TH1=0xfd;/ 裝初值設置波特率TL1=0xfd;TR1=1;/ 打開定時器

溫馨提示

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

評論

0/150

提交評論