51单片机学习入门(三):串口

这篇具有很好参考价值的文章主要介绍了51单片机学习入门(三):串口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.串口是什么?

串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信。

51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信。

STC89C52的UART有四种工作模式:

  • 模式0:同步移位寄存器;
  • 模式1:8位UART,波特率可变(常用)
  • 模式2:9位UART,波特率固定;
  • 模式3:9位UART,波特率可变;

51单片机有两个通信接口TXD——P3^0;RXD——P3^1;

2.串口模式1的配置

(1)串口模式1是用寄存器SCON配置串口模式1:

  SM0 SM1 为1 0 //选择方式2;REN为1;//即REN=1为允许串行接收状态

 51单片机学习入门(三):串口

51单片机学习入门(三):串口

51单片机学习入门(三):串口  综上所述:

SCON = 0x50; //8位数据,可变波特率

(2)波特率可变设置寄存器PCON的SMOD=1,

51单片机学习入门(三):串口

PCON=0X80;//波特率加倍 

 (3)由图可见,串口的波特率是由定时器T1来产生的,所以我们要先打开定时器T1

51单片机学习入门(三):串口

打开定时器T1用到TCON寄存器的TR1位:

51单片机学习入门(三):串口 

TCON的低四位用于控制外部的中断。TCON的高4位用于控制定时/计数计时器的启动和申请中断。

TR1=1;//定时器1开始计时

(4)查stc52手册可知定时器要采用方式2(8位自动重装模式)

51单片机学习入门(三):串口

TMOD &= 0x0F; //清除定时器1模式位

TMOD |= 0x20; //设定定时器1为8位自动重装方式

(5)同时我们还要禁止定时器1中断

ET1 = 0;//禁止定时器中断

(6)然后定时器要设置高低八位寄存器TH1/TL1的初值,来控制波特率的速率:可查表

51单片机学习入门(三):串口

或者直接用STC-ISP软件生成初值 :如下面软件的配置,初值为

TH1=0XFD;TL1=0XFD;//设置定时初始值

51单片机学习入门(三):串口

综上所述,串口的初始化配置总结如下:

void UartInit(void)		//9600bps@11.0592MHz
{
	PCON |= 0x80;		//使能波特率倍速位SMOD
	SCON = 0x50;		//8位数据,可变波特率

	TMOD &= 0x0F;		//设置定时器模式
	TMOD |= 0x20;		//设置定时器模式

	TL1 = 0xFA;		//设置定时初始值
	TH1 = 0xFA;		//设置定时重载值

	ET1 = 0;		//禁止定时器%d中断
	TR1 = 1;		//定时器1开始计时
}

51单片机学习入门(三):串口

 也可以直接用stc-dsp软件进行配置,把AUXR的两行代码去掉即可;

3.串口的使用

SBUF寄存器

单片机的内部硬件自带发送和接收数据的功能,它是通过SBUF寄存器实现的。
SBUF地址都为99H,物理结构上,这是俩个完全独立的寄存器,

一个是发送寄存器,另一个是接收寄存器。

a=SBUF,代表单片机从计算机接收到了数据

//串口发送一个字节数据
void UART_SendByte(unsigned char Byte){
	SBUF=Byte;
	//检测是否完成
	while(TI==0);
	TI=0;//TI复位
}

SBUF=a,代表单片机要给计算机发送a数据

//串口发送一个字节数据
void UART_SendByte(unsigned char Byte){
	SBUF=Byte;
	//检测是否完成
	while(TI==0);
	TI=0;//TI复位
}

(1)单片机向PC发送数据

IT是发送中断请求标志位。在方式0,当串行发送数据第8位结束时,由内部硬件自动置位,
即TI=1,向主机请求中断,响应中断后必须用软件复位,即TI=0。在其他方式中,则
在停止位开始发送时由内部硬件置位,必须用软件复位。

#include <REGX52.H>
#include "UART.H"
#include "DELAY.H"
void USART_Sendbit(unsigned char Byte)
{
	SBUF=Byte;//发送的字节先存在SBUF寄存器后发出
 while(TI==0);
	 TI=0;
}
void  main()
{

	UartInit();//串口初始化函数
	while(1){
	USART_Sendbit(0x66);//向电脑发送0x66
		Delay(1000);//延时1s,使串口发送不会太快
	}
}

结果如图:51单片机学习入门(三):串口

 

(2)单片机接收PC的数据

RI: 接收中断请求标志位。在方式0,当串行接收到第8位结束时由内部硬件自动置位RI=1, 向主机请求中断,响应中断后必须用软件复位,即RI=0。在其他方式中,串行接收到 停止位的中间时刻由内部硬件置位,即RI=1(例外情况见SM2说明),必须由软件复 位,即RI=0.

单片机接收电脑的数据存到SBUF寄存器

接收要重新增加中断的配置:

#include <REGX52.H>
void UART_Init(void)		//9600bps@11.0592MHz
{
	PCON |= 0x80;		
	SCON = 0x50;		

	TMOD &= 0x0F;		
	TMOD |= 0x20;		
	
	TL1 = 0xFA;		
	TH1 = 0xFA;		
	
	ET1 = 0;	
	TR1 = 1;
		
	EA=1;//开启总中断
	ES=1;//开启串口中断
}
#include <REGX52.H>
#include "UART.H"
void  main()
{
	UART_Init();
	while(1){
	  
	}
}
void UART_Routine(void) interrupt 4
{
  if(RI==0)
	{
	 USART_Sendbit(SBUF);
   P2=SBUF;
   RI=0;
	}
}

这里的"UART.H"是封装了串口的初始化UART_Init()与串口发送USART_Sendbit(SBUF)函数,模块化编程,可以使代码更加简洁。文章来源地址https://www.toymoban.com/news/detail-428637.html

 

到了这里,关于51单片机学习入门(三):串口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 51单片机串口使用

    今天将为大家讲解51单片机的串口原理及代码编写。 51单片机串口是一种通信接口,它可以将51单片机与外部设备连接起来,实现数据的双向传输。51单片机串口的原理是,51单片机的串口接口由两个管脚组成,一个是RXD,另一个是TXD,RXD用于接收数据,TXD用于发送数据。当5

    2024年02月05日
    浏览(50)
  • 51单片机串口通信

    串口通信(serial communication)是指外设和计算机间通过数据信号线、地线等按位进行传输数据的一种通信方式,属于串行通信方式。 接口标准:常用RS-232和RS-485 RS-232C有一种9针的非标准连接器口,简称DB9。串口通信使用的大多都是DB9接口。在串口通信中,通常我们只使用2、

    2024年02月05日
    浏览(49)
  • 51单片机-串口通信

    目录 1.什么是通信 1.1.通信的概念 1.2.传送方式 1.3.同步方式 1.4.传送方向 1.5.校验方式 2.单片机串口介绍 2.1.硬件电路 2.2.电平标准 2.3.常见接口 2.4.内部结构 2.5.相关寄存器 2.6.工作模式(模式1) 2.7.如何配置串口中断 3.实际应用 3.1.单片机向电脑发送数据 3.2.电脑向单片机发送

    2024年02月01日
    浏览(50)
  • 51单片机串口

    1.1串口接线方式 RXD:数据输入引脚,数据接受;STC89系列对应P3.0口,上官一号有单独引出 TXD:数据发送引脚,数据发送;STC89系列对应P3.1口,上官一号有单独引出 接线方式 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FMY5yTZI-1690308835514)(C:Use

    2024年02月15日
    浏览(40)
  • 【51单片机系列】proteus仿真单片机的串口通信

    本文参考:https://zhuanlan.zhihu.com/p/425809292。 在proteus之外使用串口软件和单片机通信。通过在proteus设计一个单片机接收PC发送的数据,并将接收的数据发送出去,利用软件【Configure Virtual Serial Port Driver】创建一对虚拟串口,利用软件【串口助手】向单片机发送数据。 proteus仿真

    2024年01月17日
    浏览(53)
  • 51单片机(八)串口通信

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月05日
    浏览(54)
  • 51单片机 | 串口通信实验

      这一节我们就来学习 51 单片机的串口通信。开发板上集成了 1 个串口通信电路,是 USB 转串口模块,它既可下载程序也可实现串口通信功能。本节要实现的功能是: 51 单片机通过串口( UART )实现与 PC 机对话, 51 单片机的串口收到 PC 机发来的数据后原封不动的返回给

    2024年02月04日
    浏览(64)
  • 51单片机(串口通信、蓝牙)

    串行接口简称串口,也称 串行通信接口 或串行通讯接口(通常指COM接口),是采用串行通信方 式的扩展接口。串行接口(Serial Interface)是指 数据一位一位地顺序传送。 其特点是通信线路简 单,只要一对传输线就可以实现 双向通信( 可以直接利用电话线作为传输线),从

    2024年02月15日
    浏览(45)
  • 电脑通过串口助手和51单片机串口通讯

    今天有时间把电脑和51单片机之间的串口通讯搞定了,电脑发送的串口数据,单片机能够正常接收并显示到oled屏幕上,特此记录一下,防止后面自己忘记了怎么搞得了。 先来两个图片看看结果吧! 下面是串口3.c的文件全部内容: 下面是oled.h的全部内容: 下面是oled.c的全部内

    2024年02月07日
    浏览(57)
  • 51单片机串口的应用(单片机和电脑互发数据)

    现在来详细看一下寄存器,我们直接查看单片机手册。 SCON寄存器 先来说说SCON寄存器。 前一节我们提过,我们一般使用串口用的是模式1,即8位UART,这样我们就用不到校验位。从手册中可以看到,寄存器SCON中的SM0和SM1配置成01即可。 SM2寄存器明显用不到,因为我们没有用模

    2024年02月07日
    浏览(59)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包