一、借助虚拟串口驱动软件模拟PC端串口调试助手软件与Proteus中51单片机相互通信原理
虚拟终端(比如:Proteus中51单片机)的TXD(发送数据)和RXD(接收数据)分别与虚拟串口驱动软件所模拟出其中一个虚拟串口的TXD(发送数据)和RXD(接收数据)一一对应接通后,再与虚拟串口驱动软件所模拟出另外一个虚拟串口的TXD(发送数据)和RXD(接收数据)交叉对应接通来相互发送和接收数据,从而实现相互通信。
二、借助虚拟串口驱动软件模拟PC端串口调试助手软件与Proteus中51单片机相互通信原理图
(3)、下载虚拟通信串口驱动软件,安装完成后的图标,如下所示。
(5)、在虚拟通信串口驱动软件界面点击“添加端口”,左边Virtual Serial Port Driver栏下Virtual port处出现添加两个虚拟通信串口:COM2与COM3。
四、PC端串口调试助手软件与Proteus中51单片机相互通信的单片机C语言程序与Proteus仿真电路图
(1)、PC端串口调试助手软件与Proteus中51单片机相互通信来点亮LED灯的单片机C语言程序
#include
#define uchar unsigned char
#define uint unsigned int
//uchar flag,a,i;
uchar a;//uchar code table[]=” I get “;
void String_Timer2_init()//串口定时器初始化函数
{
TMOD=0x20;//0010 0000定时器工作方式为方式2,8位自动重装。
TH1=0xfd;//初始化计数器高8位:1111 1101
TL1=0xfd;//初始化计数器低8位
TR1=1;//启动定时器1
SM0=0;//设定串口工作方式为方式1(10位异步通信)
SM1=1;//设定串口工作方式
REN=1;//打开串口中断接收允许
EA=1;//打开全局中断
ES=1;//打开串口中断允许位
}voidmain()
{
String_Timer2_init();//串口定时器初始化函数
while(1);//固定循环//{//if(flag==1)//判断检测发送数据标志位变量flag是否为1,若为1则运行以下单片机发送数据缓存寄存器给PC端串口调试助手发送数据。//{//ES=0;//关闭串口中断允许位,阻止进入串口中断服务程序。为什么要设置ES=0于接下来单片机发送数据缓存寄存器给PC端串口调试助手发送数据结束后,TI(即串口发送中断标志位)=1,若ES不设置为0,在TI(即串口发送中断标志位)=1时,会进入串口中断服务程序执行flag=1,又得回来再次判断if(flag==1),从而无法运行下面的程序。//for(i=0;i<7;i++)//循环发送数据个数//{//SBUF=table[i];//将table数组中的数据存入单片机发送数据缓存寄存器//while(!TI);//判断串口发送中断标志位是否为1,若为1则单片机发送数据缓存寄存器给PC端串口调试助手发送数据结束。为什么在此编写while(!TI)于需要把单片机发送数据缓存寄存器保存的数据发送给PC端串口调试助手。//TI=0;//TI(即串口发送中断标志位)=0,表示单片机发送数据缓存寄存器可重新给PC端串口调试助手发送数据。//}//SBUF=a;//表示单片机接收数据缓存寄存器把从串口中断服务程序获取的某数据(用数值变量a表示)赋给单片机发送数据缓存寄存器。为什么于串口定时器初始化函数中REN(串口中断接收允许)=1与ES(串口中断允许位)=1被初始化后,就可以进入串口中断服务程序获取PC端串口调试助手给单片机发送某数据,然后单片机接收数据缓存寄存器接收PC端串口调试助手发来的某数据。//while(!TI);//判断串口发送中断标志位是否为1,若为1则单片机发送数据缓存寄存器给PC端串口调试助手发送数据结束。为什么在此编写while(!TI)于需要把单片机发送数据缓存寄存器保存的数据发送给PC端串口调试助手。//TI=0;//TI(即串口发送中断标志位)=0,表示单片机发送数据缓存寄存器可重新给PC端串口调试助手发送数据。//ES=1;//打开串口中断允许位,允许进入串口中断服务程序。//flag=0;//判断检测发送数据标志位变量flag是否为0,若为0则跳出运行单片机发送数据缓存寄存器给PC端串口调试助手发送数据。//}//}
}void string() interrupt 4//串口中断服务程序(函数)
{
RI=0;//表示单片机接收数据缓存寄存器可重新接收PC端串口调试助手发送数据。
a=SBUF;//表示PC端串口调试助手给单片机接收数据缓存寄存器发送某数据,然后单片机接收数据缓存寄存器接收PC端串口调试助手发来的某数据,并赋给数值变量a。
P2=a;//单片机接收数据缓存寄存器将接受到的数据赋给P2端口//flag=1;//置检测发送数据标志位变量flag为1,运行单片机发送数据缓存寄存器给PC端串口调试助手发送数据。
}
(2)、PC端串口调试助手软件与Proteus中51单片机相互通信来点亮LED灯的Proteus仿真电路图

原文:https://www.cnblogs.com/AChenWeiqiangA/p/13264851.html
相关资源:专业LED灯光动画制作软件(安装后直接用!)_setup安装包-Delphi工具…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!