计算机的通信分为:串行通信和并行通信

串行通信分为:异步通信和同步通信

异步通信:发送设备与接受设备有各自的时钟,通信时双方的时钟尽量保持一致,
以字符为单位进行传输,
字符与字符间的时间间隔是任意的,
每个字符中的各位是以固定时间传送的,
异步通信的数据格式:起始位,7位数据,校验位,停止位(这10位数据就是所说的字符,叫1帧数据)

同步通信:
建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。
传输数据的位之间的距离均为“位间隔的整数倍”,
传输的字符间不留间隙,保持位同步和字符同步,
两种方式实现同步:外同步,自同步
外同步:计算机甲控制计算机乙的时钟,
自同步:???

串行通信的传输方向:
单工:仅能沿1个方向传输数据
半双工:可以沿着两个方向传输,但是要分时进行
全双工:可同时进行双向传输

接下来介绍全双工的使用:
前面说过有校验位这个概念,
介绍一下串行通信中常见的错误校验,
1.奇偶校验:
在发送数据时,数据位尾随的一位叫奇偶校验位(1/0),
奇校验时,数据中的1的个数与校验位1的个数为奇数,
偶校验时,数据中1的个数与校验位1的个数为偶数,
接受数据时,对1的个数进行校验,若与规范不一致,则数据传输过程有错误。
例如:
8位数据:1101 1101
8位数据中6个1
8位数据中的最后一位为校验位
校验位为1,
6+1=7
若采用奇校验,则正常

2.代码和校验
发送方将所发数据求和(或个字节异或),
产生一个字节的校验字符(校验和),
附加到数据块末尾。
接收方接收数据时,
同时对数据块(不包括校验字节)求和(或对个字节异或),
将所得结果与发送方的校验和比较,
若一致,则认为传输正常。
否则,传输出错。

传输速率:
比特率也叫波特率
是每秒钟传输二进制代码的位数
单位:位/秒(bps)
比如:每秒钟传输240个字符,
每个字符是10位:1个起始位,8个数据位(包括一位校验位),1个停止位
那么,
波特率=10*240=2400bps

传输距离与传输速率的关系:
当传输线为0.3m,50pf电容的非平衡屏蔽双绞线,传输距离随传输速率的增加而减小。
当比特率超过1000bps,最大传输距离迅速下降,如9600bps时,最大距离下降到76米。

串口通信需要关注三个引脚
TXD RXD GND

80c51串行口结构

物理上是有2个SUBF,
但是,这两个地址相同,
所以,
在软件上直接配置SBUF就行,
单片机在运行时会自己做出区分,发送和接收不会重叠。

想要使用串行口,需要配置SCON
这是一个特殊功能寄存器,
功能:设定串口的工作方式,接收/发送控制,设置状态标志

通常使用方式1进行串口通信

SM2是多机通信控制位,主要用于方式2方式3
使用方式2或方式3时,SM2设置为1,---------------------------------------------------------------------------------------------------------------------------------------------还没用过--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

补充一句
SM2=0时,不用作其他配置就能使收到的数据进入SBUF,并激活RI
而且方式1时,若SM2==1,则只有接收到有效停止位,RI才置1

REN:允许串行接收位
由软件置REN=1,启动串行口接收数据
REN=0,禁止接收

TI发送中断标志位
RI接收中断标志位

PCON中有一个SMOD与串行口工作有关
SMOD是波特率倍增位
串行口方式1,2,3的波特率与SMOD有关
SMOD=1,波特率提高1倍
复位时,SMOD=0

串行口工作方式
发送和接收数据时,由低位到高位
起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止位

方式1
用软件置REN为1
接收器以所选波特率的16倍速率采样RXD引脚电平,
检测到RXD引脚发生负跳变时,说明起始位有效,
将其移入输入移位寄存器,
并开始接收这一帧数据的其余位,
接收数据时,数据从输入移位寄存器右边移入,
起始位移动至最左边时,控制电路进行最后一次移位。
当RI=0且SM2=0(或接收到的停止位为1时)
将接收到的9位数据的前8位数据装到SUBF
第9位(停止位)进入RB8
并置RI=1,
向CPU请求中断。

波特率
T1作为波特率发生器时,
最典型的用法是使T1工作在自动重装8位定时器方式(即方式2,且TCON的TR1=1,启动定时器)
溢出率=TH1的计数值=fosc/(12*(256-TH1))

串口的使用:
1.确定T1的工作方式(配置TMOD)—8位自动重装
2.计算T1初值,装载TH1 TL1
3.启动T1(TCON中的TR1)
4.确定串行口控制(编程SCON寄存器)
5.配置中断(IE IP寄存器)

