51单片机UART通信串口打印信息+proteus仿真+VSPD虚拟串口

        一、使用51单片机的串口与Proteus的Virtual Terminal(虚拟终端)进行一个简单的串口通信,实现的功能是让Virtual Terminal通过串口 向单片机发送数据,单片机接收到数据后经串口将数据发送到Virtual Terminal上显示。

      1、Virtual Terminal


在使用前根据程序设计配置Virtual Terminal的参数,本实验使用的是11.0592MHz的晶振,波特率为9600不加倍,串口工作于方式1,8位数据位1位停止位。

      2、仿真电路图

    3、程序
    这里给大家分析一个51单片机的定时器及中断配置图(这个是在论坛上找的)

#include <reg52.h>
#include <stdio.h>
#include <string.h>    //stdio.h,string.h用于printf函数原型

void delay(unsigned int z);
void uart_init(void);  //串行口初始化

void main()
{
    int a = 6,d = 15;
    char b = 'A',c[] = "abcde";
    uart_init();
    while(1)
    {
        printf("a = %d b = %c c = %s d = %x\n",a,b,c,d);
        printf("hello word!\n");
        printf("你好世界\n");
        delay(1000);
   }
}

void uart_init(void)
{
    TMOD=0x20;     //即0010 0000,定时器/计数器1,工作方式2
    TH1=0xfd;      //设置波特率为9600
    TL1=0xfd;
    TR1=1;         //启动定时器/计数器1
        
    SCON=0x50;     //SM0=0;SM1=1;REN=1;0101 0000.串口工作方式1,允许串行控制
    PCON=0x00;     //设置SMOD=0
    IE=0x90;       //EA=1;ES=1;CPU允许中断,串行允许中断
        
    TI=1;          //中断请求标志位,直接使用printf必须加入此句才能实现发送
}

void delay(unsigned int z)
{
    unsigned int x,y;
    for(x=z;x>0;x--)
    for(y=110;y>0;y--);
}

4、仿真结果


  • 温馨提示:如果仿真出现如下图所示的乱码现象,将51单片机的晶振设置为11.0592MHz



     二、利用VSPD软件虚拟一对串口,然后在PC中使用串口助手和Proteus中的MCU进行通信。
     1、打开安装好的VSPD软件,设置好需要创建的串口对的端口号(这里使用COM3和COM4作为示例),然后点击add virtual pair按钮;

   2、设置DB9串口参数和串口助手参数

        这里Component Reference和Component Value不是必填选项,下面的端口选择我们之前创建的虚拟串口对COM3和COM4中的其中一个,演示时我这边使用(串口3,波特率9600,8位数据位,1位停止位,无校验,无流控)的参数条件。在串口助手中使用(串口4,波特率9600,8位数据位,1位停止位,无校验,无流控)。

  •   DB9串口定义和接线参考

  • DB9串口参数设置

  • 串口助手参数设置   

    3、仿真电路图

        需要注意的是Proteus中的DB9为母头接口,而电脑PC的为公头接口,所以连接方式,需要RXD接DB9的RXD,TXD接DB9的TXD。
   4、仿真结果
 附件给大家打包了,需要的自取,里面包括了proteus仿真+程序+VSPD虚拟串口软件+串口助手软件。

 链接:https://pan.baidu.com/s/18GD_mbM4pcjZmWbMJURtxw 
提取码:wof2

 参考博文:

proteus虚拟串口实现_veis的博客-CSDN博客

Proteus仿真实验---USART串口通信实验_proteus串口通信_DH小雷家的博客-CSDN博客

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值