1.为了解决51单片机学习过程中在Proteus中的串口仿真的问题,需要在Proteus中建立串口仿真的环境(目前Proteus安装在Win7x64虚拟机环境中;
2. 在CSDN中找到VSPD下载地址,在虚拟机中进行VSPD的安装,具体链接地址如下:
虚拟串口软件VSPD下载安装及使用 包含XCOM串口调试软件-CSDN博客
2.1. 安装完成后需要将其中的vspdctl.dll 复制到安装目录下面覆盖原文件
3. win7虚拟机中需要打开控制面板,然后找到设备管理器并打开,找到如图所示的COM端口,可能事COM1与COM2端口,需要修改为COM3与COM4端口,修改方法为选中需要修改的端口,点击鼠标右键,点击属性,在弹出的对话框中点击高级,在另一个弹出的对话框中找到COM3,此时是从COM1修改为COM3,同理将COM2修改为COM4;
此时win7虚拟机中的2个物理端口为COM3和COM4
4. 打开VSPD软件,在First port中选择COM1,Second port中选择 COM2,点击add pair添加,此时在左边virtual ports中显示COM1与COM2
此时设备管理器中的端口显示如下:
5. Proteus中找到COMPIM并添加到工程中,
在添加好的COMPIM添加RXD与TXD连接端口,建立与AT89C52的连接
同时在这个仿真环境中添加虚拟终端用于显示,需要注意虚拟终端的RXD与TXD的端口标记是要反一下的
6. 双击COMPIM对其进行设置,如图所示是根据江协科技的教程示例进行的设置;
双击终端进行设置如下
7. STC-ISP中的设置如下;
8. 江协科技的程序示例如下,串口发送数据66一次;
#include <REGX52.h>void Uart_Init(void) //4800bps@12.000MHz
{PCON |= 0x80; //使能波特率倍速位SMODSCON = 0x50; //8位数据,可变波特率//AUXR &= 0xBF; //定时器时钟12T模式//AUXR &= 0xFE; //串口1选择定时器1为波特率发生器TMOD &= 0x0F; //设置定时器模式TMOD |= 0x20; //设置定时器模式TL1 = 0xF3; //设置定时初始值TH1 = 0xF3; //设置定时重载值ET1 = 0; //禁止定时器中断TR1 = 1; //定时器1开始计时
}void Uart_SendByte(unsigned char Byte)
{SBUF=Byte;while(TI==0);TI=0;
}void main()
{Uart_Init();Uart_SendByte(0x66);while(1){}}
9. 运行仿真后,在Proteus中Debug点击4.virtual Terminal,显示终端窗口和运行结果如下;
10. STC-ISP中显示的运行结果如下:
2024年4月4日更新——
1. 经过反复测试发现,COMPIM与TERMINAL的连接还是需要连接为如下方式:
2. 此时运行仿真并调用 virtual terminal后,鼠标邮件点击黑色terminal区域,如图勾选相应的选项。
3. 在virtual terminal中输入键盘的1转为16进制模式显示31在virtual terminal中显示,同时STC-ISP中会显示接收到31
4. 在STC-ISP的发送缓冲区输入f0,点击发送数据后,virtual terminal显示收到f0,此时为正常收发状态。