51单片机之串口通信
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、串口介绍
- 二、电路
- 三、寄存器
- 四、串口通信操作流程
前言
2022.9.14的学习记录。`
一、串口介绍
串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。
单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。
51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信。
二、电路
简单双向串口通信有两根通信线(发送端TXD和接收端RXD)。
TXD与RXD要交叉连接
当只需单向的数据传输时,可以直接一根通信线
当电平标准不一致时,需要加电平转换芯片
T——transmit(发送);
X——exchange(交换);
D——data(数据);
R——receive(接收);
三、寄存器
1.SCON:串口控制寄存器(可位寻址):
SM0、SM1:
SM2:允许方式2或方式3多机通信控制位;
REN:允许/禁止穿行接收控制位。
○ 由软件置位REN,REN=1为允许串行接收状态,可启动串行接收器RxD,开始接收信息;
○ 软件复位REN,即REN=0,则禁止接收;
TB8:在方式2或方式3,它为要发送的第9位数据,按需要由软件置位或清0;
RB8:在方式2或方式3,是接收到的第9位数据;
TI: 发送中断请求标志位。在方式0,当串行发送数据第8位结束时,由内部硬件自动置位,即TI=1,向主机请求中断,响应中断后必须用软件复位,即TI=0。在其他方式中,则在停止位开始发送时由内部硬件置位,必须用软件复位;
RI:接收中断请求标志位。在方式0,当串行接收到第8位结束时由内部硬件自动置位RI=1,向主机请求中断,响应中断后必须用软件复位,即RI=0。在其他方式中,串行接收到停止位的中间时刻由内部硬件置位,即RI=1(例外情况见SM2说明),必须由软件复位,即RI=0。
-2.–PCON:电源控制寄存器(不可位寻址)
PCON : 电源控制寄存器 (不可位寻址):
SMOD:波特率选择位。
○ 当用软件置位SMOD,即SMOD=1,则使串行通信方式1、2、3的波特率加倍;
○ SMOD=0,则各工作方式的波特率不加倍。复位时SMOD=0。
SMOD0:帧错误检测有效控制位。
○ 当SMOD0=1,SCON寄存器中的SM0/FE位用于FE(帧错误检测)功能;
○ 当SMOD0=0,SCON寄存器中的SM0/FE位用于SM0功能,和SM1一起指定串行口的工作方式。复位时SMOD0=0
3.TMOD
四、串口通信操作流程
1.发送数据流程
代码如下:
void UartInit() //9600bps@11.0592MHz
{
PCON = 0x00; //波特率不倍速
SCON = 0x50; //串口工作方式1,允许接收
TMOD = 0x20; //清除定时器1模式位
TL1 = 0xfd; //设定定时初值
TH1 = 0xfd; //设定定时器重装值
ES=1 //允许串行中断
EA=1;//打开总中断
TR1 = 1; //启动定时器1
}
发送数据:
//串口发送一个字节数据
void UART_SendByte(unsigned char Byte){
SBUF=Byte;
//检测是否完成
while(TI==0);
TI=0;//TI复位
}
2.接收数据流程
void UartInit() //9600bps@11.0592MHz
{
PCON = 0x00; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
TMOD = 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFd; //设定定时初值
TH1 = 0xFd; //设定定时器重装值
TR1 = 1; //启动定时器1
//开启中断
EA=1; //总中断控制
ES=1; //串口中断
}
代码如下:
//串口中断
void UART_Routine() interrupt 4
{
if(RI==1){
P1=SBUF;//显示LED
UART_SendByte(SBUF);//将数据发回电脑
RI=0;//复位
}
}
————————————————
版权声明:本文为CSDN博主「wendy_ya」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/didi_ya/article/details/124289688
51单片机之串口通信相关推荐
- 51单片机stc15w204s串口通信发数据接收数据串口中断发中文字符串完美运行软件延时发送一字节函数全注释
这里写自定义目录标题 KEIL自己先调试通了然后再说下面的事 51单片机stc15w204s串口通信直接上文件 KEIL自己先调试通了然后再说下面的自己看看就可 KEIL自己先调试通了然后再说下面的事 ...
- MATLAB与51单片机进行串口通信详解
目录 一.51单片机与电脑进行串口通信 二.MATLAB串口通信函数 三.串口属性 四.示例Demo 4.1 MATLAB接收单片机发来的数据 4.2 MATLAB向单片机发送数据控制LED 五.总结 ...
- Proteus仿真stm32和51单片机,串口通信调试过程记录
前言 本文所用Proteus版本为8.10,主要内容为在Proteus中仿真stm32和51单片机进行串口通信,记录了仿真过程中遇到的问题和解决办法. 这里要注意的是,在Proteus中 ...
- 51单片机串口通讯c语言程序,如何使用51单片机实现串口通信
描述 STC51单片机一般带有1个串口,有的带有2个串口,串口一般用于下载程序和串口通信.串口通信特别适合控制设备,所以工控机的电脑上一般都带有串口. 51单片机的串口引脚为P3.0引脚与P3.1引脚 ...
- 51单片机的串口通信
1.串口通信 (1)串口是串行接口(serial port)的简称,也称为串行通信接口或COM接口. (2)串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据 ...
- 51单片机的串口通信原理
一.并行和串行通信方式 通信有并行和串行两种通信方式.在单片机系统以及现代单片机测控系统中信息交换多采用串行通信方式. 1.并行通信方式 并行通信通常是将数据字节的各位用多条数据线同时进行传送,每一位 ...
- 十一、51单片机之串口通信
1.通信的关键 (1)事先约定.通信之前规定好的,如通信速率,起始信号,结束信号等. (2)通信传输的基本信息单元. (3)信息的编码.传输.解码. 2.通信相关的概念 2.1.同步和异步 (1)同步 ...
- 蓝桥杯51单片机之串口通信发送接收信息【单片机开发初学者串口必会】
文章目录 一.上位机发送信号控制单片机 1.显示对应的流水灯 2.显示对应数码管 3.控制数码管显示的数字 二.两机收发信息 一.上位机发送信号控制单片机 1.显示对应的流水灯 实现现串口通信接收上位 ...
- 51单片机之——串口通信(含实现部分)
目录 一 串口通信简介 二 前置知识 二 前置准备 三 实现单片机通过串口向电脑发送数据 四 实现单片机通过串口接收电脑发送数据 一 串口通信简介 本篇文章将实现两个部分,第一部分为单片机 ...
最新文章
- 7-3 逆序的三位数(C语言)
- 天呐,程序员有女朋友了!
- 数据标准化(归一化)
- 注意Java 8的[Pri​​mitive] Stream.iterate()中的递归
- github 和git_学习编码时如何学习Git和GitHub
- LeetCode 1246. 删除回文子数组(区间DP)
- 知道 | 同学,你都了解关系型数据库,确定不了解一下这种数据库吗?
- Linux应用总结:自动删除n天前日志
- 计算机无法开机如何读u盘启动,无法开机u盘装系统教程
- react大数据量渲染_React大量数据渲染的绝佳解决方案——React虚拟化组件
- PS合成在灯泡里活动的金鱼教程
- Verilog 实现占空比为50%的三分频 断言SVA查看波形
- CGB2109-Day10-mybatis
- Wince 困难中前行 晚饭的时候可以看下夕阳
- react前端显示图片_在react中怎么动态渲染图片?
- Linux系统编程1——系统函数
- markdown设置图片相对路径显示
- Vue入门-------(1)
- APP分发渠道:国内Android市场分析
- 苹果手机技巧,如何查男朋友手机,查岗技能大曝光!