0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用proteus和keil实现串口通信仿真

CHANBAEK 来源: 郎哥编程课堂 作者: 郎宏林 2023-11-27 16:42 次阅读

前面一课讲述了串行口通信的技术原理,本课通过安装虚拟串口,用proteuskeil实现串口通信仿真

虚拟串口

编写仿真程序之前,需要安装VSPD,VSPD是虚拟串口工具,通过VSPD虚拟出两个串口用于通信。大家可以通过搜索引擎找到VSPD安装方式。

VSPD安装完成后,运行VSPD,并虚拟出两个串口COM1和COM2。具体过程如下:

(1)启动VSPD

图片

(2)虚拟一对串口

图片

单击【Create】按钮,确认创建当前设定的一对虚拟串口。

图片

(3)启动串口助手

随VSPD安装包附带的一般会有串口助手程序,可以使用串口助手测试串口的数据发送和数据接收。

图片

启动串口助手打开COM1口,另外再启动一个串口助手,打开COM2口。在打开COM1的串口助手发送窗口输入“abc”或“123”,单击发送按钮发送数据。观察打开COM2串口的串口助手窗口,发送的数据会出现在数据接收窗口。

51单片机串行口结构

51单片机串行口结构是一个可编程全双工的通信接口,能同时进行数据的发送和接收,它由两个独立的串行数据缓冲寄存器SBUF(一个发送缓冲寄存器,一个接收缓冲寄存器)和发送控制、接收控制器控制电路构成。

51单片机通过SBUF对串行接收或串行发送寄存器进行访问,SBUF的地址是99H。SCON寄存器是串行口控制寄存器,它用来设定串行口的工作方式、接收发送控制以及设置状态标志等。SCON寄存器的地址为98H,可进行位寻址,各位的定义如下表所示。

图片

SM0和SM1共同确定串行口的工作方式,SM0为0,SM1为1时,串行口工作方式为异步通信口,这也是串口最常用的一种工作方式,TXD(P3.1)为数据发送引脚,RXD(P3.0)为数据接收引脚。

REN为允许串行口接收位,REN=1:允许串行口接收数据,REN=0:禁止串行口接收数据。

在操作串行口之前,需要设置产生波特率的定时器T1、串行口控制和中断控制。

定时器设置:确定T1的工作方式,计算T1的初值,装载TH1和TL1。设置串行口工作方式:SM0=0,SM1=1。允许串行口接收数据:REN=1。RI为接收中断标志位,当串行数据接收完成后,向CPU发出中断申请,在处理程序中,将该位清零,取消此中断申请。TI为发送中断标志位,当串行口发送数据结束后,向CPU发出中断申请,在处理程序中,将该位清零,取消此中断申请。

串口通信仿真实验

实验要求:通过串口控制发光二极管的状态。

在proteus仿真电子元器件库搜索“COMPIM”,添加串口器件到电路模型元器件库,添加一个串口器件到电路模型,Physical port设置为COM1,并设置Physical Baud rate为9600。

图片

Physical Baud rate为波特率,波特率通常单位是bit/s,即每秒传输的二进制位数。

实验电路如下图所示:

图片

实验电路非常简单,器件P1为串口器件,串口器件的TXD引脚接单片机的TXD引脚,串口器件的RXD引脚接单片机的RXD引脚,串口器件的其它引脚可以悬空。

单片机内运行的完整C程序如下:

#include
void init();
void main(){
 unsigned char temp=0xff;
 init();
 while(1){
    if(RI){ 
         RI=0;  
         temp=SBUF; 
     }else{
         P1=temp;
     }
 }
}
void init(){
 TMOD=0x20; 
 TH1=0xfd;
 TL1=0xfd;
 TR1=1;
           
 SM0=0;
 SM1=1; 
 REN=1;
}

函数init()用来设置单片机串行口工作方式、定时器、中断等控制项,TMOD=0x20设置定时器为计数器方式并设置初值,TR1=1启动T1定时器,SM0=0和 SM1=1设置串口工作方式为异步通信方式,REN=1允许串行口接收数据。

main()函数应用while循环结构监测串行口,判断SCON寄存器的RI中断标志位是否为1,若为1,说明串口已接收到数据,数据存储在SBUF缓冲寄存器,RI中断标志位清零,SBUF赋值给temp变量,若RI中断标志位为0,将temp变量的值赋值给P1口。

实验过程:

在proteus启动实验电路,启动虚拟串口和串口助手,串口助手设置为COM2,打开COM2串口,选择16进制发送,在发送窗口输入00,单击发送,实验电路的二极管点亮,再次发送ff可熄灭二极管。

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620832
  • Proteus
    +关注

    关注

    76

    文章

    1688

    浏览量

    105596
  • 仿真
    +关注

    关注

    50

    文章

    3872

    浏览量

    132160
  • 串口通信
    +关注

    关注

    32

    文章

    1577

    浏览量

    54861
  • 虚拟串口
    +关注

    关注

    3

    文章

    56

    浏览量

    13737
