本文参考:https://zhuanlan.zhihu.com/p/425809292。

在proteus之外使用串口软件和单片机通信。通过在proteus设计一个单片机接收PC发送的数据,并将接收的数据发送出去,利用软件【Configure Virtual Serial Port Driver】创建一对虚拟串口,利用软件【串口助手】向单片机发送数据。

proteus仿真电路图如下:

COMPIM器件是COM Port Physical Interface Model串口物理端口模型。proteus中的COMPIM是标准的RS-323端口,可直接使用电脑的物理串口通信,即COMPIM是通过电脑的物理串口进行实际通信的。

也就是说proteus仿真利用COMPIM通过电脑的串口与外界的其它设备进行通信。

需要注意的是COMPIM与单片机的接法:单片机的RXD引脚与COMPIM的RXD引脚连接,单片机的TXD引脚与COMPIM的TXD引脚连接。

设置COMPIM的参数,按照需求设计。如下,设置COM端口号为COM2,波特率为9600bps。要注意单片机的波特率要和各个串口波特率一致;串口选择了COM2表示单片机在COM2逻辑上是相互的,串口上收到的信息,也就是单片机收到的信息,单片机发送的信息就会从COM3发出。

使用软件【Configure Virtual Serial Port Driver】查看或创建当前的端口号,打开软件如下。电脑中只有一个物理端口COM1,可以添加虚拟端口对,点击【Add pair】即可。这时COM2和COM3是相连的,只要在串口助手中监视COM3即可。

打开【串口调试助手】,设置相同的波特率,如下,然后打开串口监视。

编写单片机的代码,单片机接收PC(即串口助手)发送的数据,并将接收到的数据发送出来。编码如下:

/*

实现功能:串口通信,proteus仿真单片机与串口通信

接收PC机数据

[2024-01-16] zoya

*/

#include

typedef unsigned char u8;

typedef unsigned int u16;

#define GPIO_LED P1

void UsartInit()

{

SCON=0x50; // 串口工作方式1,接收数据

TMOD=0x20; // 定时器T1工作方式2

TH1=TL1=0xFD; // 波特率9600bps,不倍增

PCON=0x00;

ES=1; // 打开串口中断允许位

EA=1; // 打开CPU中断允许位

TR1=1; // 启动计数

}

void main()

{

UsartInit();

while(1);

}

void ReceiveDat() interrupt 4

{

u8 tmp;

if(RI)

{

tmp=SBUF;

RI=0;

SBUF=tmp;

while(!TI);

TI=0;

}

}

仿真结果:

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: