一. STC89C52与MAX232连接原理图

二. 串行口通信原理

1. 基本通信方式

a. 并行通信

定义: 将数据字节的各位用多条数据线同时进行传送, 每一位数据都需要一条传输线, 还需要一条信号线和若干

控制线, 这种方式控制简单, 相对传输速度快, 适合与短距离的数据传输.

b. 并行通信

定义: 将数据字节分成一位一位的形式在一条传输线上逐个地传送, 此时只需要一条数据线, 外加一条公共信号

地线和若干控制信号线. 这种方式控制复杂, 速度慢, 适合长距离传送.

必要过程: 发送时, 要把并行数据变成串行数据发送到线路上去, 接收时, 要把串行信号再变成并行数据, 这样

才能被计算机及其他设备处理.

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

b.1 异步串行通信

通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程, 为使双方收, 发协调, 要求发送和接收设备

的时钟尽可能一致.

异步通信是以字符(构成的帧)为单位进行传输, 字符与字符之间的间隙(时间间隙)是任意的, 但每个字符中的各

位是以固定的时间传送的, 即字符之间不一定有"位间隔"的整数倍关系, 但同一字符内的各位之间的距离均为

"位间隔"的整数倍.

异步通信以帧字符信息由4部分组成: 起始位,数据位,奇偶校验位和停止位.(有的字符信息也有带空闲位, 即

在字符之间有空闲字符).

异步通信不要求收发双方时钟严格一致,实现容易, 设备开销较小, 当每个字符要附加2~3位,用于起止位,

校验位和停止位, 各帧之间还有间隔, 因此传输效率不高.

单片机之间,单片机计算机之间通信时, 通常采用异步串行通信方式.

b.2 同步串行通信

同步通信时要建立发送方时钟对接收方时钟的直接控制, 使双方达到完全同步. 此时, 传输数据的为之间的距离

均为"位间隔"的整数倍, 同时传送的字符间不留空隙, 即保持位同步关系, 也保持字符同步关系. 发送方对

接收方的同步可以通过外同步和自同步两种方法实现.

2. 51单片机串行口结构描述

51单片机的串行口是一个可编程全双工的通信接口, 具有UART(通用异步收发器)的全部功能, 能同时进行数据的

发送和接收, 也可以作为同步移位寄存器使用.

51单片机的串行口主要油两个独立的串行数据缓冲寄存器SBUF(一个发送缓冲寄存器, 一个接收缓冲寄存器)和

发送控制器, 接收控制器, 输入移位寄存器及若干控制门电路组成.

3. 串口方式

a.1 方式0

方式0时, 串行口为同步移位寄存器输入/输入此方式. 主要用于扩展并行输入或输出口. 数据由RXD(P3.0)引脚

输入或输出, 同步移位脉冲由TXD(P3.1)引脚输出. 发送和接收均为8位数据, 低位在先, 高位在后, 波特率固定

位Fosc/12.(Fosc为系统晶振频率)

a.2 方式1

方式1是10位数据的异步通信口, 其中1位起始位, 8位数据位, 1位停止位. TXD(P3.1)位数据发送引脚, RXD(P3.0)位数据接收引脚. 其传输波特率是可变的, 对于51单片机, 波特率由定时器1的溢出率决定. 这种

方式为单片机间,单片机计算机间,计算机间串口通信主要方式.

a.3 方式2, 3

方式2, 3时为11位数据的异步通信口. TXD(P3.1)为数据发送引脚, RXD(P3.0)为数据接收引脚. 这两种

方式下, 起始位1位, 数据9位(含1位附加的第9位, 发送时位SCON的TB8. 接收时位RB8), 停止位1位,

一帧数据位11位. 方式2的波特率固定位晶振频率的1/64或1/32, 方式3的波特率由定时器T1溢出率决定.

4. 串行口方式1说明

串行口方式1传送一帧数据共10位, 1位起始位(0), 8位数据位, 最低位在前, 高位在后, 1位停止位(1),

帧与帧之间可以有空闲, 也可以无空闲.

数据输出过程是当数据被写入SBUF寄存器后, 单片机自动开始从起始位发送数据, 发送到停止位的开始时, 由内部硬件将T1置1, 向CPU申请中断, 接下来可在中断服务程序中做相应处理, 也可选择不进入中断.

数据输入过程是用软件置REN为1, 接收器以所选择波特率的16背速率采样RXD引脚电平, 检测到RXD引脚输入

电平发生负跳变时, 则说明起始位有效, 将其移入输入移位寄存器, 并开始接受这一帧信息的其余位. 接收过程

中, 数据从输入移位寄存器右边移入, 起始位移至移位寄存器最左边, 控制电路进行最后一次移位. 当RI=0,且

SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF, 第9位(停止位)进入RB8, 并

置RI=1;向CPU请求中断.

操作串行口前,需要对单片机的一些串口寄存器设置,其步骤如下:

a. 确定T1工作方式(编程TMOD寄存器)

