Proteus的51单片机串口通信

首先需要在Proteus中将环境建立起来。我这里使用的版本是8.8。
在这里插入图片描述

利用两个元器件就可以建立VIRTUAL TERMINAL和COMPIM的连接。如上图所示,两个VIRTUAL TERMINAL的RXD与COMPIM的RXD与TXD相连。单片机的RXD与TXD与COMPIM的TXD与RXD对应相连接。
VIRTUAL TERMINAL是串口监视仪器,可以通过它将数据线上的符合RS232协议的波形捕捉到,并显示出来,也可以往数据线上发送RS232协议的波形;COMPIM为串口元件,可设置占用计算机上哪一个串口。然后就要设置通信速率以及通信格式了,在属性框中实现设置相同的就行了。这样就可实现数据的通信了。下图为VIRTUAL TERMINAL和COMPIM的设置。

在这里插入图片描述
在这里插入图片描述
接下来要安装虚拟串口。运行虚拟串口程序,配置虚拟串口,这里我增加COM2,COM4两个虚拟串口。

在这里插入图片描述
增加之后,左边会出现COM2,COM4,并且在设备管理器的端口中也可以看到这两个相互连接的端口,此时我们的虚拟串口就配置好了。

在这里插入图片描述
在这里插入图片描述
之后可以打开串口调试助手调试测试串口是否正常工作。打开两个串口调试助手窗口,一个将端口设置为COM2,另一个将端口设置为COM4,相互之间发送信息。信息接收正常,则表示虚拟串口已经可以正常工作了。

在这里插入图片描述
然后将Proteus中晶振的频率与单片机的频率设置为11.0592MHz。

在这里插入图片描述
在这里插入图片描述
在导入相应的hex文件后点击运行仿真。此时Proteus的单片机串口为COM2,设置串口调试助手为COM4。以16进制的发送方式发送AA,则可点亮相应的LED灯。虚拟终端在十六进制的显示下也可接收到。

在这里插入图片描述
在这里插入图片描述

测试代码:/*控制LED的亮灭*/
#include <reg52.h> 
#define uchar unsigned char
uchar a; 
void uart_init();
void main() 

{ 

    uart_init();
    while(1)  { 		
            	 } 

} 

void serial() interrupt 4   // 串口中断服务函数
{ 
    if(RI)
		{
 		   a=SBUF; // 读出接收到的数据
   		   RI=0; // 清零接收标志位 
           P0=a;  //将接受到的数据给P0端口	
		}

} 

void uart_init()

{

	  SCON = 0x50;//配置SM0/1,并允许接收
     TMOD=0x20; // 设置定时器1 为方式2
     TH1=0xfd;  //装入初值 对应波特率9600
     TL1=0xfd; 
    TR1=1; //启动定时器1 
    EA=1; // 打开总中断开关
    ES=1; // 打开串口中断开关 

}

发布了1 篇原创文章 · 获赞 3 · 访问量 171

猜你喜欢

转载自blog.csdn.net/weixin_43728814/article/details/104390838