串行通信与串行接口技术_第1页
串行通信与串行接口技术_第2页
串行通信与串行接口技术_第3页
串行通信与串行接口技术_第4页
串行通信与串行接口技术_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

串行通信与串行接口技术第一页,共62页。1.通信方式计算机与外界(计算机与计算机之间、计算机与外围设备之间)的信息交换称为通信。 并行通信 串行通信串行通信概述2第二页,共62页。数据位:根据情况可取5位、6位、7位或8位,低位在前高位在后。2串行通信(1)分类(按数据格式分) 异步通信

停止位:通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已发送完毕,也为发送下一帧字符作准备。3第三页,共62页。同步通信*

在同步通信中,同步字符可以采用统一标准字符,也可由用户约定。在单同步字符帧结构中,同步字符常采用ASCII码中规定的SYN(即16H)代码;

在双同步字符帧结构中,同步字符一般采用国际通用标准代码EB90H。4第四页,共62页。(2)波特率(baudrate)波特率是串行通信的重要指标,用于表征数据传输的速度,定义为每秒钟传送二进制数码的位数(bit),单位是波特,即1波特=1bit/s(bps)。【例】某异步通信的传输速率为7200字符帧/分钟,每个字符帧的长度为10位。则传输速率为: 720010位60秒=1200bps每位传输时间(位宽):5第五页,共62页。(3)串行通信的差错校验 奇偶校验

发送数据时,数据后尾随一位奇偶校验位(0或1)。当设置为奇校验时,数据中1的个数与校验位1的个数之和应为奇数;当设置为偶校验时,数据中1的个数与校验位1的个数之和应为偶数。 接收时,接收方采用与发送方一样的差错校验方法对接收到的数据进行校验。

和校验

发送方对发送的数据块求和,产生一个字节的校验和,并将其尾随数据块发送;接收方将接收的数据求和,将结果与发送方发送的“校验和”进行比较以判断是否出错。6第六页,共62页。89C51串行通信接口一、串行通信及接口1.结构:89C51内部有全双工的异步通讯串行口(UART);两个独立的接收、发送缓冲器SBUF(属于特殊功能寄存器),一个用作发送,一个用作接收。发送缓冲器只能写入不能读出;接收缓冲器只能读出不能写入,两者共用一个字节地址(99H)。7第七页,共62页。2.串行口控制寄存器SCON

用于串行通信的方式选择、接收和发送控制以及串行口的状态标志指示。

SM0SM1--串行口工作方式选择位D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRISM0SM1工作方式功能描述波特率00011011方式0方式1方式2方式38位同步移位寄存器10位UART11位UART11位UARTfosc/12可变(定时器控制)fosc/64、fosc/32可变(定时器控制)8第八页,共62页。SM2:多机通信控制位*主要用于方式2和方式3。当串行口以方式2和方式3接收数据时:SM2=1,则只有在接收到的第9位数据(RB8)为1时才将接收到的前8位数据送入SBUF,并置位RI产生中断请求;否则将接收到的前8位数据丢弃。SM2=0,则不论第9位数据是0还是1,都将前8位数据装入SBUF中,并产生中断请求。在方式0,SM2必须为0。REN:允许接收控制位REN=0时禁止串行口接收。REN=1时允许串行口接收。该位由软件置位或复位。9第九页,共62页。TB8:发送数据位*在方式2或方式3时,TB8是发送数据的第9位,根据发送数据的需要由软件置位或复位。可作为奇偶校验位(单机通信)。可在多机通信中作为发送地址帧或数据帧的标志位。多机通信时,一般约定:发送地址帧时,设置TB8=1;发送数据帧时,设置TB8=0。在方式0和方式1中,该位未用。RB8:接收数据位*在方式2和方式3时,存放接收数据的第9位。可以是约定的奇偶校验位。可以是约定的地址/数据标志位,可根据RB8被置位的情况对接收到的数据进行某种判断。在多机通信时,若RB8=1,说明收到的数据为地址帧;RB8=0,说明收到的数据为数据帧。在方式1下,若SM2=0,则RB8用于存放接收到的停止位方式;方式0下,该位未用。10第十页,共62页。TI:发送中断标志位用于指示一帧数据发送完否。方式0下,发送电路发送完第8位数据时,TI由硬件置位。其他方式下,TI在发送电路开始发送停止位时置位,这就是说:TI在发送前必须由软件复位,发送完一帧后由硬件置位。因此,CPU查询TI状态便可知一帧信息是否已发送完毕。RI:接收中断标志位用于指示一帧信息是否接收完。在方式1下,RI在接收电路接收到第8位数据时由硬件置位。在其他方式下,RI是在接收电路接收到停止位的中间位置时置位的,RI也可供CPU查询,以决定CPU是否需要从SBUF中提取接收到的字符或数据。RI也由软件复位。

