捌:串行口的原理与应用

发布者:精品古钱斋最新更新时间:2019-08-13 来源: eefocus关键字:串行口  串行通信  并行通信。 手机看文章 扫描二维码
随时随地手机看文章

基本概念

通信分为两种:串行通信并行通信
串行通信方式中,可以分为两类:异步通信和同步通信。
异步通信中,单片机与外设之间必须有两项规定。
第一项规定:双方通信时采用怎样的数据格式。数据格式指的是串行通信中怎样标志一组数据的开头和结束,这组数据有多少个有效数据位,以及是否带有校验码等等。
例如UART串行通信双方规定:形成的数据格式如图:
这里写图片描述
1个起始位低电平0(通信总线在空闲时是高电平),7个数据位,1个奇偶校验位,1个停止位,这是完整的一帧数据。称之为数据格式。

异步通信还必须有一项规定:即双方通信过程中每发送一个数位需要多长的时间。在有些场合也称为波特率,即每秒钟传送的二进制位数。这项规定对于微处理器与外界通信是很重要的。

51内部的串行口

89C51内部有一个全双工串行通信接口,具有UART功能。
这里写图片描述
解释:51单片机内核,如果要发送一个数据出去,首先把数据放到发送SBUF中(缓冲区),然后SBUF会自主自发的将数据送到输出移位寄存器(8位),然后一个位一个位的送到TXD,首先发送右侧的那一位,发送完前面的自动往后移动位,发送的速度由波特率控制;当有数据来的时候,首先通过RXD送入输入移位寄存器(8位),当装满之后(一个字节),一次性送入接收SBUF(发送SBUF与接收SBUF名字一样,但物理地址不一样),然后再由单片机从接收SBUF中读取数据。PCON寄存器控制波特率,串行口控制寄存器SCON,TI与RI是标志位,TXD连接P3.1引脚,RXD连接P3.0引脚。这两个引脚又称为功能复用引脚(既做普通I/O口,又做串行口的输出/输入)。
#寄存器描述
串行口资源的有3个寄存器:SCON、SBUF、PCON
1、串行口控制寄存器SCON

D7
D6
D5
D4
D3
D2
D1
D0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI

SM0、SM1:串行口工作方式控制位

SM0 SM1
工作方式
功能说明
波特率
0  0
方式0
移位寄存器输入输出
fosc/12(fosc是振荡器的频率)
0  1
方式1
8位UART
T1溢出率(16×2^SMOD)
1  0
方式2
9位UART
fosc/(32×2^SMOD)
1  1
方式3
9位UART
T1溢出率(16×2^SMOD)

SM2:在方式2和方式3下,多机通信的控制位。在方式2和方式3下,如果SM2=0,只要接收到停止位信息后就会置位RI标志位,表示接收到数据;如果SM2=1,只有串行口接收到第9位数据(RB8)为1时,则会置位RI标志位。
REN:允许接收控制位。REN=0,则禁止串行口接收;REN=1,允许串行口接收。
TB8:在工作方式2和方式3中要发送的第9位数据,可以是奇偶校验位或者是地址/数据标识位。
RB8:接收到的第9位数据。
TI:发送中断标志位。数据发送完毕之后,TI由硬件自动置位。单片机响应中断后,不会自动清除该位,必须用软件对TI清零。
RI:接收中断标志位。一帧数据接收完毕之后,RI由硬件自动置位。单片机此时可以从SBUF中读取数据,读完数据后必须用软件对RI清零。

串行口的使用

第一项规定:双方通信时采用怎样的 数据格式。(四种工作方式)
串行口有四种工作方式,方式0主要用于扩展并行输入输出口;方式1、方式2和方式3用于串行通信中。
(1)方式0
在方式0下,串行口的SBUF作为同步移位寄存器使用,发送SBUF相当于一个并入串出的移位寄存器。接收SBUF相当于一个串入并出的移位寄存器。
(2)方式1
串行口在方式1下工作于异步通信方式,一帧数据有10包,包括1位起始位、8位数据位和1位停止位。
发送过程:单片机执行一条写入SBUF的指令就启动发送,数据从TXD引脚输出,发送完一帧数据后,硬件置位TI标志。
接收过程:当REN=1时,接收器对RXD引脚进行采样,采样脉冲频率是所选波特率的16倍。当采样到RXD引脚上出现从高电平“1”到低电平“0”的负跳变时,就启动接收器接收数据。接收完数据后,将有效的8位数据送入接收SBUF中,停止位送入RB8中,并置位RI。
(3)方式2和方式3
方式2或方式3异步通讯的数据帧都是由11位组成,包括1位起始位、8位数据位、1位可编程位(第9位)、1位停止位。发送数据时,第9位送入SCON中的TB8;接收数据时,第9位送入SCON中的RB8。(可用于多机通信)
发送过程:先把第9位数据装入SCON中的TB8中,再把要送的数据送入发送的SBUF。发送器便立即启动发送数据,发送完一帧数据后,硬件置位TI。
接收过程:当REN=1时,串行口可以接收数据。接收到的有效8位数据送入接收SBUF,第9位数据装入RB8,然后根据SM2的设置判定是否置位RI。
第二项规定:双方通信速度的确定。(计算波特率)
串行口都是选用T1作为波特率发生器(T1工作在方式2(n=8)下),所以需要计算T1的计算初值和SMOD值。公式如下:
方式1、方式3的波特率=[定时器T1溢出率×2^SMOD]/32     (公式1)

定时器T1溢出率 = 1/溢出周期 = 晶振频率/[(2^8-计数初值)×12]  (公式2)

由公式1和公式2推导出计算初值的计算公式,见公式3。

计数初值 = 256-[晶振频率×2^SMOD]/[波特率×32×12]      (公式3)

如需精确的通信波特率4800bps,设晶振频率fosc=12MHz,定时器T1工作在方式2下,有两种方法实现:



由上可知,SMOD的选择对计数初值和波特率有直接影响,一般波特率误差不大于2.5%,所以选择SMOD的值时先计算一下,选择使波特率误差小的SMOD值。

#串行口的使用步骤
1、通信双方数据通信格式的约定。
2、通信双方波特率的约定。(速度)
3、串行口的工作方式的选择,一般选择方式1和方式3。
4、计数初值和SMOD值的确定。
5、清除发送中断标志位TI和接收终端标志位RI。
6、往SBUF寄存器写入数据或等待从SBUF寄存器中接收数据。

实验


汇编代码


******************************************************************/

*   【课程9】 ****UART的应用***********

*   【说 明】 ****使用单片机UART进行数据的发送

*   【描 述】 ****使用UART向PC机发送字符串

******************************************************************/


ORG    0000H

MIAN: MOV    SCON,#50H   ;SM0:SM1=01,选择方式1;TI=0

MOV    PCON,#00H        ;设置SMOD位=0

MOV    TMOD,#20H       ;定时器T1工作在方式2下

MOV    TH1,#0E6H       ;设置计数重装值

MOV    TL1,#0E6H       ;设置计数初值

SETB   TR1             ;启动T1计数工作

MOV    A,#41H          ;给A送字符‘A’的ASCII码,各字符的ASCII码见附录

L1: MOV    SBUF,A          ;把数据送给SBUF,开始串口发送

JNB    TI,$            ;如果TI=0,则一直等待,直到TI=1(即发送完成)才往下执行

CLR    TI              ;清除TI标志

JMP    L1              ;跳转到L1,继续发送字符‘A’

END


C代码


******************************************************************/

*   【课程9】 ****UART的应用***********

*   【说 明】 ****使用单片机UART进行数据的发送

*   【描 述】 ****使用UART向PC机发送一个 'A'字符

******************************************************************/

#include


char arr[8]={'H','e','l','l','o','b','o','y'};


void main()

{

int i;

SCON=0x50; //设置串口工作于方式1,TI位清0

PCON=0x00; //PCON.7是SMOD位,SMOD=0

TMOD=0x20; //选择定时器T1工作于方式2

TH1=0xe6; //设置波特率为1200

TL1=0xe6;

TR1=1; //开启定时器T1


while(1)

{

for(i=0;i<8;i++)

{

SBUF=arr[i];     //发送字符‘A’

while(!TI) ; //等待TI置位,即数据发送完成

TI=0;     //对TI软件清零

}   

}

}


关键字:串行口  串行通信  并行通信。 引用地址:捌:串行口的原理与应用

上一篇:柒:定时/计数器的原理与应用
下一篇:玖:中断系统的原理与应用

推荐阅读最新更新时间:2024-11-10 20:32

动图演示UART、SPI、 I2C等串行通信的底层原理
UART、SPI、 I2C等串行通信是嵌入式开发中非常常见的通信方式,这些通信的最底层通信原理其实不难,但很多初学者却学不会。 本文分享一些常见通信的底层数据传输原理。 UART串口 UART:Universal Asynchronous Receiver/Transmitter,通用异步收发传输器。 UART串口是最常见的一种串口通信,下面是串口连接上位机电脑,以及RS232应用的动画。 如上图,PC 上通过UART来调试MCU。 上图,RS-232通过电平转换芯片与MCU通讯。 SPI串行通信 SPI:Serial Peripheral Interface,串行外设接口。 SPI是一种常见的串行同步通信
[单片机]
动图演示UART、SPI、 I2C等<font color='red'>串行通信</font>的底层原理
80C51串行口
串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度 单工、半双工、全双工 单工数据传输只支持数据在一个方向上传输 半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信 全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力 奇/偶校验(ECC) 传输的一组二进制代码的数位中“1”的个数是奇数或偶数 传输距离与传输速率 当传输线使用每0.3m有50PF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。当比特率超过1000 bps 时,最大传输距
[单片机]
80C51<font color='red'>串行口</font>
串行口通信 AD采集信号,显示在数码管,发送给上位机
一. 程序功能 用AD以1HZ的频率采集模拟信号,然后转换成数字量,显示在数码管上,再将其以1200bps发送到计算机,在计算机上显示. 二. 程序源码 #include reg52.h #include intrins.h //需要用到_nop_()函数 #define uchar unsigned char #define uint unsigned int sbit dula = P2 ^ 6; //申明U1锁存器的锁存端 sbit wela = P2 ^ 7; //申明U2锁存器的锁存端 sbit adwr = P3 ^ 6; //申明AD的WR端口 sbit
[单片机]
8051单片机串行口串行通信
一、串行通信的基础知识 CPU与其他外部设备要进行信息交换,一台计算机与其他计算机之间有时也要交换信息,这些信息交换就称为通信。通信有并行通信和串行通信两种。 1、并行通信 并行通信是将数据字节的各位用多条数据线同时进行传送。 并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接受存在困难。 2、串行通信 串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。 串行通信传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制要比并行通信复杂。 串行通信又可以分为异步通信与同步通信。 1)异步通信 异步通信是指通信的发送设备与接
[单片机]
8051单片机<font color='red'>串行口</font>及<font color='red'>串行通信</font>
串行通信控制器85C30及其应用
1 概述 85C30是AMD公司生产的双通道、全双工、支持多种通信协议的通信控制芯片,该芯片自身带有串并、并串转换功能,可广泛应用于微控制器组成的多串口串行通信应用系统中。其内部集成了波特率生成器、数字锁相环和晶体振荡器等可编程器件,因而可大大减少对外围电路的需要,提高了系统的可靠性,更适用于高速通信应用领域。 85C30的主要特性如下: ● 具有两个可全双工工作的通信通道; ● 可异步、同步串行通讯; ● 符合面向字符的同步协议,如IBM BISYNC(二进制同步通信协议); ● 符合面向比特的同步协议,如同步数据链路控制协议HDLC和高级数据链路控制协议SDLC; ● 最高数据传输率为4M bit/s(同步模式)
[嵌入式]
ARM串行通信并行通信介绍
计算机的通信(数据交换)方式主要是分为:串行通信与并行通信 串行通信 概念:计算机与I/O设备之间数据传输的各位是按顺序依次一位接一位进行传送。通常数据在一根数据线或一对差分线上传输。 特点:传输速度慢,使用的设备成本低,适用于计算机远程通信。 并行通信 概念:计算机与I/O设备之间通过多条传输线交换数据,数据的各位同时进行传送。 特点:传输速度快、效率高,传输成本高,适用于近距离的数据传送。 串行通信(按照数据传送方向) 单工(simplex) 半双工(half duplex) 全双工(full duplex) 波特率 概念单位时间传输二进制数据的位数,单位比特(bit/s或bps),表示每秒传输多少位,是一个衡
[单片机]
ARM<font color='red'>串行通信</font>与<font color='red'>并行</font><font color='red'>通信</font>介绍
串行通信中断方式子程序
/*-----------------------------------------------------* *文件描述:本文件包含了串行通信的4子程序,分别为: * *(1)SCISend1:串行发送1字节 * *(2)SCISendN:串行发送n字节 * *(3)SCIRe1:串行接收1字节 * *(4)SCIReN:串行接收n字节 * // // #include SCI.h
[单片机]
51单片机教程第6讲_串行口通信
STC51单片机一般带有1个串口,有的带有2个串口,串口一般用于下载程序和串口通信。串口通信特别适合控制设备,所以工控机的电脑上一般都带有串口。 51单片机的串口引脚为P3.0引脚与P3.1引脚,分别是RXD和TXD引脚。串口通信可以用于单片机和其它芯片通信或者单片机之间通信或者单片机与电脑通信。串口通信一般都是交叉连接。标准的串口有9个引脚,我们一般情况下,只用RXD TXD GND,剩下的引脚都是通信控制引脚,在以前用于控制电话机,现在已经基本上不用了。所以我们的51单片机上只保留了RXD和TXD。 串口通信的协议非常简单。如果单片机上的串口不够用,还可以用任意两个引脚模拟串口通信。 一般情况,我们用带有起始位的8位串口协议。
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved