51单片机学习笔记(八) - 串口通信


一、通信的有关概念

1、什么是通信

1、人之间的通信:说话、写信、信号、手势、眼神、表情等;
2、人和物之间的通信:按键、显示器、鼠标、触摸屏、蜂鸣器等;
3、计算机和计算机之间的通信:UART、SPI、IIC、CAN、网络等。

2、通信的关键

1、事先约定:通信协议(格式、速率、时间);
2、基本信息单元:几个bit、几个字节;
3、有效信息的编码、传输和解码:数据代表的实际意义。

3、通信的专业概念

1、同步和异步:是否有时钟线;
2、单工、半双工、全双工:是否可以同时收发;
3、并行和串行:数据线有单根还是多根;
4、电平信号和差分信号:电平和差分信号。


二、什么是串行通信

1、串口通信

1、一种特定的通信协议;
2、别名:串行通信、串口通信、URAT、SURAT;
3、类型:异步、串行、全双工。

2、主要用途

1、早期用于计算机之间短距离通信;
2、现在大部分用于CPU之间近距离通信、以及CPU与其他外部设备的通信、调试程序运行信息输入输出。

3、工作方式

1、3根线(GND、RxD、TxD,数据线需要交叉)或者9根线 (DB9);
2、发送方有发送移位寄存器,接收方有接收移位寄存器;
3、数据在发送方和接收方的CPU中都以字节为单位整字节处理;
4、数据在通信线上以位为单位逐个bit的传输。

4、串行通信协议的基本概念

1、一帧数据:起始位、数据位、奇偶校验位、停止位;
2、波特率:一秒钟传输多少个bit位,发送方和接收方必须波特率设置为一样;
3、流控:速率协商,现在一般都要禁用掉。


三、STC51的串行通信相关寄存器

1、总览

在这里插入图片描述

2、SCON和PCON寄存器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
说明:通常我们使用的工作模式是方式1,因此,PCON的SMOD0位必须配置成0,然后SCON寄存器的SM0位设置0,SM1位设置成1;

3、SBUF寄存器

在这里插入图片描述

4、与中断相关的寄存器IE、IPH、IP

在这里插入图片描述


四、代码示例

串口初始化函数

void Uatr_Init(void)
{
	SCON = 0x50;                  //工作在模式1,允许接收
	PCON = 0x80;                  //波特率加倍
	TMOD = 0x20;                  //定时器1工作在模式1
	TH1 = 250;                    //波特率设置成4800
	TL1 = 250;                    //8位重载
	TR1 = 1;	
	ES = 1;
	EA = 1;
}

字节发送函数

void Uart_SendByte(unsigned char Byte)
{
	SBUF = Byte;                  //发送数据
	while(!TI);	                  //等待发送
	TI = 0;                       //标志位清零
}

字符串发送函数

void Uart_SendString(unsigned char *Str)
{
	while(*Str != '\0')
	{
		Uart_SendByte(*Str);
		Str++;
	}
}

中断函数

void Uart_Isr(void) interrupt 4 using 1
{
	unsigned char tmp;	
	if(RI)
	{
		tmp = SBUF;
		RI = 0;
	}
	Uart_SendByte(tmp);
}

主函数

#include <reg51.h>

void Uatr_Init(void);
void Uart_SendByte(unsigned char Byte);
void Uart_SendString(unsigned char *Str);
void Delay_mS(unsigned int Tim);

void main(void)
{
	Uatr_Init();
	while(1);
}

函数实现了将接收到的字符串,回传出去。


总结

1、本节介绍了通信的相关概念;
2、主要介绍了51单片机串口通信的相关知识和编程方法;
3、涉及到了波特率的计算;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值