Proteus仿真实验---USART串口通信实验

这篇具有很好参考价值的文章主要介绍了Proteus仿真实验---USART串口通信实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概要

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

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

        Proteus仿真实验---USART串口通信实验Proteus仿真实验---USART串口通信实验

                                 Virtual Terminal                               Virtual Terminal参数设置

        这里特别要注意的是单片机的晶振频率与VIRTUAL TERMINAL的波特率,这是两边相互通信的基础,通信前双方会约定好相同的波特率,如果不一致,调制和解调的参数就不一样,就很可能读取不到正确的数据,而出现乱码等现象。

二、电路及程序仿真

        1、电路如下图

Proteus仿真实验---USART串口通信实验

        2、程序

1)uart.h

#ifndef __UART_H
#define __UART_H

typedef unsigned int u16;
typedef unsigned char u8;

void UartInit();  
void Uart_SendData(u8 byte);
u8 Uart_ReceiveData();



#endif

 2)uart.c

#include "uart.h"
#include "reg52.h"


//串口初始化,设置波特率为9600,使用定时器1,晶振频率为11.0592
void UartInit()   
{
	SCON = 0X50;  //设置USART工作于方式1,8位无校检异步通信的收发模式,并清空收发中断标志位
	
	TMOD |= 0X20;  //定时器1,工作于8位自动重装载模式
	TH1 = 0xFD;  //装载值
	TL1 = 0XFD;
	TR1 = 1;		//启动定时器1
	ET1 = 0;   //禁止定时器1中断
	
	PCON &= 0X7F;  //设置SMOD=0,波特率不加倍
	EA = 1;		//允许总中断
	ES = 0;		//禁止串口收发中断(不使用串口中断)
}

//数据发送函数
void Uart_SendData(u8 byte)
{
	SBUF = byte;   //发送数据
	while(!TI);  		//等待数据发送完成
	TI = 0;			//复位发送中断标志位,为下次发送数据做准备
}

//数据接收函数
u8 Uart_ReceiveData()
{
	u8 temp;
	while(!RI);			//等待数据接收完成
	temp = SBUF;		//接收数据
	RI = 0;					//清除接收中断标志位
	return temp;		//返回值
}

3)main.c

#include "reg52.h"
#include "uart.h"
#define LED P0

//sbit LED0 = P0^0;

void main()
{
	UartInit();
	while(1)
	{
		LED = Uart_ReceiveData();
		Uart_SendData(Uart_ReceiveData());	
	}
}


三、仿真效果图

       Proteus仿真实验---USART串口通信实验

 四、注意事项及说明

        1、仿真开始VIRTUAL TERMINAL的界面如是没有出现,可心在Debug里面打开。仿真时VIRTUAL TERMINAL不会显示我们输入的数据,只会显示单片机返回的数据。如要显示右击VIRTUAL TERMINAL界面选中Echo Typed characters就会显示我们输入的数据了。

五、总结

一)电路

        线路连接,注意收发端TX与RX的连接。

        元件配置:51单片机晶振频率的设置注意单位(11.0592MHz);VIRTUAL TERMINAL参数的配置,配置如在第一点中有。

二)程序设计

       1、初始化串口:配置与串口相关的各个寄存器

        2、收发程序设置:通过查询与等待收发的中断请求标志位(RI\TI)设计程序

        3、串口通信相关的控制寄存器简介

                1)SCON(serial control):串口控制寄存器

                2)SBUF(serial buffer):数据缓存寄存器

                3)PCON(power control):电源控制寄存器

                4)IE(interrupt enable):中断控制寄存器

   Proteus仿真实验---USART串口通信实验

 1)SCON(serial control):串口控制寄存器

Proteus仿真实验---USART串口通信实验

Proteus仿真实验---USART串口通信实验 Proteus仿真实验---USART串口通信实验

Proteus仿真实验---USART串口通信实验 

Proteus仿真实验---USART串口通信实验 

Proteus仿真实验---USART串口通信实验 

 TI、RI:发送、接收中断请求中断标志位

 3)PCON(power control):电源控制寄存器Proteus仿真实验---USART串口通信实验

 文章来源地址https://www.toymoban.com/news/detail-407713.html

