一、使用51單片機的串口與Proteus的Virtual Terminal(虛擬終端)進行一個簡單的串口通信,實現的功能是讓Virtual Terminal通過串口 向單片機發送數據,單片機接收到數據后經串口將數據發送到Virtual Terminal上顯示。
1、Virtual Terminal
3.png (7.14 KB, 下載次數: 60)
下載附件
Virtual Terminal
2023-8-21 15:53 上傳
4.png (28.07 KB, 下載次數: 58)
下載附件
Virtual Terminal參數配置
2023-8-21 15:56 上傳
在使用前根據程序設計配置Virtual Terminal的參數,本實驗使用的是11.0592MHz的晶振,波特率為9600不加倍,串口工作于方式1,8位數據位1位停止位。
2、仿真電路圖
5.png (41.24 KB, 下載次數: 55)
下載附件
UART通信仿真電路圖
2023-8-21 16:02 上傳
3、程序
這里給大家分析一個51單片機的定時器及中斷配置圖(這個是在論壇上找的)
單片機定時器及中斷.png (11.85 KB, 下載次數: 47)
下載附件
2023-8-21 17:19 上傳
- #include <reg52.h>
- #include <stdio.h>
- #include <string.h> //stdio.h,string.h用于printf函數原型
- void delay(unsigned int z);
- void uart_init(void);//串行口初始化
-
- void main()
- {
- int a = 6,d = 15;
- char b = 'A',c[] = "abcde";
- uart_init();
- while(1)
- {
- printf("a = %d b = %c c = %s d = %x\n",a,b,c,d);
- printf("hello word!\n");
- printf("你好世界\n");
- delay(1000);
- }
- }
-
- void uart_init(void)
- {
- TMOD=0x20; //即0010 0000,定時器/計數器1,工作方式2
- TH1=0xfd; //設置波特率為9600
- TL1=0xfd;
- TR1=1; //啟動定時器/計數器1
-
- SCON=0x50; //SM0=0;SM1=1;REN=1;0101 0000.串口工作方式1,允許串行控制
- PCON=0x00; //設置SMOD=0
- IE=0x90; //EA=1;ES=1;CPU允許中斷,串行允許中斷
-
- TI=1; //中斷請求標志位,直接使用printf必須加入此句才能實現發送
- }
- void delay(unsigned int z)
- {
- unsigned int x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
復制代碼 4、仿真結果
6.png (10.72 KB, 下載次數: 54)
下載附件
仿真結果輸出
2023-8-21 16:21 上傳
- 溫馨提示:如果仿真出現如下圖所示的亂碼現象,將51單片機的晶振設置為11.0592MHz
1.png (8.81 KB, 下載次數: 54)
下載附件
2023-8-21 16:30 上傳
7.png (31.07 KB, 下載次數: 56)
下載附件
2023-8-21 16:30 上傳
二、利用VSPD軟件虛擬一對串口,然后在PC中使用串口助手和Proteus中的MCU進行通信。
1、打開安裝好的VSPD軟件,設置好需要創建的串口對的端口號(這里使用COM3和COM4作為示例),然后點擊add virtual pair按鈕;
8.png (118.7 KB, 下載次數: 50)
下載附件
2023-8-21 16:47 上傳
9.png (108.06 KB, 下載次數: 51)
下載附件
2023-8-21 16:47 上傳
2、設置DB9串口參數和串口助手參數
這里Component Reference和Component Value不是必填選項,下面的端口選擇我們之前創建的虛擬串口對COM3和COM4中的其中一個,演示時我這邊使用(串口3,波特率9600,8位數據位,1位停止位,無校驗,無流控)的參數條件。在串口助手中使用(串口4,波特率9600,8位數據位,1位停止位,無校驗,無流控)。
10.png (408.47 KB, 下載次數: 58)
下載附件
DB9串口定義和接線
2023-8-21 16:58 上傳
12.png (36.84 KB, 下載次數: 54)
下載附件
2023-8-21 17:02 上傳
11.png (73.75 KB, 下載次數: 54)
下載附件
2023-8-21 17:00 上傳
3、仿真電路圖
13.png (12.07 KB, 下載次數: 59)
下載附件
2023-8-21 17:02 上傳
需要注意的是Proteus中的DB9為母頭接口,而電腦PC的為公頭接口,所以連接方式,需要RXD接DB9的RXD,TXD接DB9的TXD。
4、仿真結果
14.png (100.69 KB, 下載次數: 52)
下載附件
2023-8-21 17:16 上傳
附件給大家打包了,里面包括了proteus仿真+程序+VSPD虛擬串口軟件+串口助手軟件
UART_proteus仿真 程序 VSPD軟件 串口助手軟件.zip
(7.28 MB, 下載次數: 61)
2023-8-21 17:25 上傳
點擊文件名下載附件
UART_proteus仿真+程序+VSPD軟件+串口助手軟件 下載積分: 黑幣 -5
|