51单片机——UART
单片机——UART串口通信
宗旨:技术的学习是有限的,分享的精神是无限的。
对于单片机来说,通信则与传感器、存储芯片、外围控制芯片等技术紧密结合,成为整个单片机系统的“神经中枢”。
1、初步认识
一位一位的发送出去的,要发送 8 次才能发送完一个字节。
STC89C52有两个引脚是专门用来做 UART串行通信的,一个是 P3.0一个是 P3.1,它们还分别有另外的名字叫做 RXD和TXD,由它们组成的通信接口就叫做串行接口,简称串口。
波特率:发送二进制数据位的速率,习惯上用 baud 表示;即我们发送一位二进制数据的持续时间=1/baud。
通信过程:在UART 通信的时候,一个字节是 8 位,规定当没有通信信号发生时,通信线路保持高电平,当要发送数据之前,先发一位 0 表示起始位,然后发送 8 位数据位,数据位是先低后高的顺序,数据位发完后再发一位 1 表示停止位。
2、RS232通信接口与USB转串口通信
RS232 接口一共有 9 个引脚,分别定义是: 1、载波检测 DCD; 2、接收数据 RXD; 3、发送数据 TXD; 4、数据终端准备好 DTR; 5、信号地线 SG; 6、数据准备好 DSR; 7、请求发送 RTS; 8、清除发送 CTS; 9、振铃提示 RI。我们要让这个串口和我们单片机进行通信,我们只需要关心其中的 2 脚 RXD、 3 脚 TXD 和 5 脚 GND 即可。
负逻辑:低电平代表的是 1,而高电平代表的是 0,因此需要电平转换芯片 MAX232。 RS232 串口和 UART 串口,它们的协议类型是一样的,只是电平标准不同而已,而 MAX232 这个芯片起到的就是中间人的作用,它把 UART 电平转换成 RS232 电平,也把 RS232 电平转换成 UART 电平。
USB 转串口芯CH340T:实现 USB通信协议和标准UART 串行通信协议的转换。
3、通信的三种基本类型
单工通信就是指只允许一方向另外一方传送信息,而另一方不能回传信息;
半双工通信是指数据可以在双方之间相互传播,但是同一时刻只能其中一方发给另外一方;
全双工通信就发送数据的同时也能够接收数据,两者同步进行。
4、串口通信
1、配置串口为模式 1。
2、配置定时器 T1 为模式 2,即自动重装模式。
3、根据波特率计算 TH1 和 TL1 的初值,如果有需要可以使用 PCON 进行波特率加倍。
4、打开定时器控制寄存器 TR1,让定时器跑起来。
定时器的重载值计算公式为:TH1= TL1 = 256 - 晶振值/12 /2/16 /波特率
#include<reg52.h>void ConfigUART(unsigned int baud);int main(void)
{EA = 1; //使能总中断ConfigUART(9600); //配置波特率为9600while (1);return 0;
}
/* 串口配置函数,baud-通信波特率 */
void ConfigUART(unsigned int baud)
{SCON = 0x50; //配置串口为模式1TMOD &= 0x0F; //清零T1的控制位TMOD |= 0x20; //配置T1为模式2TH1 = 256 - (11059200 / 12 / 32) / baud; //计算T1重载值TL1 = TH1; //初值等于重载值ET1 = 0; //禁止T1中断ES = 1; //使能串口中断TR1 = 1; //启动T1
}
/*UART中断服务函数 */
void InterruptUART() interrupt 4
{if (RI) //接收到字节{RI = 0; //手动清零接收中断标志位SBUF = SBUF + 1; //接收的数据+1后发回,左边是发送SBUF,右边是接收SBUF}if (TI) //字节发送完毕{TI = 0; //手动清零发送中断标志位}
}
51单片机——UART相关推荐
- 51单片机——UART串口通讯-波特率可选,增添定时器2产生波特率1.0
1.51单片机自带硬件串口接口,使用时只需要进行寄存器配置即可. 2.定时器1波特率有4种可选择,默认9600bps.另外还有1个字节的发送函数,字符串发送函数. 3.增添:定时器2波特率有5种可选择 ...
- 51单片机——UART串口通讯-波特率4种模式可选1.0
1.51单片机自带硬件串口接口,使用时只需要进行寄存器配置即可. 2.波特率有4种可选择,默认9600bps.另外还有1个字节的发送函数,n个字符发送函数. 3.有几个寄存器默认的reg52.h里面没 ...
- 51单片机——USART半双工模式通讯-波特率可选1.2版本
1.优化<51单片机--UART串口通讯-波特率可选,增添定时器2产生波特率1.1版本>里的代码. 2.主要修改了串口发送和串口中断里的代码,且增加了串口发送标识位.串口接收完标识位.接收 ...
- 51单片机的UART应用
串行通信方式:将数据字节分成一位一位的行驶在一条传输线上进行传输,如图: 异步串行通讯方式:异步串行通信数据格式一般为字符格式,一个字符一个字符(即一帧)地传输,每个字符一位一位的传输,各个位是以固定 ...
- 【自学51单片机】11 -- UART串口通信
文章目录 1.串行通信的初步认识 2.USB转串口通信 3.UART串口通信的基本应用 3.1 通信的三种基本类型 3.2 UARM模块介绍 3.3编写UART串口步骤及程序 4.串口调试助手 5.通 ...
- 51单片机IO模拟UART
一. IO模拟UART发送 串口通信属于 串行 异步 半双工的通信模式 1. 最近在调试一个IO模拟UART的程序,把调试过程中遇到的问题总结一下.对于UART的发送部分(主机模式)还是比较容易实现的 ...
- 51单片机入门——UART串口通信
文章目录 前言 1.什么是串行通信 2. USB转串口通信 3. IO 口模拟 UART 串口通信 4 UART串口通信的基本应用 4.1 通信的三种类型 4.2 UART模块 4.3 UART 串口 ...
- 第11章 UART 串口通信(手把手教你学51单片机pdf部分)
手把手教你学51单片机-C语言版.pdf
- 51单片机C语言波特率十六进制,理解51单片机串口通信的波特率与USB转串口通信...
RS232 在我们电脑上,一般都会有一个9针的串行接口,这个串行接口叫做RS232接口,它和UART通信有关联,但是由于现在笔记本电脑不带9针串口,所以和单片机通信越来越趋于使用USB虚拟串口. 九针 ...
最新文章
- Navicat中查询哪些表有指定的字段名(技巧)
- Spring框架(1)
- 【Python CheckiO 题解】Long Repeat
- emlog博客网站后台登录模板 上传到模板目录即可
- 《Adobe Illustrator CC 2014中文版经典教程(彩色版)》—第1课0.8节编辑描边
- 查询数据表中重复记录
- Google验证码ReCaptcha V3
- 搭建第一个springBoot 摘抄自蚂蚁课堂
- java UCI,UCI数据集
- Excel常用功能(持续更新)
- 万能五笔输入法弹窗_万能五笔输入法广告怎么去掉
- 【软件工程】机房文档--可行性研究报告
- kinit 某个账户,提示 Clients credentials have been revoked
- 车载USB DVR(行车记录仪)的源码架构浅析(基于AndroiidM)
- SpringBoot + Vue 的物流仓库管理系统源码
- JDBC:JDBC工具类JDBCUtils
- 人工智能——K-Means聚类算法(Python)
- 基于JavaWeb的餐饮库存管理系统
- 国庆六日游——第三天第一题
- 密码中用到的特殊字符有哪些?
热门文章
- ARP 地址解析协议
- 40天python入门教程_Python入门教程超详细1小时学会Python
- android 编译luajit,Android 嵌入 LuaJIT 的曲折道路
- 【机器学习】逻辑斯蒂回归原理
- 【Python + Selenium】之JS定位总结
- ann matlab,人工神经网络ann及其matlab仿真.ppt
- Linux:守护进程详解及实现
- VS2017打开低版本的VS MVC架构的项目的时候需要修改的地方
- [Robot Framework] 怎么做数学运算?
- 处理String类常用的方法1