第8章 串行通信接口.ppt_第1页
第8章 串行通信接口.ppt_第2页
第8章 串行通信接口.ppt_第3页
第8章 串行通信接口.ppt_第4页
第8章 串行通信接口.ppt_第5页
免费预览已结束,剩余42页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章串行通信接口及扩展技术,本章主要内容,8.1基本概念8.2MCS-51串行通信口结构8.3MCS-51串行通信口的工作方式8.4串行通信中波特率的设置8.5MCS-51串口应用举例8.6单总线接口及其应用举例8.7I2C总线接口及其应用举例8.8SPI总线接口及其应用举例,8.1串行通信基本概念,并行:数据各位同时进行传送串行:数据逐位顺序进行传送串行通信的基本特征是数据逐位顺序进行传送,串行通信可用一根数据线传送多位信息,速度较慢,可大大节省硬件投资,适用于远距离通信。串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平等)不同,形成了多种串行通信的协议与接口标准。常见的有:通用异步收发器(UART)MCS-51的串口通用串行总线(USB)I2C总线CAN总线SPI总线RS-485,RS-232C,RS-422A标准等等,8.1.1数据通信的传输方式,常用于数据通信的传输方式有单工、半双工、全双工和多工方式。单工方式:数据仅按一个固定方向传送。半双工:数据收/发不可同时进行全双工:数据收/发可同时进行,8.1.2串行数据通信两种形式,异步串行通信:以字符为单位进行传送。异步通信用一帧来表示一个字符,其内容如下:一个起始位,接着是若干个数据位,一个停止位。传输35H的数据格式如下图所示。同步串行通信:以数据块为单位进行传送。每组数据加同步字符。,8.1.3波特率,波特率(Bandrate),即数据传输速率,是指每秒钟传送的二进制代码的位数,单位是bps(bitpersecond)【例】假设异步通信数据传送速率是120字符/秒,而每个字符格式包含10个代码位(1个起始位、1个停止位、8个数据位),则波特率为:12010=1200bps。每位代码的传送时间是1/12000.833ms。异步通信的波特率在50bps19200bps之间,常用于计算机到终端机和打印机之间的通信。,8.1.4串行通信的物理标准RS-232C,RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(ElectronicIndustryAssociation)代表美国电子工业协会,RS(recommendedstandard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS-232B、RS-232A。目前在IBMPC机上的COM1、COM2串行接口,就是采用RS-232C标准。RS-232C对电器特性、逻辑电平和各种信号功能都作了规定。RS-232C采用负逻辑,将数据线上的-3V-15V电平规定为信号“1”,+3V+15V电平规定为信号“0”。这与TTL电路以高低电平表示逻辑状态的规定不同。因此,为了使PC机能够同TTL器件连接,必须在RS-232C与TTL电路之间进行电平和逻辑关系的变换。,8051与PC机串行通信接口电路,8.2MCS-51串行通信口结构,51单片机的串行接口结构图下:,8.2.1串行口数据寄存器SBUF,串口有两个同名的接收/发送缓冲寄存器SBUF,可以实现全双工通信。指令MOVSBUF,A启动一次数据发送。指令MOVA,SBUF完成一次数据接收。,SM0SM1SM2RENTB8RB8TIRI,SCON,SM0,SM1:串行口4种工作方式的选择位。00方式0:8位移位寄存器I/O,波特率固定为fosc/1201方式1:8位UART(1+8+1位),波特率可变,按公式计算10方式2:9位UART(1+8+1+1位),波特率固定=foscx1/32或1/6411方式3:9位UART(1+8+1+1位),波特率可变,按公式计算,SM2:串行口多机通信控制位(作为方式2、方式3的附加控制位),8.2.2串行通信控制寄存器SCON,RI,TI:串行口收/发数据申请中断标志位。1申请中断,0不申请中断。接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对RI/TI清0,以备下一次收/发。,TB8:方式2、3中,是要发送的第9位数据。多机通信中,TB8=0表示发送的是数据;TB8=1表示发送的是地址。(也可奇偶校验),RB8:在方式2、3中,是收到的第9位数据。在多机通信中,用作区别地址帧/数据帧的标志。(也可作为奇偶校验标志),SM0SM1SM2RENTB8RB8TIRI,REN:串行口接收允许控制位。=1表示允许接收;=0禁止接收。SCON的地址是98H,可以位寻址,SCON,SMODGF1GF0PDIDL,8.2.3电源管理寄存器PCON(97H),SMOD:在串行口工作方式1、2、3中,是波特率加倍位=1时,波特率加倍=0时,波特率不加倍。(在PCON中只有这一个位与串口有关),GF1,GF0:用户可自行定义使用的通用标志位,PCON,PD:掉电方式控制位=0:常规工作方式。=1:进入掉电方式:振荡器停振片内RAM和SRF的值保持不变P0P3口维持原状。程序停止只有复位能使之退出掉电方式。PCON的地址是97H,不能位寻址,SMODGF1GF0PDIDL,PCON,IDL:待机方式(空闲方式)控制位=0:常规工作方式。=1:进入待机方式:振荡器继续振荡中断、定时器、串口功能继续有效片内RAM和SRF保持不变CPU状态保持、P0P3口维持原状程序停顿。中断和复位能退出待机,继续后面的程序。,SMODGF1GF0PDIDL,PCON,MCS-51串行接口的工作方式有四种,由SCON中的SM0、SM1定义。8.3.1串行口工作方式08位移位寄存器I/O方式,发送:SBUF中的串行数据由RxD逐位移出;TxD输出移位时钟,频率=fosc1/12;每送出8位数据TI就自动置1;需要用软件清零TI。,接收:串行数据由RxD逐位移入SBUF中;TxD输出移位时钟,频率=fosc1/12;每接收8位数据RI就自动置1;需要用软件清零RI。,8.3MCS-51串行通信口的工作方式,经常配合“串入并出”“并入串出”移位寄存器一起使用扩展接口。,方式0工作时,多用查询方式编程:发送:MOVSBUF,A接收:JNBRI,$JNBTI,$CLRRICLRTIMOVA,SBUF,工作方式0:8位移位寄存器I/O方式(续),复位时,SCON已经被清零,缺省值:方式0。,接收前,务必先置位REN=1允许接收数据。,串行口方式0的扩展应用,串行口常用工作方式0扩展出并行I/O口,工作方式1、2、3则常用于串行通信,AB,CLK,hgfedcba,CLR,AB,CLK,CLR,AB,CLK,CLR,+5V,74LS164,74LS164,74LS164,74LS164是串入并出芯片;74LS165是并入串出芯片,hgfedcba,hgfedcba,+5V,共阳LED数码管,VCC,TxD,RxD,51单片机,【例】利用串行口工作方式0扩展出8位并行I/O口,驱动共阳LED数码管显示09。,AB,CLK,hgfedcba,CLR,+5V,VCC,TxD,RxD,51单片机,74LS164,共阳LED数码管,根据上图编写的通过串行口和74LS164驱动共阳LED数码管(查表)显示0-9数字的子程序:DSPLY:MOVDPTR,#TABLEMOVCA,A+DPTRMOVSBUF,AJNBTI,$CLRTIRETTABLE:DB0C0H,0F9H,0A4HDB0B0H,99H,92HDB82H,0F8H,80H,90H,hgfedcba,累加器A,11000000,0C0H=“0”,10110000,0B0H=“3”,共阳极,hgfedcba,a,b,c,d,g,e,f,h,常用于串行通讯。除发/收8位数据外,还在D0位前有一个起始位“0”;在D7位后有一个停止位“1”。,方式1工作时:发送端自动添加一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位。,8.3.2串行口工作方式18位UART(1+8+1位)波特率可变,波特率可变用定时器T1作波特率发生器:公式:波特率=(2SMOD/32)T1的溢出率,波特率=(2SMOD/32)T1的溢出率,溢出率:T1溢出的频繁程度即:T1溢出一次所需时间的倒数。,初值X=2n-,2SMODfosc32波特率12,波特率=,2SMODfosc3212(2n-X),其中:X是定时器1的计数初值,常用波特率和T1初值查表,RxD引脚为接收端,TxD引脚为发送端,由波特率发生器T1控制发送速度。不同于方式0:收/发都需要由TxD送出移位时钟。,定时器1作波特率发生器时初始化包括:选定时器1工作在方式2(8位自动重装);将计算(或查表)出的初值X赋给TH1,TL1;启动T1(SETBTR1);注意:对T1不要开中断!,工作方式1的接收/发送,串行口的初始化包括:对SCON编程,选工作方式对PCON编程,设波特率加倍位“SMOD”(缺省值=0)如果是接收数据,仍要先置“1”REN位,SM0SM1SM2RENTB8RB8TIRI,SCON,SM0,SM1:串行口工作方式选择位。01:方式1,8位UART(1+8+1位),REN:串行口接收允许位。REN=1允许接收,串行口控制寄存器SCON的设置,01010000,TB8,RB8,TI,RI等位由运行中间的情况决定,可先写成“0”,SM2:串行口多机通信控制位,作为方式2、3的附加控制位,此处不用,可写成“0”,由于波特率固定,常用于单片机间通讯。数据由8+1位组成,通常附加的一位(TB8/RB8)用于“奇偶校验”。,8.3.3串行口工作方式29位UART(1+8+1+1位)两种波特率,方式2的波特率=fosc2SMOD/64即:fosc1/32或fosc1/64两种,奇偶校验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。换言之:如果奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。只能检测一位出错。,奇校验:8位有效数据连同1位附加位中,二进制“1”的个数为奇数偶校验:8位有效数据连同1位附加位中,二进制“1”的个数为偶数,约定接收采用奇校验若接收到的9位数据中“1”的个数为奇数,则表明接收正确,取出8位有效数据即可;若接收到的9位数据中“1”的个数为偶数,则表明接收出错,应当进行出错处理。,约定发送采用奇校验若发送的8位有效数据中“1”的个数为偶数,则要人为添加一个附加位“1”一起发送;若发送的8位有效数据中“1”的个数为奇数,则要人为添加一个附加位“0”一起发送。,采用偶校验时,处理方法与奇校验相反,工作方式2的奇偶校验用法,复习:程序状态字寄存器PSW中有一个奇偶状态位P,CY,AC,F0,RS0,OV,P,RS1,PSW.7,PSW.0,P(PSW.0):奇偶状态位。P=1表示目前累加器中“1”的个数为奇数P=0表示目前累加器中“1”的个数为偶数CPU随时监视着ACC的“1”的个数并自动反映在P,8.3.4串行口工作方式39位UART(1+8+1+1位)波特率可变,串口方式3和方式2唯一的区别是波特率机制不同。方式2的波特率固定为振荡周期的32或64分频,不可变。此工作方式与其他串行通讯设备连接困难,因此不常用。方式3的波特率可变,按前面的公式计算:,波特率=(2SMOD/32)T1的溢出率,波特率=,2SMODfosc3212(2n-X),其中:X是定时器初值,8.4串行通信中波特率的设置,MCS-51单片机串行通信的波特率随串行口工作方式选择不同而异,它除了与系统的振荡频率fosc,电源控制寄存器PCON的SMOD位有关外,还与定时器T1的设置有关。【例如】若系统时钟频率fosc为6MHz,当SMOD=1,通信波特率为2400bps时,时间常数为:设置波特率的初始化程序如下:INIT:MOVTMOD,#20H;设置定时器1工作在方式2MOVTH1,#0F3H;设置时间常数MOVTL1,#0F3HSETBTR1;启动计数器1MOVPCON,#80H;设置SMOD=1,MOVSCON,#50H;设置串口工作在方式1,8.5串口应用举例,8.5.1串行口初始化编程的一般格式SIO:MOVSCON,#控制状态字MOVPCON,#80H;波特率加倍MOVTMOD,#20H;定时器1作波特率发生器MOVTH1,#X;选定波特率MOVTL1,#XSETBTR1;启动定时器1SETBEA;开总中断SETBES;开串口中断,8.5.2异步通信程序举例,一、发送程序将片内RAM50H起始单元的16个数由串行口发送。要求发送波特率为系统时钟的32分频,并进行奇偶校验。,ORG0000HAJMPMAINTORG0023H;串行口中断入口AJMPTRANI;主程序MAINT:MOVSCON,#80H;串行口初始化,方式2MOVPCON,#80H;SMOD=1,波特率加倍SETBEASETBES;开串行口中断MOVR0,#50H;设数据指针MOVR7,#10H;数据长度LOOP:MOVA,R0;取一个字符MOVC,P;加奇偶校验MOVTB8,CMOVSBUF,A;启动一次发送HERE:SJMPHERE;CPU执行其它任务,;中断服务程序TRANI:PUSHACC;保护现场PUSHPSWCLRTI;清发送结束标志DJNZR7,NEXT;是否发送完?CLRES;发送完,关闭串行口中断SJMPTENDNEXT:INCR0;未发送完,修改指针MOVA,R0;取下一个字符MOVC,P;加奇偶校验MOVTB8,CMOVSBUF,A;发送一个字符POPPSW;恢复现场POPACCTEND:RETI;中断返回,二、接收程序串行输入16个字符,存入片内RAM的50H起始单元,波特率为2400。RECS:MOVSCON,#50H;串行口方式1允许接收MOVTMOD,#20H;T1方式2定时MOVTL1,#0F4H;写入T1时间常数MOVTH1,#0F4HSETBTR1;启动T1MOVR0,#50H;设数据指针MOVR7,#10H;接收数据长度WAIT:JBCRI,NEXT;等待串行口接收SJMPWAITNEXT:MOVA,SBUF;读取接收字符MOVR0,A;保存一个字符INCR0;修改指针DJNZR7,WAIT;全部字符接收完?RET,8.6单总线接口及其应用举例8.6.1单总线数据通信协议概述,单总线(1-Wire)是美国Dallas公司的一项专利技术。与目前广泛应用的其他串行数据通信方式不同,它采用单根信号线完成数据的双向传输,并同时通过该信号线为单总线器件提供电源,具有节省I/O引脚资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点,在电池供电设备、便携式仪器以及现场监控系统中有良好的应用前景。目前Dallas公司采用单总线技术生产的芯片包括数字温度计、数字电位器、A/D转换器、定时器、RAM与EEPROM存储器、线路驱动器以及微型局域网耦合器等系列器件。,单总线技术有3个显著的特点:单总线芯片通过一根信号线进行地址信息、控制信息和数据信息的传送,并通过该信号线为单总线芯片提供电源;每个单总线芯片都具有全球唯一的访问序列号,当多个单总线器件挂在同一单总线上时,对所有单总线芯片的访问都通过该唯一序列号进行区分;单总线芯片在工作过程中,不需要提供外接电源,而通过它本身具有的“总线窃电”技术从总线上获取电源。此外,单总线技术采用特殊的总线通信协议实现数据通信。在通信过程中,单总线数据波形类似于脉冲宽度调制信号,总线发出复位信号(保持低电平的周期最长)同步整个总线,然后由系统主机初始化每一位数据时隙,利用宽脉冲或窄脉冲来实现写“0”或写“1”。在读数据时,主机利用窄脉冲初始化时隙,从机将数据线保持在低电平,通过展宽低电平脉冲返回逻辑“0”,或保持脉冲宽度不变来返回逻辑“1”。多数单总线器件支持两种数据速率,较低的数据速率约为14Kbit/s,较高的数据速率约为140Kbit/s。,8.6.2单总线数字温度传感器DS18B20,DS18B20是美国Dallas公司生产的单总线数字式温度传感器,采用单总线协议,即与单片机接口仅需占用一个I/O端口,无须任何外部元件,直接将环境温度转化为数字信号,以数字码形式串行输出,从而极大地简化了传感器与微处理器的接口。在使用过程中,可由一根I/O数据线既供电又传输数据,DS18B20引脚图,基于DS18B20的数字温度计的电路原理图,8.7I2C总线接口及其应用举例8.7.1I2C总线协议概述,I2C总线支持多主和主从两种工作方式。在多主方式中,通过硬件和软件的仲裁,主控I2C(InterICBus)总线是由Philips公司推出的串行总线。它以两根连线实现了完善的全双工同步数据传输,可以极方便地构成多机系统和外围器件扩展系统。I2C总线采用器件地址的硬件设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论