11第十一页,共62页。3.电源控制寄存器PCON

SMOD--串行口波特率倍增位 PCON不可位寻址。可用下列指令设置SMOD位: ANLPCON,#7FH;SMOD=0 ORLPCON,#80H;SMOD=1D7D6D5D4D3D2D1D0SMOD---GF1GF0PDIDL12第十二页,共62页。4.串行通信工作方式(1)串行工作方式0*工作原理 串行口作为同步移位寄存器使用; 以RXD(P3.0)端作为数据移位的输入端和输出端;TXD(P3.1)端输出移位脉冲; 8位为一帧,不设起始位和停止位,低位在前,高位在后;帧格式如下: 每个机器周期发送或接收一位,故波特率为fosc/12;...D0D1D2D3D4D5D6D7...13第十三页,共62页。发送时,只需将数据写入串行口缓冲寄存器SBUF,即启动发送,串行口把8位数据以fosc/12的波特率从RXD端送出(低位在前),发送完置中断标志TI为“1”;接收时,软件置REN=1时,串行口即开始从RXD端以fosc/12波特率输入数据(低位在前),当接收到8位数据时,置中断标志RI为“1”,用户可从SBUF读数据。应用串行工作方式0常用于扩展I/O接口。14第十四页,共62页。(2)串行工作方式1工作原理串行口作为通用异步接收和发送器(UART)使用;10位为一帧,帧格式如下:定时器T1作为波特率发生器,通常选用方式2(自动重装入初值方式)、定时、禁止中断;..0D0D1D2D3D4D5D6D71..起始位停止位15第十五页,共62页。波特率={T1溢出率}2SMOD/32

T1溢出周期=(256-初值)12/fosc

T1溢出率=fosc/[12(256-初值)] 波特率=2SMODfosc/[384(256-初值)]

则定时器T1方式2的初值为:

初值=256-2SMODfosc/[384波特率]发送时,数据从引脚TXD输出,当数据写入串行口缓冲寄存器SBUF,即启动发送,发送完一帧数据置中断标志TI为“1”;接收时,软件置REN=1时,串行口即开始采样RXD端,当检测到起始位时开始接收一帧数据,接收到停止位时置中断标志RI为“1”,用户可从SBUF读数据。16第十六页,共62页。【例】由内部RAM单元30H~4FH取出ASCII码数据,在最高位上加奇偶校验位后由串行口输出,采用10位异步通信,波特率为1200bit/s,fosc=11.0592MHz。解:由题意可知,应把串行口置为方式1;采用定时器T1,以方式2工作,作波特率发生器,预置值(TH1)=(TL1)=0E8H。初值=256-2SMODfosc/[384波特率]=256-2011059200/(3841200)=256-24=0E8H17第十七页,共62页。TX:MOVC,P;设置奇校验位CPLCMOVACC.7,CMOVSBUF,A;启动串行口发送JNBTI,$;等待发送完CLRTI;清TI标志,允许再发送RETMOVTMOD,#20H;设T1为模式2MOVTL1,#0E8H;装入时间常数MOVTH1,#0E8HSETBTR1;启动定时器T1MOVSCON,#40H;设串行口为方式1MOVR0,#30H;发送数据首地址MOVR7,#32;发送个数LOOP:MOVA,@R0;发送数据送累加器ALCALLTX;调发送子程序INCR0;指向下一步个地址DJNZR7,LOOP……18第十八页,共62页。工作原理串行口作为通用异步接收和发送器(UART)使用;11位为一帧,帧格式如下:

