利用MATLAB實現PC機和單片機串口通信實例的電路原理圖:
07010621261955.jpg (81.81 KB, 下載次數: 41)
下載附件
2018-3-9 22:29 上傳
PC將數字(0,1,2,3......255,轉換為16進制)傳給下位機。
下位機收到后回傳這個數字,PC機接收到回傳數據后顯示出來。
如果PC發送和接收的數據相同,顯示通信正常,否則通信不正常。
通信程序發送以16進制數00開始,以16進制數FF表示通信結束。
利用MATLAB實現PC與單片機串口通信任務文件包:
0.png (46.32 KB, 下載次數: 38)
下載附件
2018-3-9 22:29 上傳
利用Keil C51實現單片機與PC串口通信任務單片機源程序如下:
- /*PC機通過串行口將數字(1,2,3...255)傳給單片機,單片機收到后回傳這個數字,
- 并存入自己內部一段連續的空間中,PC機接收到回傳數據后顯示出來,直至傳送完結束符255*/
- # pragma db code
- # include<reg51.h>
- # define uchar unsigned char
- void rece(void);
- void init(void);
- uchar re[17];
- /*主程序*/
- void main(void)
- {
- uchar temp;
- init();
- do{
- while(RI==0);
- temp=SBUF;
- if(temp==0x00)
- {rece();}
- else break;
- }while(1);
- }
- /*串口初始化*/
- void init(void)
- {
- TMOD=0x20; //定時器1--方式2
- PCON=0x80; //電源控制
- SCON=0x50; //方式1
- TL1=0xFa;
- TH1=0xFa; //22.1184MHZ晶振,波特率為4800 0xf3 9600 0xfa 19200 0xfd
- TR1=1; //啟動定時
- }
- /*接收返回數據*/
- void rece(void)
- {
- char i;
- i=0;
- do{while(RI==0);
- re[i]=SBUF;
- RI=0;
- SBUF=re[i];
- while(TI==0);
- TI=0;
- i++;
- }while(re[i-1]!=255);
- }
復制代碼
0.png (51.08 KB, 下載次數: 40)
下載附件
2018-3-9 22:30 上傳
所有資料51hei提供下載:
03.PC機與單片機串口通信實例1.rar
(69.84 KB, 下載次數: 90)
2018-3-9 15:24 上傳
點擊文件名下載附件
通信 下載積分: 黑幣 -5
|