b. 计算T1的初值, 装载TH1,TL1

c. 启动T1(变成TCON中的TR1位)

d. 确定串行口工作方式(编程SCON寄存器)

e. 串行口工作在中断方式时, 要进行中断设置(编程IE, IP寄存器).

max232c语言,串行口通信(STC89C52+MAX232):串行口通信硬件设计详解相关推荐

  1. R语言生存分析(survival analysis)与生存资料有关的概念详解

    R语言生存分析(survival analysis)与生存资料有关的概念详解 目录 R语言生存分析(survival analysis)与生存资料有关的概念详解 #生存分析

  2. 通信原理之模拟幅度调制(线性调制)详解

    通信原理系列文章: 通信原理之模拟幅度调制(线性调制) 通信原理之模拟角度调制(非线性调制) 通信原理之模拟调制系统信号的抗造性能 通信原理之数字调制原理 通信原理之模拟幅度调制(线性调制)详解 1. ...

  3. 全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)...

    不多说,直接上干货! 缘由: (1)最近看到情侣零点送祝福,感觉还是很浪漫的事情,相信有很多人熬夜为了给爱的人送上零点祝福,但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强迫症了,这是也许程序 ...

  4. QT中使用C++ socket通信,socket通信原理三次握手和四次握手详解、客户端与服务端实例详解

    对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问: 1.         什么是TCP/IP.UDP? 2.         Soc ...

  5. C语言字符串库函数strlen、strcpy、strcat、strcmp、strstr使用详解及其实现

    写在前面:现在在刷简单题的时候,老是遇到字符串操作的题,用c语言自己实现很麻烦,其实c语言也有很多对字符串操作很方便的库函数.这个博客写来一是为了巩固自己一下自己学的知识,二也可以方便大家查询. 一. ...

  6. 上位机和MYSQL连接_上位机下位机串口通信设计详解

    串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件.一般完成这种功能的电路,我们称为串行接口电路. 串口通信结 ...

  7. 51单片机c语言编程的头文件,51单片机编程的头文件reg51.h详解

    我们在用c语言编程时往往第一行就是头文件,51单片机为reg51.h或reg52.h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔.ARM系列的单片机头文件往往内容就非常多,尽管如此,对 ...

  8. HTTP的通信过程及请求报文和响应报文(详解)

    掌握HTTP的通信过程以及请求报文和响应报文 一.首先我们先来了解一下HTTP协议: HTTP协议(超文本传输协议):是浏览器和Web服务器之间进行数据通信的格式,也就是说如果想要实现浏览器和Web服 ...

  9. linux c语言 utf8读写,关于在C程序中处理UTF-8文本的方法详解

    UTF-8 互联网的普及, 强烈要求出现一种统一的编码方式. UTF-8就是在互联网上使用最广的一种unicode的实现方式. 其他实现方式还包括UTF-16和UTF-32, 不过在互联网上基本不用. ...

最新文章

  1. 为什么Python在数据科学领域比R更受欢迎呢?
  2. 如何和相亲对象无限聊天?程序员甩了这份架构图……| 每日趣闻
  3. Fusion360操作记录
  4. Android布局动态化,一种基于堆积木思想的卡片式Android动态布局方法与流程
  5. python版:装饰器模式
  6. lsoci mysql_flask项目从sqlite3升级的mysql数据库
  7. 【Openstack】【Nova】开发者入门,开发工作流
  8. 什么不用 iframe 做微前端
  9. Android自带类实现语音合成
  10. cad延伸命令怎么用_CAD缩放怎么用,CAD缩放图文教程
  11. 插件效果【网站开发必备】——12款响应式 Lightbox(灯箱)效果插件
  12. 【前端三剑客一】 HTML
  13. 2000门课程名称翻译大全,写英文简历时用得着的
  14. 输入神经网络的数据类型要求,神经网络数据格式
  15. html下拉菜单图片,JS+CSS 制作的超级简单的下拉菜单附图
  16. python爬取网易云热歌榜
  17. 集效率之大成的EfficientNet
  18. bilibili缓存文件在哪里_面试官:你知道什么是网络缓存吗?了解原理?多级缓存架构知道?
  19. VBA多条件选择及自动填表及计算汇报
  20. python让用户输入字符串_Python中接收用户的输入

热门文章

  1. 使用Opencv+VS2015做数字图像识别
  2. 基于Arduino Uno开发板的红外遥控开发
  3. 华为云存储空间图库占比太大_华为手机照片太多?放这里既安全又不占内存,瞬间腾出50G空间...
  4. 2019.7.13--jzDay9
  5. Java使用ObjectInputStream时报错:java.lang.ClassNotFoundException: commen.User
  6. 102条简短深刻的回答,看完人生豁然开朗
  7. 使用Arduino控制TB6600步进电机驱动器教程(更新于 2022.03.19)
  8. OrCAD学习笔记1
  9. 优秀计算机基础微课案例,大学计算机基础——大学微课实用案例教学
  10. Laravel学习记录--访问器与修改器