可编程位(第9数据位)D8由软件置“1”或清“0”,可作检验位,也可作它用。发送方发送时将TB8装入D8,接收方接收时将D8装入RB8;波特率=2SMOD

fosc/64..0D0D1D2D3D4D5D6D7D81..起始位停止位(3)串行工作方式2*19第十九页,共62页。(4)串行工作方式3*工作原理 串行工作方式3的波特率与方式1相同;其他功能与方式2完全相同。20第二十页,共62页。二、89C51串行通信应用1.双机串行通信技术如果两个8031应用系统相距很近,将它们的串行口直接相连,即可实现双机通信。AT89S51AT89S51(P3.0)(P3.0)(P3.1)(P3.1)21第二十一页,共62页。【例】双机通信RTX.DSN22第二十二页,共62页。 ORG 0000H ;发送端程序tx.asm LJMP MAIN ORG 0030HMAIN:MOV TMOD,#20H ;设T1为模式2 MOV TL1,#0FDH MOV TH1,#0FDH ;波特率9600 ANL PCON,#7FH ;SMOD=0

SETB TR1 ;启动定时器T1 MOV SCON,#40H;设串行口为方式1 MOV A,#0FEHL1:MOV SBUF,A ;发送数据 JNB TI,$ ;发送完? CLR TI LCALL D1S ;延时1秒 RL A SJMP L123第二十三页,共62页。 ORG 0000H ;接收端程序rx.asm LJMP MAIN ORG 0030HMAIN:MOV SP,#60H MOV TMOD,#20H MOV TL1,#0FDH MOV TH1,#0FDH ;波特率9600 ANL PCON,#7FH ;SMOD=0 SETB TR1 MOV SCON,#50H ;串口方式1,允许接收L2: JNB RI,$ ;接收到数据? CLR RI MOV A,SBUF MOV P1,A SJMP L224第二十四页,共62页。相互转换232C接口采用EIA电平(负逻辑)“0”电平为+3V~+15V“1”电平为-3V~-15V实际常用±12V或±15V标准TTL电平(正逻辑)“1”电平:+2.4V~+5V“0”电平:0V~0.8V2.单片机与PC机的通信为了增加通信距离,减少通道及电源干扰,可以在通信线路上采取光电隔离的方法,利用RS-232C、RS-422或RS485标准进行双机通信。25第二十五页,共62页。MAX232:+5V供电,RS-232驱动器/接收器单片机TXDRXDPC机RXDTXDDB-9(P3.0)(P3.1)(2)(3)(5)26第二十六页,共62页。PC端软件:串口调试工具(可显示从串口接收的数据)显示窗口通信协议设置27第二十七页,共62页。串行接口器件与单片机接口时需要的I/O口线很少(仅需1~4条),极大地简化了器件间的连接,进而提高了可靠性。串行接口器件体积小,因而占用电路板的空间小,仅为并行接口器件的10%,明显减少了电路板空间和成本。串行接口工作电压宽、抗干扰能力强、功耗低、数据不易丢失。串行扩展技术在IC卡、智能仪器仪表以及分布式控制系统等领域得到了广泛的应用。串行接口技术28第二十八页,共62页。一、1-Wire(单总线)接口

