我的Proteus版本是8.13,最近在学习使用proteus仿真串口通信时出现一点问题,慢慢解决完成了串口仿真。

问题:

1. COMPIM和Virtual terminal这两个器件怎么用

2. 单片机只能发送不能接收

Virtual terminal不能像串口助手一样给单片机发数据,只能显示单片机发送的数据或者显示串口助手发来的数据。总之就是,只能显示。

COMPIM用于你需要使用串口助手和单片机通信的时候。

先来看一下Virtual terminal。

图:Virtual terminal不在元件库里,要到虚拟仪器里面去找

图:连线图

双击配置Virtual terminal:如下图,我的波特率设置为4800,点ok

图:Virtual terminal 配置

我在程序中写的是上电后单片机发送AA

图:Keil程序

Proteus运行仿真,如果没跳出Virtual terminal的窗口,手动去debug里打开

图:显示单片机发送了AA

如果你的Virtual Terminal界面什么都没显示,右键打开16进制显示

停止仿真,重新运行一次

出现上图,没关系,停止仿真,再运行一次,就正常了

 


 

由于Virtual Terminal只能用来显示,我们实现串口发送和接收的仿真还是要使用COMPIM

先设置一对虚拟串口,我使用的是VSPD,设置了COM1和COM2

VSPD下载参考:

串口模拟器VSPD(附VSPD安装包)-CSDN博客

你可以在设备管理器里查看虚拟串口COM1和COM2是否设置成功

在元件库里搜索“COMPIM”,放置连线

图:连线图

双击配置COMPIM,端口为COM1,波特率为4800

图:配置COMPIM

打开串口助手,我使用的是XCOM。配置串口为COM2,波特率为4800,打开串口

图:串口助手的配置

在Proteus运行仿真后,我们发现串口助手接收区接收到AA,说明单片机发送没问题

图:单片机发送测试

我的程序中写了中断函数来作为接收,当串口助手向单片机发送一个数据时,单片机会回传这个数据,也就是在串口助手的接收区能看见我发给单片机的数据

图:Keil中断程序

但当我在串口助手向单片机发送“FF”时并没有收到单片机的回传。我使用Virtual terminal发现COMPIM确实给单片机发送了“FF”。如下图。名为Recieve的Virtual terminal检测到我发送的数据“FF”。所以应该是Proteus单片机的模型有问题。

在Proteus8.13中,MCS8051.DLL这个文件需要替换。

下载替换文件,解压

替换文件百度网盘链接: https://pan.baidu.com/s/12hCPWBBYO-xaPRw1nGzjUw?pwd=wmyy

提取码: wmyy

找到D:\Proteus8.13\Proteus 8 Professional\DATA\MODELS\MCS8051.DLL,将其替换掉

替换后,运行Proteus仿真,得到回传数据“FF”。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