您好,欢迎访问三七文档
第九章串行通信一、串行通信的基础二、51单片机中的串行口三、串行口的应用2一、串行通信的基础1、串行通信的分类——同步通信与异步通信异步通信(AsynchronousCommunication)同步通信(SynchronousCommunication)在异步通信中,数据通常以字符(或字节)为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。3在异步通信中,数字符帧格式和波特率是两个重要指标,由用户根据实际情况选定。•字符帧(CharacterFrame)字符帧也称数据帧,由起始位、数据位、奇偶校验位和停止位等四部分组成,如图0D0D1D2D3D4D5D6D70/11起始位数据位(5-8位)奇偶校验停止位42、同步与异步通信的比较•同步传输:发送方与接受方使用同一时钟。•同步格式:•异步传输:发送方与接受方不使用同一时钟。•异步格式:同步符数据流校验P1105——8位起始位数据校验位停止位53、波特率波特率(baudrate):波特率的定义为每秒钟传送二进制数码的位数(b/s)4、半双工(二线制)、全双工(三线制)5、调制与解调调制的几种形式:ASK(调幅)FSK(调频)PSK(调相)66、校验方式•奇偶校验方式发送的数据和校验位中“1”的个数为奇数则称(奇校验),若数据位中为偶数个“1”,对于奇校验,则校验位上自动填加“1”,满足校验码为奇校验。对偶校验来说,则填加“0”,满足偶数个1,偶校验。76、串行通信接口标准1、RS—232C标准接口(1)电气性能:电平:采用负逻辑15V逻辑1:-3V—-15V逻辑0:+3V—+15V接收器输入阻抗:3—7K驱动器转换速率:〈30V/s信号线上总负载电容:〈2500pf8串行接口芯片9信号线的驱动与电平转换2、RS—422接口平衡式差分传送3、RS—423接口非平衡式差分传送10例9.1设内部RAM以20H为起始地址有一数据块,数据块长度在LEN单元,数据块中每一数的低7位为字符位,最高位为奇校验位(已由程序设置好),请编写能在8031的P1.0引脚上串行输出字符帧的程序。要求字符帧长度为11位1位起始位、7位字符位1位奇校验位和2位停止位。ORG0100HSOUT:MOVR0,#20HNEXT:MOVR2,#0BHCLRC;起始位置0MOVA,@R0RLCA;起始位送ACC.0INCR0LOOP:MOVR1,A;发送字符暂存RlANLA,#01H;屏蔽A中高7位ANLP1,#0FEH;清除P1.0ORLP1,A;在Pl.0上输出串行数据MOVA,R1;恢复A中的值ACALLDELLYRRCA;准备输出下一位SETBC;在Cy中形成停止位DJNZR2,LOOP;若一帧未发完,则LOOPDJNZLEN,NEXT;若所有字符未发完,则NEXTRET;若所有字符已发完,则返回DELAY:END11二、单片机中的串行口•结构原理TI发送中断TXD串行输出(P3.1)内部总线移位时钟RXD串行输入(P3.0)RI接收中断SBUF(发送)接收SBUF输入移位寄存器12零检测器TXDSBUF(接收)接收移位寄存器器接收控制器SBUF(发送)发送控制器RXDMOVSBUF,AMOVA,SBUF定时器T1,T2溢出16分频TXCRXCSHIFTSTARTTIRI串行口中断8051内部总线8051内部总线13(一)串行口控制寄存器•SCON的格式SM0SM1SM2RENTB8RB8TIRI•功能SM0和SM1:决定工作方式。SM0SM0方式具体功能波特率00方式08位移位寄存器FOSC的/1201方式110位UART可调10方式211位UARTFOSC的1/64或1/3211方式311位UART可调14SCON的各位含义•SM2:允许方式2和方式3进行多机通信控制位.在方式2或方式3中,如SM2=1,则接收到的第9位数据(RB8)为0时不激活RI。在方式1时,如SM2=1,则只有受到有效停止位时才会激活RI。若没有接收到停止位,则RI清0。在方式0中,SM2应为0。•REN:允许串行接收控制位。软件置1允许接收。•TB8:工作在方式2和方式3时要发送的第9位数据。(1或0)•RB8:工作在方式2和方式3时接收到的第9位数据。•TI:发送中断标志位。必须由软件清0。•RI:接收中断标志位。15(二)串行口工作方式1.方式0:SM0=0,SM1=0,SM2=0移位寄存器方式:RXD输入/输出,TXD输出同步移位脉冲。波特率=fosc/12(固定)。数据格式:8位,低位在先。波形图:(方式0发送)写入SBUFSENDSHIFTRXD(OUT)D0D1D2D3D4D5D6D7TXDTI16•方式0接收(REN=1,RI=0)清SCON中的RI位RIRECEIVESHIFTRXD(IN)D0D1D2D3D4D5D6D7TXD2.方式1:SM0=0,SM1=18位异步通信口:RXD接收数据,TXD发送数据。波特率可变。数据格式:每帧10位,1为起始位(0),8位数据,1位停止位(1)。数据位低位在先。17•方式1发送TXCLK写入SBUFSENDSHIFTTXD起始位D0D1D2D3D4D5D6D7停止位TI•方式1接收(RI=0,SM2=0或接收到停止位为1数据有效)RXCLKRXD起始位D0D1D2D3D4D5D6D7停止位SHIFTRI183.方式2SM0=0,SM1=19位异步通信口,数据格式:每帧11位,1位起始位,8位数据,1位可编程位,1位停止位。数据位低位在先。发送时可编程位(TB8)送出0或1,接收时可编程位送入SCON中的RB8。•发送:TXD输出。CPU执行写SBUF指令后开始发送,送完一帧后,TI置1,在发送下一帧之前,TI必须清零(由中断服务程序或查询程序)。•接收:当REN=1时,允许接收数据。检测到RXD端有负跳变并确认起始位后,开始接收数据。当收到第9位数据后,若(1)RI=0;(2)SM2=0或第9位数据=1,则接收数据有效,8位数据送入SBUF,第9位数据送入RB8,并使RI=1。否则接收数据丢失。194、波特率的计算与设置方式2波特率=*fosc/642SMOD方式3同方式1,波特率=*T1溢出率/322SMOD20•当串行口工作在方式1和方式3时,波特率是可变的:波特率=(/32)*定时器T1的溢出率定时器T1的溢出率=定时器T1的溢出次数/秒设:N为T1的计数初值(TH1和TL1的初值),T1为方式2定时器T1溢出一次的时间:(—N)*12时钟周期=(—N)*12*1/定时器T1的溢出率=/[12*(—N)]2SMOD2828fosc28fosc21(三)常用波特率及T1的初值设定•串行口常用波特率及T1初值(方式1和方式3时):常用波特率时钟频率foscSMOD计/定方式计/定初值19.2K11.0592MHz12FDH9.6K11.0592MHz02FDH4.8K11.0592MHz02FAH2.4K11.0592MHz02F4H1.2K11.0592MHz02E8H60011.0592MHz02D0H1106MHz0272H方式0:波特率为fosc的1/12;方式2:波特率为fosc的1/64(SMOD=0)或1/32(SMOD=1)。22(四)串行通讯中的多机通讯•硬件连接TxDRxD8051(主)TxDRxD8051(从0)TxDRxD8051(从n)23•工作流程•方式2或3,SM2=1,TB8=1——传送地址信息TB8=0——传送数据信息。此时,从机只接收地址帧。•SM2=0,对于地址信息和数据信息都接收。1、全部从机将SM2设为1,处于只接收地址帧状态。2、主机首先发送地址信息,并置TB8=1。3、从机收到地址帧后,和自己本机地址比较。若相等,则为被寻址机,将自己的SM2清零,准备接受下面的数据。若地址不等,维持SM2=1,对后面的数据不理睬。4、主机在地址发完后,发送数据帧,并使TB8=0。5、改变从机时,主机再发送地址帧(TB8=1),原来的从机使自己的SM2=1,结束接收数据。
本文标题:第十章串行口1
链接地址:https://www.777doc.com/doc-2091225 .html