单总线(1-Wirebus)是由DALLAS公司推出的外围串行扩展总线。它只有一条数据输入/输出线DQ,总线上的所有器件都挂在DQ上,电源也可通过这条信号线供给,称为单总线技术。1-Wire器件按照串行协议进行供电和数据通信。

优势:通过单线接口提供器件控制及操作每个器件具有全球唯一的工厂光刻ID(64位ROM)通过单总线供电(“寄生电源”)可挂接多点:单一总线可挂接多个器件(长度≤200M)29第二十九页,共62页。DS18B20—ProgrammableResolution1-WireDigitalThermometer30第三十页,共62页。Unique1-WireInterfaceRequiresOnlyOnePortPinforCommunicationEachDevicehasaUnique64-BitSerialCodeStoredinanOn-BoardROMMultidropCapabilitySimplifiesDistributedTemperature-SensingApplicationsRequiresNoExternalComponentsCanBePoweredfromDataLine;PowerSupplyRangeis3.0Vto5.5VMeasuresTemperaturesfrom-55°Cto+125°C(-67°Fto+257°F)±0.5°CAccuracyfrom-10°Cto+85°CThermometerResolutionisUserSelectablefrom9to12BitsConvertsTemperatureto12-BitDigitalWordin750ms(Max)User-DefinableNonvolatile(NV)AlarmSettingsAlarmSearchCommandIdentifiesandAddressesDevicesWhoseTemperatureisOutsideProgrammedLimits(TemperatureAlarmCondition)Availablein8-PinSO(150mils),8-PinµSOP,and3-PinTO-92PackagesSoftwareCompatiblewiththeDS1822ApplicationsIncludeThermostaticControls,IndustrialSystems,ConsumerProducts,Thermometers,orAnyThermallySensitiveSystem31第三十一页,共62页。典型应用测温范围:-55℃~+125℃;(9/12位二进制码表示)测温精度:±0.5℃(-10℃~+85℃);用户自设定温度报警上下限,其值是非易失性的测温距离:≤200M;32第三十二页,共62页。封装及引脚33第三十三页,共62页。温度寄存器34第三十四页,共62页。温度—数字量关系小数整数负温度为补码表示35第三十五页,共62页。存储器36第三十六页,共62页。配置寄存器37第三十七页,共62页。DS18B20操作38第三十八页,共62页。串行接口技术-1-Wire总线39第三十九页,共62页。串行接口技术-1-Wire总线40第四十页,共62页。操作时序DALLAS公司为单总线的寻址及数据的传送提供了严格的时序规范,具体内容可查阅数据手册。主机发复位脉冲接收器件“存在”脉冲41第四十一页,共62页。串行接口技术-1-Wire总线写“0”写“1”读“1”读“0”42第四十二页,共62页。串行接口技术-1-Wire总线43第四十三页,共62页。【例】温度传感器DS18B20的DQ与P3.4相连。下列为读温度和转换程序。(P3.4)44第四十四页,共62页。;---------------------------------------------------------------------------;**DS18B20读温度子程序;12位分辨率,MSB存入65H,LSB存入64H;转换为BCD码存入6FH(符号位,FFH负,00H正),6EH(百位);6DH(十位),6CH(个位),6BH(小数);---------------------------------------------------------------------------RD_TEMP:SETBP3.4

LCALLRST1820

;读温度之前必须先复位

JB F0,YES

;查看标志位看18B20是否存在,1为存在,0为不存在

RET

;不存在则返回

YES:MOV A,#0CCH

;存在则开始读温度,跳过ROM匹配

LCALL WRB

;调写子程序

MOV A,#44H

;发出温度转换命令

LCALL WRB

;调写子程序

MOVB,#150

WT:LCALL DISP

DJNZ B,WT

;等待AD转换完成,现在分辨率为12位,温度最大转换时间为750MS

LCALL RST1820

;读温前需要复位

MOV A,#0CCH

;跳过ROM匹配

LCALL WRB

MOV A,#0BEH