收藏 人收藏

    评论

    相关推荐

    Proteus教程:STM32仿真串口+定时器

    Proteus教程:STM32仿真串口+定时器
    的头像 发表于 06-14 11:40 2994次阅读
    <b class='flag-5'>Proteus</b>教程:STM32<b class='flag-5'>仿真</b><b class='flag-5'>串口</b>+定时器

    基于Proteus 的串行通信仿真,字模提取

    字模提取及基于Proteus 的串行通信仿真"Verdana">采用扫描VB 图片框的方法提取字模,并利用VB、ProteusKeil
    发表于 06-28 01:12

    通过proteus,VSPD虚拟串口串口小助手仿真单片机串口通信

    求大家帮忙。我proteus、VSPD、串口助手来仿真和调试串口通信,出现问题了,想不出来怎么
    发表于 12-26 18:38

    串口通信仿真proteus(实例)+虚拟串口调试(软件)

    本帖最后由 衔胆栖冰 于 2015-4-28 16:29 编辑 proteus+虚拟串口调试助手可有效的仿真单片机的串口通信,简化开发
    发表于 04-28 12:34

    keil5和Proteus仿真运行stm32程序

    Proteus仿真运行stm32程序摘要:本文介绍了keil5和Proteus仿真运行stm
    发表于 08-24 08:00

    如何实现VSPD+XCOM+Proteus仿真stm32串口通信

    如何实现VSPD+XCOM+Proteus仿真stm32串口通信
    发表于 02-08 06:42

    Proteus+VSPD仿真stm32串口工具软件相关资料推荐

    也可以直接keil创建固件库工程,非必需,本实验采用CubeMX建立工程keil5 / IAR用于编写程序。Proteus用于绘制电路仿真
    发表于 02-10 07:00

    字模提取及基于Proteus 的串行通信仿真

    字模提取及基于Proteus 的串行通信仿真::采用扫描VB 图片框的方法提取字模,并利用VB、ProteusKeil 软件联合
    发表于 06-21 22:44 0次下载

    基于8051的Proteus仿真-单片机与PC机串口通讯仿真

    基于8051的Proteus仿真-单片机与PC机串口通讯仿真
    发表于 09-01 23:33 39次下载

    串口双机通信 keil uVision4程序代码下载

    串口双机通信 keil程序代码(c语言及汇编语言)及proteus仿真图 两机联调
    发表于 05-15 10:46 5次下载
    <b class='flag-5'>串口</b>双机<b class='flag-5'>通信</b> <b class='flag-5'>keil</b> uVision4程序代码下载

    C51_keil汇编+proteus仿真(小白教程)

    C51_keil汇编+proteus仿真(小白教程)
    发表于 11-23 09:36 18次下载
    C51_<b class='flag-5'>keil</b>汇编+<b class='flag-5'>proteus</b><b class='flag-5'>仿真</b>(小白教程)

    VSPD+XCOM+Proteus仿真stm32串口通信

    ,回传“LED1 OFF”在串口发送过程中,打开LED2作为发送数据指示灯相关软件使用说明STM32CubeMX+Keil+Proteus相关的安装、使用、配置等基础操作不再赘述,有关内容的详细介绍如下STM32CubeMX+Keil5
    发表于 12-05 14:06 13次下载
    VSPD+XCOM+<b class='flag-5'>Proteus</b><b class='flag-5'>仿真</b>stm32<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    【HAL库】Proteus+VSPD实现仿真stm32虚拟串口

    也可以直接用keil创建固件库工程,非必需,本实验采用CubeMX建立工程keil5 / IAR用于编写程序。Proteus用于绘制电路仿真原理图。VSPDVSPD是一款虚拟
    发表于 12-06 18:36 37次下载
    【HAL库】<b class='flag-5'>Proteus</b>+VSPD<b class='flag-5'>实现</b><b class='flag-5'>仿真</b>stm32虚拟<b class='flag-5'>串口</b>

    Proteuskeil联合仿真

    keil Debug部分第六步:配置proteus,联系keilproteus第七步:proteus
    发表于 12-29 19:50 26次下载
    <b class='flag-5'>Proteus</b>与<b class='flag-5'>keil</b>联合<b class='flag-5'>仿真</b>

    基于单片机RS485-PC串口通信proteus仿真设计

    基于单片机RS485-PC串口通信proteus仿真设计包含仿真及源程序
    发表于 04-20 15:12 9次下载