電子與信息工程學院實驗報告
姓 名: | 張周靜
| 學號:
| 2014022063
| 班級: | 電子14級2班
| 課程名稱:
| 單片機原理與應用實驗
| 實驗時間:
| 2016.11.9
| 項目名稱:
| 雙機通信(串口)
|
一、實驗目的
1.了解單片機串行口的內部結構及工作原理。
2.理解串行雙機通信的原理。
3.掌握單片機串行通信C51程序的設計、仿真與調試。
二、實驗設備
PC機 一套
三、實驗內容
1. 硬件連接 電路圖如圖5所示,甲機和乙機的串行口RXD和TXD互相連接,甲機的P1口接有按鍵K1~K8,P2口接有LED燈D9~D16,乙機的P1口接有按鍵K9~K16,P2口接有LED燈D1~D8。
圖片1.png (94.66 KB, 下載次數: 55)
下載附件
2018-3-20 17:44 上傳
圖1 單片機方式1雙機通信的連接 2. 實現功能 編程實現甲機的K1~K8可以控制乙機的D1~D8,同時乙機的K9~K16能夠控制甲機的D9~D16。
四、實驗步驟 1、編程實現甲機的K1~K8控制乙機的D1~D8。
甲機程序代碼:
- #include<reg51.h>
- void main(void)
- {
- unsigned char temp = 0;
- TMOD = 0x22; //設置定時器T1為方式2
- TH1 = 0xfd;
- TH0 = 0xfd;
- SCON = 0x50; //串口方式1發送:SM1SM0=10,且REN = 0所以不發送
- PCON = 0x00; //串口波特率不倍增
- TR1 = 1; //啟動T1定時器
- TR0 = 1;
- P1 = 0xff; //設置P1為輸入,端口初始化。
- TI = 1;
- //SBUF = temp;
- while(1)
- {
- while(TI == 0); //如果TI == 0 ,表示未發送完,等待發送完畢
- TI = 0; //已經發送完畢,則將TI清0
- temp = P1; //讀入P1口開關的狀態數據
- SBUF = temp; //數據送串行口發送
- //乙級接收
-
- while(RI == 0);//若RI == 0,則表示沒有接到數據,等待
- RI = 0; //接收收據后進行清0
- temp = SBUF; //讀取數據存入temp中
- P2 = temp;
- }
- }
復制代碼
乙機程序代碼:
- #include<reg51.h>
- void main(void)
- {
- unsigned char temp = 0;
- TMOD = 0x22; //設置定時器T1為方式2
- TH1 = 0xfd; TL1 = 0xfd;
- TH0 = 0xfd; TL0 = 0xfd;
- SCON = 0x50; //設置串口為方式1接收,REN = 1
- PCON = 0x00; //SMOD = 0;,波特率不加倍
- TR1 = 1; //開啟定時器T1
- TR0 = 1;
- TI = 1;
- //SBUF = temp;
- while(1)
- {
- while(RI == 0);//若RI == 0,則表示沒有接到數據,等待
- RI = 0; //接收收據后進行清0
- temp = SBUF; //讀取數據存入temp中
- P2 = temp;
-
- while(TI == 0); //如果TI == 0 ,表示未發送完,等待發送完畢
- TI = 0; //已經發送完畢,則將TI清0
- temp = P1; //讀入P1口開關的狀態數據
- SBUF = temp; //數據送串行口發送
- }
- }
復制代碼
Protues仿真圖:
圖片2.png (29.79 KB, 下載次數: 47)
下載附件
2018-3-20 17:44 上傳
五、實驗總結
通過本次實驗,讓我對單片機的串行口的內部結構有了更加深入的學習和理解,知道了單片機不僅可以獨立使用還能與其他單片機進行互聯,通過這種方式可以增強單片機的功能,在以后的單片機使用上有了更多的選擇。
完整的Word格式文檔51黑下載地址:
雙機通信(串口).doc
(453 KB, 下載次數: 17)
2018-3-20 17:45 上傳
點擊文件名下載附件
單片機通信 程序+圖 下載積分: 黑幣 -5
|