作者相关信息
github主页 | https://github.com/snqx-lqh |
---|---|
作者 VX | Qinghua_Li7 |
VX公众号 | 少年潜行 |
📖 欢迎交流 如果对你有帮助,希望可以帮我点个赞👍和收藏,谢谢
软件下载链接
仿真软件版本:Proteus8.9
下载链接:
链接:https://pan.baidu.com/s/1kkgFmRBlh268m_ESl83weg 提取码:9bde 复制这段内容后打开百度网盘手机App,操作更方便哦
虚拟串口工具VSPD
链接:https://pan.baidu.com/s/1uQ5f_6TjwxREZCwp7Pk99A?pwd=6rmk 提取码:6rmk 复制这段内容后打开百度网盘手机App,操作更方便哦
本文的原工程我也放在了CSDN下载,但是我觉得可能用不上,因为我的全部内容都在博客中叙述了,应该比较容易自己复现。
虚拟串口安装和使用
安装步骤
1、双击安装应用程序按钮。
2、只能选English
3、直接Next
4 、选择同意
5、选择安装路径,不要在C盘即可
6、直接Next
7、取消全部勾选,然后NEXT
8、点击install下载
9、不要勾选,直接关闭
10、将安装包中Crack的文件夹中的内容复制
11、将其粘贴到安装目录下,直接
12、直接替换文件中目标,至此安装完毕。
配置虚拟串口对
1、打开软件,可以看到当前系统已占用的端口,1处是物理端口,就是实际拥有的端口,40和41就是我创建的虚拟串口对,你往串口40发东西,串口41能收到,往串口41发东西,串口40能收到。
2、我们新创建一个串口对,比如使用20和21配对,记得,一定选择未使用的端口,点击添加端口即可。
3、创建完成后,左边会有一对新的串口对
4、然后你就可以在系统的设备管理器也能找到这两个端口了。有的时候在上面显示,有的时候在下面,不管了,反正有。
5、如果要删除的话,选中串口对,点击删除即可。
虚拟串口使用测试
串口上位机相互发送
打开两个正点原子的XCOM,也可以是其他的上位机测试软件,然后设置好波特率什么的,一个选择刚刚设置的串口20,一个选择刚刚设置的串口21。
然后就能发现左边发送的右边能接到,右边发送的左边能接到。
Proteus仿真
首先我们先绘制一个51单片机带上串口的电路图。
重点是COMPIM这个元器件的配置,还有注意连线,P30接RXD,P31接TXD。然后我们右键选中编辑这个元器件。也可以直接双击打开。
在编辑界面我们输入这个串口的设备信息,主要是他代表的串口号,有可能下拉框没有你能选的,这时候你就需要自己输入了。比如我的COM20就没有,是我自己输的,然后其他配置根据实际情况来,什么停止位呀啥的。
然后设置完成后点击右上角的OK。
我们写一个测试程序放在单片机中,测试程序如下
#include "reg52.h"
#define u8 unsigned char
#define u16 unsigned int
sbit LED = P2^0;
void UartInit(void) //9600bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x20; //设置定时器模式
TL1 = 0xFD; //设置定时初始值
TH1 = 0xFD; //设置定时重载值
ET1 = 0; //禁止定时器中断
TR1 = 1; //定时器1开始计时
ES = 1; //打开串口中断
EA = 1; //打开全部中断
}
void SendBuffLen(u8 *str,u8 len)
{
while(len != 0)
{
SBUF = *str;
while(!TI);
TI = 0;
str++;
len --;
}
}
char str[] = "hello world\r\n";
int main()
{
UartInit();
SendBuffLen(str,sizeof(str));
while(1)
{
}
}
void UartRoutine(void) interrupt 4
{
u8 res;
if(RI)
{
res = SBUF;
if(res == 0x01)
{
LED = 0;
SendBuffLen("hello world\r\n",sizeof("hello world\r\n"));
}else
{
LED = 1;
SendBuffLen("中文字符测试\r\n",sizeof("中文字符测试\r\n"));
}
RI = 0;
}
}
将代码通过Keil编译后,生成HEX文件,双击单片机后插入文件,同时记得,代码配置的单片机使用的是11.0592MHz的时候。
然后打开一个串口调试助手,选择COM21,因为仿真中用的COM20
运行仿真,一开始单片机会发送一个Helloworld。
发送1个01,使用HEX模式,会发现单片机会反一个helloworld,同时LED被点亮,这是代码逻辑,就不细讲了,主要是验证串口可以收发。
发送1个02,使用HEX模式,会发现单片机会反一个中文字符测试,同时LED被熄灭,这是代码逻辑,就不细讲了,主要是验证串口可以收发。