返回顶部

【51单片机系列】proteus仿真单片机的串口通信

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

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

proteus仿真电路图如下:

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发出。

COMPIM属性设置

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

虚拟端口驱动界面

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

串口调试助手界面

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

/*
	实现功能:串口通信,proteus仿真单片机与串口通信
		接收PC机数据
		
	[2024-01-16] zoya
*/
#include <reg52.h>

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;
	}
}

仿真结果:

proteus仿真单片机与PC通信

posted @ 2024-01-16 09:54  Zoya23  阅读(146)  评论(0编辑  收藏  举报