proteus中使用虚拟串口实现单片机和上位机通讯

祝大家身体健康哈,肺炎愈来愈多,希望看到这篇文章的旁友都能健健康康!

今天写一下proteus里如何使用虚拟串口仿真单片机和上位机通讯,所需要的软件有:(1)Virtual Serial Port Driver Pro(Pro不Pro都行);(2)keil 4/5;(3)Proteus 8 Professional;(4)猫猫串口网络调试助手。这些软件网络上都有,但是还是希望大家尽可能支持正版软件。

首先配置虚拟串口,打开Virtual Serial Port Driver Pro,我们会发现有以下界面,第一步先选择串口名称,因为我的电脑com1,com2,有时候会被占用,所以我选择了com3和com4作为虚拟串口;第二步,选择完成后,点击右下角add virtual pair即可,随后会出现第三步所示的两个串口。
proteus中使用虚拟串口实现单片机和上位机通讯_第1张图片

检验方法也很简单,方案一,打开电脑里的设备管理器,会发现多出来两个串口;方案二,打开两个猫猫调试助手,一个选择com3,一个选择com4,使用相同的波特率,在一个窗口发送另一个可以成功接收即可。

完成串口配置后,第二步就是画原理图,我画的原理图是郭天祥的TX-1C开发板,AT89C51,原理图如下(有部分bug,但是在文件中已经修改,欢迎继续指正),下载链接:https://download.csdn.net/download/toyjis/12123752 亲测可用!!!!!
proteus中使用虚拟串口实现单片机和上位机通讯_第2张图片

第三步就是代码,代码实现了数据的收发和单片机与上位机之间的通讯(注释没写,想了解的旁友可以看一下郭天祥《新概念51单片机教程》第137页),代码写在keil里,在keil中选择编译时生成hex文件。

#include 
#define uchar unsigned char
#define uint unsigned int
unsigned char flag,a,i;
uchar code table[]="I get";
void xvnicuankou_init()
{
 TMOD=0x20;
 TH1=0xfd;
 TL1=0xfd;
 TR1=1;
 REN=1;
 SM0=0;
 SM1=1;
 EA=1;
 ES=1;
}
void main()
{
 xvnicuankou_init();
 while(1)
 {
  if(flag==1)
  {
   ES=0;
   for(i=0;i<6;i++)
   {
    SBUF=table[i];
    while(!TI);
    TI=0;
   }
   SBUF=a;
   while(!TI);
   TI=0;
   ES=1;
   flag=0;
  }
 }
}
void ser() interrupt 4
{
 RI=0;
 a=SBUF;
 flag=1;
}

第四步,将hex文件导入proteus的仿真里,具体方法右击左击原理图的C51芯片,在program file里找到hex文件的位置。
开始仿真,同时打开猫猫串口调试助手,选择9600bps,com3,在发送栏中输入任意字符,会有单片机返回 “I get ” 的现象。
proteus中使用虚拟串口实现单片机和上位机通讯_第3张图片

你可能感兴趣的:(proteus中使用虚拟串口实现单片机和上位机通讯)