;发读温度命令

LCALL WRB

LCALL RD2B

;将温度数据读回

LCALL BTOD

;将温度值转换为BCD码

RET45第四十五页,共62页。;18B20复位子程序;18B20复位需要将数据位拉低500us;18B20收到信号后要等待16-60us,然后发出60-240us的低脉冲RST1820:SETB P3.4

NOP CLR P3.4 MOV R6,#3RST0:MOV R7,#105

;设一个537us延时

DJNZ R7,$ DJNZ R6,RST0SETB P3.4

;拉高数据线,等待回应

NOP NOP NOP MOV R6,#23 RST1:JNB P3.4,RST2

;延时延时50us等待18B20回应,若返回低脉冲则说明18B20存在

DJNZ R6,RST1 LJMP RST3

;经过反应时间而没检测到18B20的存在,则跳转去清零标志位

RST2:SETB F0

;检测到18B20存在,置1标志位

LJMP RST4RST3:CLR F0

;没检测到18B20,清零标志位

LJMP RST5RST4:MOV R6,#111 ;延时240us,确定回应信号已发完

DJNZ R6,$

RST5:SETB P3.4 RET46第四十六页,共62页。;-------------------------------------------------------------------;写18B20子程序;-------------------------------------------------------------------

WRB:MOV R6,#8

;写计数寄存器,一共有8位数据

CLR CWRB1:CLR P3.4 MOV R7,#6

;设一个延时

DJNZ R7,$RRC A

;右循环,先输出低位

MOV P3.4,C MOV R7,#23

;设延时50us

DJNZ R7,$ SETB P3.4 NOP NOP DJNZ R6,WRB1

;判断是否完成数据传送

SETB P3.4

;完成传送拉高数据位

RET47第四十七页,共62页。;--------------------------------------------------------;从18B20中读出温度数据子程序,存入65H,64H;--------------------------------------------------------

RD2B:MOV R5,#2

;设读回数据个数指针

MOV R0,#64H

;把温度数据低位存入64H

RD2B0:MOV R6,#8

;设数据长度指针

RD2B1:CLR C SETB P3.4 NOP NOP CLR P3.4 NOP NOP NOP SETB P3.4 MOV R7,#9 DJNZ R7,$ MOV C,P3.4 MOV R7,#23DJNZ R7,$ RRC A DJNZ R6,RD2B1 MOV @R0,A INC R0

;高位存入65H

DJNZ R5,RD2B0 RET48第四十八页,共62页。;--------------------------------------------------------;将温度数据转换为BCD码子程序;--------------------------------------------------------

BTOD:MOV A,65H

JNB ACC.7,PLUS

;判断正负

CPL A MOV 67H,A MOV A,64H CPL A ADD A,#01H MOV 66H,A MOV A,67H ADDC A,#00H

MOV 67H,A

;若为负数,求绝对值存入67H,66H

MOV6FH,#0FFH

;置负数标志

SJMP BTOD0

PLUS:MOV6FH,#00H

;置正数标志

MOV 67H,65H MOV 66H,64H49第四十九页,共62页。BTOD0:MOV A,66H ANL A,#0FH MOV DPTR,#POINT MOVC A,@A+DPTR MOV6BH,A MOV A,66H ANL A,#0F0H SWAP A MOV 63H,A MOV A,67H ANL A,#07H SWAP A ORL A,63H MOV B,#100 DIV AB MOV 6EH,A MOV A,#10 XCH A,B DIV AB MOV 6DH,A MOV 6CH,B RETPOINT:DB00H,01H,01H,02H,02H,03H,04H,04H,05H,06H,06H,07H,07H,08H,09H,09H50第五十页,共62页。SPI(SerialPeriperalInterface)是Motorola公司推出的同步串行外设接口,允许单片机与多个厂家生产的带有该接口的设备直接连接,以串

温馨提示

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

评论

0/150

提交评论