/*波特率4800*/
#include "reg52.h"             //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16;     //对数据类型进行声明定义
typedef unsigned char u8;void UsartInit()
{SCON=0X50;            //设置为工作方式1;SCON:SM0 SM1 SM2 REN TB8 RB8 TI RI  方式1:SM0 SM1 = 01,且打开REN即高4位为0101,第四位全为0,所以SCON=0x50TMOD=0X20;           //设置计数器工作方式2PCON=0X80;         //波特率加倍,PCON中的D7是SMOD,SMOD=1,则波特率加倍,即PCON=0x80TH1=0XF3;               //计数器初始值设置,注意波特率是4800的TL1=0XF3;ES=1;                       //打开接收中断EA=1;                      //打开总中断TR1=1;                  //打开计数器
}void Usart() interrupt 4
{u8 receiveData;receiveData=SBUF;//出去接收到的数据RI = 0;//清除接收中断标志位SBUF=receiveData;//将接收到的数据放入到发送寄存器while(!TI);            //等待发送数据完成TI=0;                        //清除发送完成标志位
}void main()
{   UsartInit();  //    串口初始化while(1);
}

2021-912--51单片机串口通信--SCON方式1相关推荐

  1. 51单片机串口通信模板_深入理解51单片机串口通信及通信实例

    串口通信的原理 串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...

  2. 51单片机串口通信原理、相关寄存器配置与简单串口收发程序代码

    目录 1. 串口通信原理 2. 51单片机串口通信 2.1 串口简要模式图 2.2 相关寄存器 (1)PCON.SCON.SBUF (2)IE.IPH.IP (3)配置T1定时器 2.3 波特率和系统 ...

  3. 51单片机~串口通信(讲解+代码)

    51单片机~串口通信 (一)计算机串行通信原理: 综上:所以在设置的时候,经常将SCON设置为0X50==0101 0000 ,使用方式1. (二)工作: 中断控制 led灯,每发送一条指令灯亮或灭( ...

  4. 51单片机串口通信【收集学习向】

    本篇整理了学习51串口通信过程中看到的一些比较好的文章,有很多的超链接.并根据自己遇到的情况分析了串口传输乱码的一些原因. 目录 1.原理知识 2.测试程序和虚拟仿真 3.电路设计与公母口连线 电路设 ...

  5. 51单片机串口通信发送以及接收代码详解1

    #include <reg51.h> //实验现象:单片接收电脑发送的字符串,并发回给PC端的代码.//函数声明 void uart_init(void); void uart_seng_ ...

  6. 51单片机串口通信发送以及接收代码详解2

    #include <reg51.h> //实验现象:在电脑端没按下发送的时候,单片一直给电脑发送aaa字符串: //实验现象:在电脑端按下发送的时候,结束字符串aaa的发送代码,执行单片接 ...

  7. 51单片机串口通信模板_51单片机串口通信

    51 单片机串口通信 51 单片机串口通信(转载) 2009-03-03 18:22 一.串口通信原理 串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计 算机端,而且也能实现计算机对单 ...

  8. 51单片机-串口通信

    目录 1.什么是通信 1.1.通信的概念 1.2.传送方式 1.3.同步方式 1.4.传送方向 1.5.校验方式 2.单片机串口介绍 2.1.硬件电路 2.2.电平标准 2.3.常见接口 2.4.内部 ...

  9. 51单片机-串口通信(串口向电脑发送信息电脑通过串口控制LED)

    文章目录 前言 一.串行通信口的功能以及串行通信口的结构及原理 1.1 串行通信口的功能 1.2 51单片机串口的结构 二.串行通信口的控制寄存器 2.1 串行控制寄存器SCON 2.2 电源控制寄存 ...

最新文章

  1. 一种新的攻击方式:使用Outlook 表单进行横向渗透和常驻
  2. erlang web socket参考。
  3. SharePoint 2007/2010 的SPGridView 控件常见的两个问题
  4. halcon找矩形顶点的一种方法
  5. tcp状态机-三次握手-四次挥手以及常见面试题
  6. 少儿编程:C++绘图相关书籍篇
  7. pymongo 日期类型
  8. 典型电商网站的站点导航的布局结构实现,及运用三种方式实现下拉效果
  9. SVN Attempted to lock an already-locked dir异常解决方法
  10. google扩展工具Octotree使用(2020-09-01)
  11. 详解低延时高音质:声音的美化与空间音效篇
  12. Fortran中分配数组大小
  13. http请求中简单的签名验证
  14. Pytest全栈自动化测试指南-入门
  15. HTTP 错误 404.5 - Not Found
  16. 内存盘 固态硬盘 机械硬盘 速度测试
  17. Leetcode分类练习-查找(2)对撞指针
  18. 虚拟主机还是云服务器玩游戏,虚拟主机还是云服务器玩游戏
  19. tkinter教程4:控件LabelFrame和Entry
  20. Android Manifest

热门文章

  1. Oracle忘了保存,Oracle Cloud甲骨文云服务器忘记SSH秘钥或未设置Public key的解决办法...
  2. linux系统安装vasp,超算平台安装-CentOS7下安装vasp(gnu编译)
  3. 测试开发全栈之Python自动化 Pytest 之 fixture
  4. icloud账户如何注销_如何从您的iCloud帐户中删除设备
  5. 编程乐趣--汉字转拼音
  6. 飞书的故事,不止协同办公?
  7. Qcom 平台 LK 阶段配置 I2C
  8. spring clud config分布式配置中心的简单使用
  9. java开发项目经验怎么写,最全指南
  10. Flutter 手势篇