到了这里,关于Proteus仿真实验---USART串口通信实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 「STM32入门」USART串口通信

    通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 本文将介绍USART  概念解释 TX、RX分别是Transmit和Receive的缩写,代表发送、接受数据 全双工的含义是发送线路和接受线路互不影响,可以同时进

    2024年02月06日
    浏览(35)
  • [物联网工程]基于Protues仿真平台的C51/2单片机蓝牙串口通信控制继电器实验

    目录 实验目的 实验内容 仿真部分 实战部分 环境搭建 软件下载 仿真实验过程 模拟电路仿真 打开Proteus并创建新项目 绘制仿真电路图 程序实现 程序编写 程序导入 运行仿真 真实设备实战 硬件连接 程序实现 程序编写 程序导入 运行验证 总结拓展 掌握AT89C51蓝牙通信的工作原

    2024年03月20日
    浏览(42)
  • STM32入门笔记10_USART串口通信+案例:上位机控制LED亮灭(USART串口通信、TIM定时器、EXTI综合案例)

    通信的目的: 将一个设备的数据传送到另一个设备, 扩展硬件系统 通信协议: 制定通信的规则, 通信双方按照协议规则进行数据收发 名称 引脚 双工 时钟 电平 设备 USART TX、RX 全双工 异步 单端 点对点 I2C SCL、SDA 半双工 同步 单端 多设备 SPI SCLK、MOSI、MISO、CS 全双工 同步 单端

    2024年02月09日
    浏览(28)
  • STM32入门学习之USART串口通信:

    1.串口通信简介:通用异步收发传输器UART(Universal Asynchronous Receiver/Transmitter)是负责处理数据总线和串口之间的串/并通信的设备。UART通信规定了数据帧的格式:起始位、数据位、校验位、停止位等。UART异步通信只需要通信双方设置好数据帧的格式和波特率即可完成通信。因为

    2024年02月16日
    浏览(34)
  • STM32CubeMX实现USART串口通信

    硬件:stm32f103c8t6核心板 软件:STM32CubeMX 6.6.1 keil5 mdk 这里就不再详细介绍了,详细请参考上一篇博客: https://blog.csdn.net/qq_55894922/article/details/127232999?spm=1001.2014.3001.5501 若点击 Manage embedded software packages 后,出现失败,则需要随便点击其它任一选项,进行下载一些文件,比如点

    2023年04月17日
    浏览(40)
  • STM32CubeMx+MATLAB Simulink串口输出实验,UART/USART串口测试实验

    STM32CubeMx+MATLAB Simulink串口输出实验

    2024年02月21日
    浏览(35)
  • stm32中常见的通信协议之USART(串口)

    USART是一种通用的串行、异步通信总线,该总线有两条数据线,可以实现全双工的发送和接收。 串口的通信速度用波特率来表示,其单位为bps(bit per second)即每秒钟传送bit的数量。 串口规定,数据线在空闲的状态下,必须是置为高电平的状态。 起始信号为低电平,因为串口

    2023年04月08日
    浏览(30)
  • STM32F4 基于USART串口的蓝牙通信

    目录 一、硬件资源 连接方案 其他配置 二、实验原理 基本定义 USART介绍 USART工作原理 数据发送 数据接收 蓝牙HM-10配置 三、代码部分 usart.c usart.h Serial.c Serial.h main.c 结语 STM32F401,OLED,蓝牙hm10 连接方案 设备1的TX与设备2的RX连接,这样设备1发送的数据可以被设备2接收到。

    2024年01月17日
    浏览(35)
  • STM32 串口通信USART1的配置和使用

    UART:universal asynchronous receiver and transmitter通用异步收发器 USART:universal synchronous asynchronous receiver and transmitter通用同步异步收发器 上图是利用寄存器配置的步骤,下面我用官方库函数配置USART1 1、要配置串口usart1,先查看数据手册以及开发板原理图的芯片管脚 根据上图可以看

    2024年02月05日
    浏览(34)
  • STM32学习:串口通讯(proteus仿真)

    本次通过CubeMx+proteus进行stm32串口仿真 具体功能: 1、开机后,向串口1发送“Welcome” 2、串口1接收字节指令“0xa1\\\",打开LED1,回传“LED1 OPEN!” 3、串口1接收字节指令“0xa2\\\",关闭LED1,回传“LED1 Close!” 4、在串口发送过程中,打开LED2作为发送数据指示灯 1、COMPIM元件 作用:把仿

    2024年02月03日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包