第11课 串口通信

发布者:明月昊天最新更新时间:2015-05-14 来源: 51hei关键字:单片机  串口通信 手机看文章 扫描二维码
随时随地手机看文章
1、串行通信概述
(1)计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。
•     通信的基本方式可分为并行通信和串行通信两种。
•     并行通信通常是将数据字节的各位用多条数据线同时进行传送,如图1所示。并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。 
•     
串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传输,如图2所示。 串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。 
目前串行通信在单片机双机、多机以及单片机与PC机之间的通信等方面得到了广泛应用。
(2)同步通信和异步通信
1、异步通信
     异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。
 
    异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。
 
异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。
同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过两种方法实现。 
同步通信的特点是以特定的位组合“01111110”作为帧的开始和结束标志,所传输的一帧数据可以是任意位。所以传输的效率较高,但实现的硬件设备比异步通信复杂。
(3)串行通信的传输方向
1、单工
单工是指数据传输仅能沿一个方向,不能实现反向传输。
2、半双工
半双工是指数据传输可以沿两个方向,但需要分时进行。
3、全双工
全双工是指数据可以同时进行双向传输。
 
(4)串行通信的错误校验 
 
(5)传输速率与传输距离  
1、传输速率
比特率是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的比特率为:
        10位×240个/秒 = 2400 bps
(6)RS-232C电平与TTL电平 [page]
2、串行通信编程时主要应注意的事项
3、51单片机串行口结构
串行口电路也称为通用异步收发器(UART).从原理上讲,一个UART应包括发送器电路、接收器电路和控制电路。51单片机的UART已集成在其中,构成一个全双工串行口,这个口即可以用于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存器使用。
80C51的串行口通过引脚RXD(P30,串行口数据接收端)和引脚TXD(P31,串行数据发送端)与外疗设备进行串行通信。如图3为单片机串行口的结构。
图中共有两个串行口缓冲寄存器(SBUF),一个是发送寄存器,一个是接收寄存器,以便单片机能以全双工方式进行通信。串行发送时,从片内总线向发送SBUF写入数据;接收时,从接收SBUF向片内总线读出数据。它们都是可寻址的寄存器,但因为发送和接收不能同时进行,所以给这两个寄存器赋以同一地址99H.
在接收方式下,串行数据通过引脚RXD(P30)进入,由于在接收寄存器之前还有移位寄存器,从而构成了串行接收的双缓冲结构,以避免在数据接收过程上中出现帧重叠错误,即在下一帧数据来时,前一帧数据还没有读走。
在发送方式下,串行数据通过引脚TXD(P31)发出。与接收情况不同的,发送数据时,由于CPU是主动的,不会发生帧重叠错误,因此发送电路就不需又重缓冲结构,这样可以提高数据发送的速度。
4、相关的寄存器
与串口通信相关的相关的寄存器主要有四个,串行口控制寄存器SCON、电源控制寄存器PCON、定时器工作方式寄存器TMOD、定时器控制寄存器TCON、中断允许寄存器IE,后面主要跟波特率设置及中波相关,前面在讲中断和定时器已作过介绍,所以这里只对SCON和PCON寄存器进行介绍。
(1)串行控制寄存器SCON
串行控制寄存器SCON用于设置串行口的工作方式、监视串行口的工作状态、控制发送与接收的状态等。它是一个既可以字节寻址又可以位寻址的8位特殊功能寄存器。其格式如下。
(1)SM0 SM1:串行口工作方式选择位。其状态组合所对应的工作方式如表9-1所示。
(2) SM2:多机通信控制器位。在方式0中,SM2必须设成0。在方式1中,当处于接收状态时,若SM2=1,则只有接收到有效的停止位“1”时,RI才能被激活成“1”(产生中断请求)。在方式2和方式3中,若SM2=0,串行口以单机发送或接收方式工作,TI和RI以正常方式被激活并产生中断请求;若SM2=1,RB8=1时,RI被激活并产生中断请求。
(3) REN:串行接受允许控制位。该位由软件置位或复位。当REN=1,允许接收;当REN=0,禁止接收
(4) TB8:方式2和方式3中要发送的第9位数据。该位由软件置位或复位。在方式2和方式3时,TB8是发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=1表示地址,TB8=0表示数据。TB8还可用作奇偶校验位。
(5) RB8:接收数据第9位。在方式2和方式3时,RB8存放接收到的第9位数据。RB8也可用作奇偶校验位。在方式1中,若SM2=0,则RB8是接收到的停止位。在方式0中,该位未用。
(6)TI:发送中断标志位。TI=1,表示已结束一帧数据发送,可由软件查询TI位标志,也可以向CPU申请中断。
注意:TI在任何工作方式下都必须由软件清0。
    (7)RI:接收中断标志位。RI=1,表示一帧数据接收结束。可由软件查询RI位标志,也可以向CPU申请中断。
 注意:RI在任何工作方式下也都必须由软件清0。
 在AT89C51中,串行发送中断TI和接收中断RI的中断入口地址是同是0023H,因此在中断程序中必须由软件查询TI和RI的状态才能确定究竟是接收还是发送中断,进而作出相应的处理。单片机复位时,SCON所有位均清0。
 3、电源控制寄存器PCON
在串口通信时,我们只用PCON寄存器的SMOD位,这一位主要跟波特率的设置有关。下面仅对这一位进行介绍。
SMOD:串行口波特率倍增位。在工作方式1~工作方式3时,若SMOD=1,则串行口波特率增加一倍。若SMOD=0,波特率不加倍。系统复位时,SMOD=0。
5、串行口的工作方式
51单片机的串行口共有四种工种方式,分别为工作方式0、工作方式1、工作方式2及工作方式3,如图1所示。采用何种工作方式主要靠串行口控制寄存器SCON中的SM0和SM1来决定。不同的工作方式,其一次传送的数据位多少不同,同时,波特率的大小的设置也不同。
图1 串行口的四种工作方式
(1)发送和接收
为了便于大家撑握,这里只介绍工作方式1,其它工作方式大家用到时再自行学习。工作方式1每次传送一帧数据为10位,1 个起始位、1 个停止位和8个数据位,低位在前,高位在后,如图2所示。[page]
图2 方式1的数据帧格式
在写程序时,需看懂数据发送和接收的时序图,分别如图3、图4所示。数据发送时使用的是单片机的TXD(P31)引脚,接收时使用的单片机的RXD(P30)引脚,这里我们结合这两个引脚对时序进行分析。
图3 方式1发送时的时序图
图4 方式1数据接收时的时序图
 
首先我们单片机如何发送和接收一个数据。
发送时,数据从TXD(P31)端输出,当TI=0时,执行数据写入发送缓冲器SBUFF指令时,就启动了串行口数据的发送指令。启动发送后,串行口自动在起始位清0,而后是8位数据位和1位停止位,一帧数据是10位。数据依次从TXD端发出,一帧数据发送完毕,使TXD端的输出线维持在1状态下,并将SCON寄存器中的TI置1,以便查询数据是否发送完毕或作为发送中断请求信号。TI必须由软件清0。
接收时,数据从RXD(P30)端输入,SCON的REN位应处于允许接收状(REN=1)。在此前提下,串行口采样RXD端,当采样从1向0的状态跳变时,就认定是接收一起始位。随后在移位脉冲的控制下,把接收到的数据位移入寄存器中,直接停止位到来之后把停止位送入RB8中,并置位中断标志位RI,通知CPU从SBUF取走接收到的一个字符。
(2)波特率的设定
工作方式1的波特率是可变,波特率的产生与定时器1有关,其产生的电路如图4所示。
图4 方式1的波特率产生电路
以定时器T1作为波特率发生器使用,其值由定时器1的计数溢出率来决定,其公式为:
其中,T1溢出率为一次定时时间的倒数,即:
上式中,X为计数器的初值,M由定时器T1的工作方式所决定,即M=8、13或16,当定时器1作波特率发生器使用时,一般选用工作方式。之所以选择工作方式2,是因为它具有自动加载功能,可以避免通过程序的反复装入初值所引起的定时误差,使波特率更加稳定。因此,对于定时器T1的工作方式2,其溢出率又可简化为:
此时,波特率为:
因此计数初值X的值为;
例如,设两机通信的波特率为2400波特,若晶振频率为12MHZ,串行口工作在方式1,用定时器T1作为波特率发生器,先定时器工作在方式2(要禁止T1中断,以免产生不必要的中断带来的频率误差)。
若SMOD=1,则计数值X的值为:
若SMOD=1,则计数值X的值为:
5程序举例
在具体操作前,需对与串行口相关的寄存器作一些设置,主要用来设置跟波特率产生相关的定时器1、串行口工作方式以及中断的一些设置,具体如下
(1)确定定时器的工作方式
(2)计算定时器的初值
(3)启动定时器
(4)设置SCON寄存器
(5)中断设置
例1 串口发送程序
例2 串口接收程序
源代码详见: http://www.51hei.com/mcu/2670.html
关键字:单片机  串口通信 引用地址:第11课 串口通信

上一篇:51单片机头文件reg51.h详解
下一篇:第9课 定时器

推荐阅读最新更新时间:2024-03-16 14:02

基于51单片机驱动A4988实现步进电机逆时针转动
一、简介 A4988 是一款完全的微步电动机驱动器,带有内置转换器,易于操作。该产 品可在全、半、1/4、1/8 及 1/16 步进模式时操作双极步进电动机,输出驱动 性能可达 35 V 及 ±1 A。A4988 包括一个固定关断时间电流稳压器,该稳压器 可在慢或混合衰减模式下工作。转换器是 A4988 易于实施的关键。只要在“步 进”输入中输入一个脉冲,即可驱动电动机产生微步。无须进行相位顺序表、高 频率控制行或复杂的界面编程。 二、接线 典型接线图 实际接线 此处为方便 MS1-MS3不接ENABLE 低电平有效 此处不接 有需要可自行连接配置 A4988 模块 STC89C52RC 步进电机 电源 DIR P
[单片机]
基于51<font color='red'>单片机</font>驱动A4988实现步进电机逆时针转动
51单片机学习笔记6 -- 定时器中断
1.引脚复用 通过原理图可以发现定时器0(T0)和定时器1(T1)是P3.4引脚和P3.5引脚的复用功能,当将这两个引脚配置为定时器功能时,引脚外接的传感器(模块)将不能正常使用,即引脚同一时间只能作为一个功能使用(普通I/O或复用功能) T0、T1是两个16位定时器/计数器,每经过1个机器周期内部的16位计数寄存器的值加1,当计数器装满时会溢出,在定时模式时单次最大的定时时间是 65535*1.085us 的时间(单位us) 2.定时器配置 定时器0配置需要用到的寄存器(TCON、TMOD、TL0、TH0) 1.定时器/计数器控制寄存器TCON TCON为定时器/计数器T0、T1的控制寄存器,同时也锁存T0、T1溢出
[单片机]
51<font color='red'>单片机</font>学习笔记6 -- 定时器中断
ADC0832模数转换MSP430单片机程序+电路图
下面是电路图: ADC0832封装图 ADC0832与单片机连接图 ADC0832时序图 程序源码下载: #include msp430f2121.h #define DO (P1IN&BIT7) #define uchar unsigned char #define uint unsigned int /*********************************************** sbit cs=P2^0; sbit clk=P2^1; sbit DI=P2^2; sbit DO=P2^6; ***************************************
[单片机]
ADC0832模数转换MSP430<font color='red'>单片机</font>程序+电路图
PIC单片机将2个16进制数转换为5位十进制数并显示
#INCLUDE P16F877.inc W_TEMP EQU 20H ; 实际上20H、A0H、120H和1A0H STATUS_TEMP EQU 21H ;在体0中建立保护单元 PCLATH_TEMP EQU 22H ;在体0中建立保护单元 ORG 000H GOTO A1 ORG 004H;定时中断入口地址 GOTO ZD01; ORG 0CH A1 MOVLW 1;位1显示数 MOVWF 5AH; MOVLW 2;位2显示数 MOVWF 5BH; MOVLW 3;位3显示数 MOVWF 5CH; MOVLW 4;位4显示数 MOVWF 5DH; MOVLW 4;显示位数 MO
[单片机]
AT89S51单片机与82C55接口芯片的设计
1.硬件接口电路 下图所示为AT89S51单片机扩展一片82C55的电路图。图中,74LS373是地址锁存器,P0.1、P0.0经74LS373与82C55的地址线A1、A0连接;P0.7经74LS373与片选端CS相连,其他地址线悬空;82C55的控制线RD(的反)、WR(的反)直接与AT89S51单片机的RD(的反)和WR(的反)端相连;AT89S51单片机的数据总线P0.0~P0.7与82C55的数据线D0~D7连接。 2.确定82C55端口地址 图中82C55只有3条线与AT89S51单片机的地址线相接,片选端CS、端口地址选择端Al、A0,分别接于P0.7、P0.1和P0.0,其他地址线全悬空。显然只要保证PO.7为
[单片机]
AT89S51<font color='red'>单片机</font>与82C55接口芯片的设计
16位Σ-Δ A/D转换器AD7705与微控制器的接口设计
   AD7705是 AD公司新推出的16位Σ-ΔA/D转换器。器件包括由缓冲器和增益可编程放大器(PGA)组成的前端模拟调节电路,Σ-Δ调制器,可编程数字滤波器等部件。能直接将传感器测量到的多路微小信号进行A/D转换。这种器件还具有高分辨率、宽动态范围、自校准、优良的抗噪声性能以及低电压低功耗等特点,非常适合仪表测量、工业控制等领域的应用。它采用三线串行接口,有两个全差分输入通道,能达到0.003%非线性的16位无误码数据输出,其增益和数据输出更新率均可编程设定,还可选择输入模拟缓冲器,以及自校准和系统校准方式。工作电压3 V或5 V。3 V电压时,最大功耗为1 mW,等待模式下电源电流仅为8 μA。    1 内部结构
[模拟电子]
单片机处理触摸按键例程
//文件touchbutton.h #ifndef _TOUCHBUTTON_H_ #define _TOUCHBUTTON_H_ //=========宏定义=========================================== #define DEF_WATCH_TKREFER //查看参考 -用于测试 //=========================================================== #define V_REFER 1 //AD值超过此值 更新参考值 #define V_PRESS 7 //AD值-参考 大于此
[单片机]
<font color='red'>单片机</font>处理触摸按键例程
单片机内部模拟比较器的应用
一般来说,内部带A/D转换器的单片机价格都比较昂贵,而且一般只有8到10位的分辨率,这在高分辨率要求的场合显然不适用;而普通的单片机则根本没有A/D转换器。随着现代电子技术的发展,出现了一些体积小、内含模拟比较器的单片机,如ATMAL的AT89C2051、ZILOG的Z86E04、MICROCHIP的PIC16C620等,这些单片机在使用时连接比较器的端口一般只作普通I/O使用,而对其内置的模拟比较器的应用却很少。下面以AT89C2051为例,谈谈利用单片机内置模拟比较器来构成A/D转换器的新方法。 1 硬件转换电路 AT89C2051是MCS51单片机系列中的一种,它虽然只有20个引脚,却集成了51系列单片机的标准内核,
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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