版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
9.1串行通信的概念通信是单片机的一个重要功能,在网络日益普及的今天,随着物联网的出现,单片机的通信功能越发受到人们的重视。计算机通信有两种方式,并行方式和串行方式。并行方式一次可以传输多个字节的数据,每个数据位占用一根数据线,如图9.1所示。并行方式传输数据不要求固定的格式,通信控制简单,传输速度快,这些是并行方式的优点。但是并行方式需要使用较多的数据线,长距离通信时成本较高,并且抗干扰能力差,所以并行方式仅被使用在短距离的通信中,如:同一个机箱中各插板之间的数据传输,同一个插板上各部件之间的数据传输,集成电路内部的数据总线。下一页返回9.1串行通信的概念串行方式每次传输一个数据位,只需要一根数据线,如图9.2所示。在发送数据时,先将并行数据转换成串行数据,也就是将数据字节转换成一位一位的形式,依次在数据线上传送。在接收数据时再将收到的串行数据重新转换成并行数据,进行处理。串行方式使用的数据线较少,传输的成本较低,比较适合于长距离的传输。但相对于并行方式,串行方式的传输控制要复杂一些。9.1.1串行通信的基本方式串行通信又分为同步和异步两种方式。1.同步串行通信同步串行通信时,发送方的时钟对接收方的时钟直接控制,使双方保持完全的同步。有两种方法可实现这种控制,一种方法被称为外同步,另一种方法被称为自同步。上一页下一页返回9.1串行通信的概念外同步方式,在发送方和接收方之间提供一条独立于数据线的时钟信号线,用来从发送方向接收方发送时钟信号,如图9.3所示。发送方在每个比特周期都向接收方发送一个时钟脉冲,这样,通信双方就可以使用相同的时钟。时钟信号在长距离传输时会发生失真,所以外同步方式只适用于短距离通信。自同步方式,利用特殊的编码方式,使数据信号中包含时钟信号。数据信号和时钟信号同时在同一根数据线上传输,如图9.4所示。曼彻斯特编码就是一种自同步编码,在曼彻斯特编码中,用电压跳变的相位不同来区分1和0,即用正的电压跳变表示0,用负的电压跳变表示1。因此,这种编码也称为相位编码。由于跳变都发生在每一个码元的中间,接收端可以方便地利用它作为位同步时钟。上一页下一页返回9.1串行通信的概念在同步串行通信时,除了传输时钟信号外,还需要标识出数据块的开始和结束。有两种同步串行通信的格式,它们采用不同的方式标识数据块的开始和结束。这两种格式分别是面第9章单片机的串行通信169向位的同步格式和面向字符的同步格式。面向位的同步格式,如图9.5所示,以01111110作为数据块的开始和结束标志。如果在数据块中连续出现了5个1,那么就在后面插入一个0,使得在数据块中不会出现01111110。接收方会自动将数据块中额外插入的0删除,将数据恢复成原来的数据。上一页下一页返回9.1串行通信的概念2.异步串行通信异步串行通信是指通信双方采用相同的时钟,各自控制数据的发送和接收,如图9.7所示。异步通信以字符为单位进行传输,每次顺序地传输一个字符的各个位,字符与字符之间可以有间隔,并且间隔的大小是任意的。在异步通信的时候,每个字符都按照起始位、数据位、校验位、停止位的格式进行传输,格式如图9.8所示。其中起始位占1位,用低电平表示,然后是5~8位数据位,低位在前,高位在后,数据位后可带一个奇偶校验位,最后是停止位,用高电平表示,停止位可以是1位、1位半或2位。上一页下一页返回9.1串行通信的概念3.串行通信的制式串行通信根据其传输方向的不同分为三种制式:单工、半双工、全双工。单工指的是发送端仅能发送数据,接收端仅能接收数据,数据只能沿一个方向传输。半双工指的是数据线的两端各有一个发送器和一个接收器,两端都能发送数据和接收数据,但是不能同时发送或同时接收,在同一时刻,数据只能沿一个方向传输。全双工指的是数据线的两端可以同时发送或接收数据。4.错误校验串行通信的目的是正确地传输数据,所以需要对接收到的数据进行校验,检查收到的数据是否是正确的,是否需要重新传输。常用的校验方法有奇偶校验、代码和校验及循环冗余码校验。上一页下一页返回9.1串行通信的概念奇偶校验:在串行通信的时候,数据位的后面紧跟着一位检验位。如果使用奇校验,那么数据位中的1的个数与校验位1的个数之和应为奇数。如果是偶校验,那么数据位中1的个数与校验位1的个数之和应为偶数。在接收的时候,如果1的个数与校验位的值一致,则说明传输正确,否则说明传输错误,需要重传数据。奇偶校验只能检错,不能纠错。而且只能检测1位误码,检测出有错后只能要求重发,没法纠正。代码和校验:发送端将数据块中的字节求和,产生一个字节的校验和,附在数据块的末尾发送给接收端。接收端对数据块中各字节求和,产生一个字节的校验和,然后与发送端计算出的校验和进行比较,如果相同,则说明传输无误,否则说明传输过程中出现了错误。上一页下一页返回9.1串行通信的概念循环冗余校验:是一种根据网络数据或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。生成的数字在传输或者存储之前计算出来并且附加到数据后面,然后接收端进行检验确定数据是否发生变化。一般来说,循环冗余校验的值都是32位的整数。由于该方法易于采用二进制的电脑硬件使用,容易进行数学分析并且尤其善于检测传输通道干扰引起的错误,因此广泛应用于磁盘信息的传输、存储区的完整性校验、同步通信等领域。9.1.2串行通信的波特率数据的传输速率可以用比特率表示。比特率是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。上一页下一页返回9.1串行通信的概念如果串行传输的字符的格式为1个起始位、8个数据位、1个停止位,那么每传输一个字符就是10个比特,如果每秒传输240个字符,那么串行传输的比特率就是10×240=2400(bps)。在数据通信中也经常用波特率表示数据的传输速率。波特率表示每秒钟调制信号变化的次数,并不一定会和比特率相等。如果一个调制信号只携带一个比特的数据,那么波特率就和比特率相等。如果一个调制信号携带二个比特的数据,那么波特率就会是比特率的2倍。9.1.3串行通信的标准接口RS-232也称标准串口,是最常用的一种串行通信接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通信的标准。上一页下一页返回9.1串行通信的概念它的全名是“数据终端设备(DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准”。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座(DB25),后来使用简化为9芯D型插座(DB9),现在应用中25芯插头座已很少采用。串口有阴阳之分,9芯阳头串口如图9.9所示,上排从左到右分别是1号引脚至5号引脚,对应的阴头串口与之相反,从右到左分别是1号引脚至5号引脚。各引脚的功能定义见表9.1。9.1.4RS-232电平与TTL电平的转换51系列单片机使用的是TTL电平,当51系列单片机与计算机的RS-232串口相连的时候,由于两者的电平不同,因此需要在两者之间加一个电平转换电路。上一页下一页返回9.1串行通信的概念图9.10是一个典型的RS-232电平与TTL电平转换电路,通过这个电路我们可以了解两种电平之间的转换过程。在图9.10中,TXD和RXD接51单片机,PCRXD和PCTXD接PC机的RS-232串口。当TXD输出低电平0时,Q3导通,于是PCRXD为高电平+3~+15V,PC读取到0。目前在实现TTL电平与RS-232电平转换的时候,通常使用MAX232等芯片,其内部的电平转换电路类似于图9.10。MAX232芯片只需要一个+5V的电源供电,片载的电压变换电路具有升压和电压极性反转的能力,能够产生RS-232所需要的+10V和-10V电压。MAX232芯片功耗低,集成度高,片外只需接4个电容即可工作。上一页下一页返回9.1串行通信的概念MAX232芯片有16个引脚,其结构和功能如图9.11所示。这16个引脚分为三个部分:第一部分是电压变换电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+10V和-10V两个电压,提供给RS-232串口。第二部分是数据转换通道,由7、8、9、10、11、12、13、14脚构成两个数据通道。上一页返回9.2串行通信的结构及工作方式9.2.1串行通信的结构51系列单片机有一个可编程的全双工串行通信口,它可作为UART(通用异步收发器),也可作同步移位寄存器。其帧格式可为8位、10位或11位,并可以设置多种不同的波特率。通过引脚RXD(P3.0)和引脚TXD(P3.1)与外界进行通信。其基本结构如图9.12所示。接收缓冲器是双缓冲结构,在前一个字节从接收缓冲器读出之前,就开始接收第二个字节,第二个字节输入至移位寄存器,若在第二个字节接收完毕而前一个字节未被读走时,第二个字节就会被写入接收缓冲器,覆盖前一个字节的内容。而发送数据时,发送的操作是CPU的主动行为,所以发送缓冲器中的数据不会丢失。下一页返回9.2串行通信的结构及工作方式51单片机在开始使用串口通信前,需要先设置中断允许寄存器IE,将EA和ES两个中断允许位置1。每当串口发送完一个字符或接收完一个字符时,都会自动将TI或RI置1,进入中断处理程序。TI与RI都是串口控制寄存器SCON中的标志位。SCON是一个与串口通信紧密相关的寄存器,如表9.2所示,各位功能如下:SM0和SM1:串行口工作方式选择位。可选择4种工作方式,如表9.3所示。在不同的工作方式下,波特率是不同的,其中方式0和方式2的波特率是固定的,取决于单片机的晶振频率。而方式1和3的波特率由计数器T1的溢出率决定,随着T1中初值的不同,溢出率也不一样。上一页下一页返回9.2串行通信的结构及工作方式T1的溢出率就是T1的溢出频率,也就是从装入初值到溢出这段时间的倒数。如果在给T1装入初值的时候,采用在中断处理程序中装入初值的方法,那么每次进出中断都会花费少量的时间,积少成多就会影响计时的精确度。为了避免这种误差,所以应该采用计数器的工作方式2,将计数器T1当作一个自动重装初值的8位计数器来使用,将计算出来的初值放入TH1中,每次溢出时都自动将TH1中的初值装入TL1中。表9.4中给出了串口工作于方式1、T1工作于方式2下波特率与初值的对照表:上一页下一页返回9.2串行通信的结构及工作方式9.2.2串行通信的工作方式51系列单片机的串口有四种工作方式,由SCON的SM0、SM1设定。当串口工作于方式0时,串口为同步移位寄存器的输入输出方式。主要用于扩展并行输入输出口。数据由RXD引脚输入或输出,同步移位脉冲由TXD引脚输出。输出时,对发送数据缓冲器SBUF写入一个数据,就开始了串口的发送过程。内部的定时逻辑在SBUF写入数据之后,经过一个完整的机器周期,输出移位寄存器中输出位的内容送RXD引脚输出。同步移位脉冲由TXD引脚输出,它使RXD引脚输出的数据移入外部移位寄存器,如图9.13(a)所示。当数据的最高位D7移至输出移位寄存器的输出位时,再移位一次后就完成了一个字节的输出,中断标志TI置1。在发送下一字节数据前,必须用软件将TI清0。上一页下一页返回9.2串行通信的结构及工作方式输入时,设置接收允许位REN为1,中断标志RI为0时,就会启动串口接收过程。RXD引脚为串行输入引脚,同步移位脉冲由TXD引脚输出。当接收完一帧数据后,由硬件将输入移位寄存器中的内容写入SBUF,中断标志RI置1。如要再接收数据,必须用软件将RI清0。方式0不适合单片机之间的通信,因为通信双方的TXD引脚都要输出时序脉冲。所以方式0适合于单片机外接一个被动的串行设备,例如8位的串入并出移位寄存器74LS164。当串口工作于方式1时,是10位的异步串行通信端口,其中8位数据位。从TXD引脚发送数据,RXD引脚接收数据。上一页下一页返回9.2串行通信的结构及工作方式输入时,用软件置REN为1,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明接收到起始位,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。当串口工作于方式2、3时,是11位的异步串行通信端口,其中9位数据位。第9位数据位是附加位,发送时是SCON中的TB8,接收时为RB8。两种方式下的数据传输过程是一样的,不同之处在于它们的波特率。在方式2下,波特率固定为晶振频率的1/64或1/32,而在方式3下,波特率是可变的,由计数器T1的溢出率决定。上一页下一页返回9.2串行通信的结构及工作方式输出时,当执行写SBUF指令时,就开始了串口发送过程。SCON的TB8位写入移位寄存器的第9位,8位数据写入SBUF。首先把起始位从TXD引脚输出,其他位在移位寄存器中顺次移位,停止位写入移位寄存器的第9位。然后依次在TXD引脚上输出8位数据,低位在前,接下来是附加位TB8,最后是停止位。然后控制电路置位TI为1,请求中断。输入时,置位REN为1,接收器就开始以所选频率的16倍速率开始取样RXD引脚的电平状态,当检测到RXD引脚发生负跳变时,说明接收到起始位,将其移入输入移位寄存器,开始接收这一帧数据。当顺次接收完一帧数据后,如果RI=0,且SM2=0(或接收到的第9位数据为1,也就是说RB8=1),则将接收到的8位数据写入SBUF,第9位数据位写入RB8,置位RI为1,申请中断。如果上述条件未被满足,则接收到的数据被舍弃,不写入SBUF,且不置位RI,继续扫描RXD引脚,接收数据。上一页返回9.3串行口的应用在进行串口通信的时候,有几个相关的特殊寄存器需要进行初始化设置,包括串口控制寄存器SCON、电源管理寄存器PCON、计数器T1和中断允许寄存器IE。初始化的进程如下:首先是设置串口的工作方式(也就是SCON中的SM0和SM1)。然后是设置串口通信的波特率,其步骤如下:(1)设置计数器T1工作于方式2(TMOD中对应于T1的M1和M0)。(2)设置计数器T1的初值(TH1和TL1)。(3)设置波特率的倍频位(PCON中的SMOD)。(4)启动计数器T1(TCON中的TR1)。(5)最后是打开中断(IE中的EA和ES)。下一页返回9.3串行口的应用9.3.2单片机与PC通信在51单片机与PC机进行通信的时候,两者之间需要增加一个电平转换电路,将51单片机串口的TTL电平转换成RS-232电平,然后再用串口线连接到PC机的串口上。如果是用开发板进行学习,那么只需要将编译好的程序下载到开发板上,把开发板的串口与PC的串口用串口线连接起来即可。然后在PC机上运行一个串口调试助手的小程序,就可以看到单片机与PC串口通信的现象。上一页下一页返回9.3串行口的应用安装好VSPD之后就可以添加虚拟串口,如图9.16所示,Physicalports是PC机上的物理串口,设置端口一为COM4,端口二为COM3,然后单击“添加端口”按钮,就可以在Virtualports中看到添加的虚拟端口COM4和COM3,并且这两个虚拟端口是相连的,也就是说从COM4发送的数据会被COM3收到,从COM3发送的数据会被COM4收到。在主函数中,首先是对于单片机的初始化,设置串口工作于方式1下,并允许串口接收数据。设置计数器T1工作于方式2下,自动重装初值,初值为0xFD,也就是说,波特率为9600。while循环中的代码用于将串口收到的数据发送出去。当flag=1时,表示串口收到一个字符,且保存在了c中。上一页下一页返回9.3串行口的应用串口中断处理函数fun用于接收数据。如上所述,在主函数中发送数据不会进入中断处理程序,所以进入串口中断处理函数一定是因为接收到了一个数据。首先要将RI清0,然后将flag置1,表示收到数据,最后将收到的字符暂存于变量c中。在串口调试助手中,每向单片机发送一个字符时,就会在接收窗口中显示单片机发回的字符。依次发送9.3.3双机通信可以将两个51单片机连在一起,实现双机通信。在进行双机通信的时候,根据双机的距离不同,应该选择不同的连接方法。上一页下一页返回9.3串行口的应用如果双机的距离在5m以内,可以选择将双机的串口直接连在一起,用TTL电平通信。在使用TTL电平时,甲机的TXD要接到乙机的RXD,甲机的RXD要接到乙机的TXD。并且要将双机的地线连接在一起,使双机的高低电平一致,确保串口收发的信号能够被正确识别。如果距离在5m以上,那么就要在双机之间增加电平转换电路,在发送端,将TTL电平转换成RS-232电平,在接收端,将RS-232电平转换成TTL电平。上一页下一页返回9.3串行口的应用使用RS-232电平双机通信的电路如图9.20所示,需要进行电平转换,由单片机出来的TTL电平,经过MAX232芯片的转换,变成RS-232电平,然后使用交叉串口线连接双机的RS-232串口即可。甲机的代码如下:在上面的代码中,数组seg中依次保存了共阴极数码管显示0~9的十六进制编码,位变量button为连接按键的引脚值,用于判断按键何时被按下,当按键被按下时,处于导通状态,引脚读数为0。其他时候,引脚读数为1。主函数中,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护士在静脉曲张管理中的作用
- 2026年导游证笔试模拟题及答案解析
- 数据挖掘流程与应用技巧介绍
- 2025云南临沧市沧源佤族自治县医共体总医院班洪分院招聘编外工作人员3人备考题库及参考答案详解一套
- 安全生产智能测试平台讲解
- 四川省成都市第十一中学2026年1月储备教师招聘备考题库附答案详解
- 品牌策划职业发展路径
- 宜宾市审计备考题库中心2025年第二次公开考核招聘工作人员领取笔试准考证备考题库及答案详解参考
- 2026重庆市北碚区教育事业单位面向应届高校毕业生考核招聘工作人员31人备考题库及答案详解(考点梳理)
- 2026浙江绍兴市强制医疗所招聘编外人员2人备考题库及一套答案详解
- 心力衰竭药物治疗的经济评估与成本效益分析
- 道路绿化养护投标方案(技术方案)
- QA出货检验日报表
- 校服采购投标方案
- 中外建筑史课件
- 三年级小学英语阅读理解
- 母婴保健-助产技术理论考核试题题库及答案
- dd5e人物卡可填充格式角色卡夜版
- 海克斯康机器操作说明书
- GB/T 6003.1-1997金属丝编织网试验筛
- GB/T 24207-2009洗油酚含量的测定方法
评论
0/150
提交评论