1.为了解决51单片机学习过程中在Proteus中的串口仿真的问题,需要在Proteus中建立串口仿真的环境(目前Proteus安装在Win7x64虚拟机环境中;
- 在CSDN中找到VSPD下载地址,在虚拟机中进行VSPD的安装,具体链接地址如下:
虚拟串口软件VSPD下载安装及使用 包含XCOM串口调试软件-CSDN博客
2.1. 安装完成后需要将其中的vspdctl.dll 复制到安装目录下面覆盖原文件
- win7虚拟机中需要打开控制面板,然后找到设备管理器并打开,找到如图所示的COM端口,可能事COM1与COM2端口,需要修改为COM3与COM4端口,修改方法为选中需要修改的端口,点击鼠标右键,点击属性,在弹出的对话框中点击高级,在另一个弹出的对话框中找到COM3,此时是从COM1修改为COM3,同理将COM2修改为COM4;
此时win7虚拟机中的2个物理端口为COM3和COM4
- 打开VSPD软件,在First port中选择COM1,Second port中选择 COM2,点击add pair添加,此时在左边virtual ports中显示COM1与COM2
此时设备管理器中的端口显示如下:
- Proteus中找到COMPIM并添加到工程中,
在添加好的COMPIM添加RXD与TXD连接端口,建立与AT89C52的连接
同时在这个仿真环境中添加虚拟终端用于显示,需要注意虚拟终端的RXD与TXD的端口标记是要反一下的
- 双击COMPIM对其进行设置,如图所示是根据江协科技的教程示例进行的设置;
双击终端进行设置如下
- STC-ISP中的设置如下;
- 江协科技的程序示例如下,串口发送数据66一次;
cs
#include <REGX52.h>
void Uart_Init(void) //4800bps@12.000MHz
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 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)
{
}
}
- 运行仿真后,在Proteus中Debug点击4.virtual Terminal,显示终端窗口和运行结果如下;
- STC-ISP中显示的运行结果如下: