第七节串行通信与输入/输出接口一、基本概念1、并行通信与串行通信1)并行通信:一次传输8位,需要8根数据线。但同时需要控制。如单片机的4个并行口。特点:速度快,适合近距离传输,计算机并口,打印机,8255,由于并行通信占用硬件端口多,是系统复杂,不适合远距离通信,应用逐渐减少,现在计算机的许多外设都变成串行通信。2)串行通信:串行通信就是将并行的数据分开后,一位一位地发送出去,接收方也是一位一位地接收数据,需要通信的双方有一个协议,什么时候开始发送,什么时候发送完毕;接收方收到的信息是否正确等。2、串行通信的方式与特点单工方式:一端是发送端,另外一端是接收端:半双工发式:每端口有一个发送器和接收器,通过开关连接在线路上,数据可以双方交换,但不能同时发送和接收.全双工方式:通信双方用两个独立的收发器单独连接,可以同时发送和接收数据,因而提高了速度。(2)特点:硬件简单,适合远距离通信(3)分类:串行同步通信和串行异步通信,3、串行同步通信同步通信先发送一个字符,作为同步字符,之后便连续发送数据,数据之间不能有间隔,直到数据发送完毕。速度要比异步通信快。硬件结构复杂。4、串行异步通信的格式异步串行通信帧格式:(一个字符称作一帧)1)起始位:在数据发送线上规定无数据时电平为1,当要发送数据时,首先发送一个低电平0,表示数据传送的开始,这就是起始位。2)数据位:真正要传送的8位数据,数据位是由低位开始,高位结束;3)奇偶校验:数据发送完后,发送奇偶校验位,以检验数据传送的正确性,这种校验方法是有限的,但是容易实现。4)停止位:用高电平1表示数据传送的结束。5)空闲位:用1来填充空闲位。(不同的工作方式,一帧的字符个数不同,后面讲)5、波特率定义:波特率是单位时间内传送多少位的信息量。单位:位/秒(B/s);bps。(以每秒传送的位数为单位)波特率系列:110、300、1200、1800、2400、4800、9600、……单片机常用9600B/s与计算机或单片机通信。二、串行总线1、总线是计算机系统中模块到模块间传送信息的一束信号线。采用串行传输方式进行通信的叫串行总线,串行总线有几种标准,常见的有RS-232,USB,还有RS-422,RS-485,在计算机中,常见的是RS-232,现在是USB,在工业中,RS-485用的很广泛。2、RS-232C总线RS-232C总线应用很广,RS232标准由25根信号线组成,设备经常只使用其中9个信号,绝大多数为9针连接器(计算机的串行口)。232C接口信号面向使用调制解调器的串行异步通信,原来主要是计算机通过电话线进行通信的,可支持两个通信信道:主信道:用于数据传送次信道:次信道为辅助串行通道,主要提供通道控制,但其传输速率比主信道要低得多,其他跟主信道相同,通常较少使用9针连接器(阳)各个引脚信号如下:1、载波检测(DCD、入)2、接受数据(RXD、入)3、发送数据(TXD、出)4、数据终端准备好(DTR、出)5、信号地线(SGND)6、数据设备准备好(DSR、入)7、请求发送(RTS、出)8、清除请求发送(CTS、入)9、振铃指示(RI、入)1、4、6、7、8、9信号,均是要与MODEM联系,2、3、5信号就可以构成串行通信。在单片机串行通信中,实际用到了3条线:2、3、5RS-232C的传输率最大为200kb/s,在此速率下,电缆允许长度为15m。•RS-422A的传输率最大为10Mb/s,在此速率下,电缆允许长度为120m。如果采用较低传输速率,如90kb/s,最大距离可达1200m。•RS-485是RS-422A的变形。RS-422A为全双工,可同时发送和接收;RS-485则为半双工,在某一时刻,一个发送另一个接收。电平:RS232c电平逻辑0电平:+5-+15V;逻辑1电平:-15―-5V经常用MAX232C等芯片转换。三、AT89C51的串行口的结构8051有一个可编程的全双工串行通信接口,它可作UART(串行异步通信)用,也可作同步移位寄存器,其帧格式可有8位、10位或11位,并能设置各种波特率,给使用者带来很大的灵活性。结构如下图:工作原理:1、引脚,RXD(P3.0,串行数据接收端)、TXD(P3.l,串行数据发送端)。2、有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H。可以同时工作,但不能同时访问。发送缓冲器只能写入,不能读出,接收缓冲器只能读出、不能写入。3、波特率发生器,8051用定时器T1作为串行通信的波特率发生器,T1溢出率经2分频(或不分频)又经16分频作为串行发送或接收的移位脉冲。移位脉冲的速率即是波特率。4、接收器是双缓冲结构,在前—个字节被从接收缓冲器SBUF读出之前,第二个字节即开始被接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前一个字节CPU未读取时会丢失前一个字节。串行口内部结构示意简图传输周期:输入移位寄存器的时钟周期。由图可知:SMOD=0时,传输周期时间t=T1溢出周期×32μs;SMOD=1时,传输周期时间t=T1溢出周期×16μs。5、发送与接收信息,当向SBUF发“写”命令时(执行MOVSBUF,A指令),就是向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。在满足串行口接收中断标志位RI〔SCON.0〕=0的条件下,置允许接收位REN(SCON.4)=1就会启动接收一帧数据进入输入移位寄存器,并装载到接收SBUF中,同时使RI=l。当发出读SBUF命令时(执行MOVA,SBUF指令),即是由接收缓冲器(SBUF)取出信息通过8051内部总线送CPU。(对于发送缓冲器,因为发送时CPU是主动的,不会发生重迭错误,所以不需要用双缓冲结构来保持最大传送速率。)四、串行通信控制寄存器8051串行口是一个可编程接口,对它的编程只用两个控制字分别写入特殊功能寄存器:1、串行口控制寄存器SCON(98H)1)SM0、SM1:用于定义串行口的操作模式,两个选择位对应4种模式,见表其中fOSC是振荡器频率,UART为通用异步接收和发送器的英文缩写。2)SM2:多机控制位,用于多机通讯。3)REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。4)TB8:发送的第9位数据,可用作校验位和地址/数据标识位5)RB8:接收的第9位数据或停止位6)TI:发送中断标志,发送一帧结束,TI=1,必须软件清零7)RI:接收中断标志,接收一帧结束,RI=1,必须软件清零2、电源控制寄存器PCON(87H)SMOD---GF1GF0PDIDL在串行通信中,用到了电源控制寄存器PCON中最高位SMOD,是波特率系数控制位,当SMOD=1是,波特率增大一倍。五、四种工作方式1、方式0:同步移位寄存器方式。用于扩展并行I/O接口。1)数据格式:一帧8位,无起始位和停止位。2)RXD:数据输入/输出端。TXD:同步脉冲输出端,每个脉冲对应一个数据位。(唯一不同的作用)3)波特率:B=fosc/12,每个机器周期发送一位数据。如:fosc=12MHz,B=1MHz,每位数据占1s。4)发送是低位在前,8位发送完毕,停止发送,并置TI=1。(74LS164在上升沿采集数据)该方式主要用于扩展I/O口。2、方式1,8位数据异步通讯方式。(见前面图)1)一帧10位:8位数据位,1个起始位(0),1个停止位(1)。2)RXD:接收数据端。TXD:发送数据端。3)波特率:用T1作为波特率发生器,B=(2SMOD/32)×T1溢出率。用定时器T1的方式2(自动重装载)作波特率发生器。(注意这是规定)定时器初值的计算:初值计算可以这样理解:(对方式1、3)BSMODfosc384)1(256xx25612f322Bx25612f1ToscSMODosc-=)-(=)-(溢出率=SMOD=0时,定时器T1溢出32次传送1位;n=32SMOD=1时,定时器T1溢出16次传送1位;n=16串行口发送1位需要的时间t2=1000000μs/B(波特率定义)波特率确定,则传送1位的时间确定,定时器的溢出周期t就确定了,t=t2/n。计数器初值为:X=256-t/机器周期X=256-t2/(n×机器周期)例:波特率为9600B/s,单片机晶振为24MHz,求T1的初值。解:串行口发送1位需要的时间为:1000000/9600=104.167μs当SMOD=0时,n×机器周期=0.5×32=16μsX=256-104.167/16=249.49,取249,误差为|0.49|当SMOD=1时,t=8μs,X=256-104.167/8=242.98误差为|0.02|显然要取SMOD=1,x=2434)发送:写入SBUF,同时启动发送,一帧发送结束,TI自动置1。接收:REN=1。不能多机通信。3、方式2与方式3,9位数据异步通讯方式。方式2与方式3除波特率不同外,其他都相同。1)一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。2)RXD:接收数据端,TXD:发送数据端。3)波特率:方式2:B=(2SMOD/64)×fosc。方式3:同方式1,注意:方式1与方式3除一帧位数不同,其余相同。4)发送与接收(方式2、方式3支持多机通信)发送:由软件给TB8置1或0,自动将TB8送第9位数据。写入SBUF并启动发送,发送结束,TI=1。(注意SM2=1时,发送的第9位数据的作用)以下为发送与接收的时序:对每个位检测3次,两次相同者有效。注意:要设奇偶校验位时,一般将待发送的数据送累加器A,则PSW中的奇偶校验位P发生变化,将P→TB8,然后将A→SBUF即可。接收:关系较复杂,见下表:序号RENSM2第9位数据功能10××禁止接收210×接收的数据送SBUF,第9位→RB8,接收完RI置1,申请中断,(双机通信,多机通信时地址相符者接收数据。)3110信息作废(多机通信,地址不符者不接收)4111数据→SBUF,第9位送RB8,接收完RI→1,申请中断(多机通信传递地址信息,各分机都接收)表中“×”表示数据任意。接收过程:4、多机通信(方式2和3)多机通信,主机只有一个,从机有多个,每个从机有相应的地址。(见图)通信过程:1)主机SM2=0,主机发送地址信息,同时TB8=1;2)从机SM2=1,接收信息,RB8=1,各从机接收地址信息有效;SM2仍为13)各从机判断接收的地址是否与本机相符(中断程序中),相符者置SM2=0,不符者SM2保持1不变。4)主机发送数据信息,TB8=0;5)从机地址相符者接收数据信息,(见上表[2],因SM2=0)接收信息有效;地址不同者(见上表[3],SM2=1和第9位=0)信息作废。注意:1)一般每次只能有一个从机接收,想要多个从机同时接收,将地址设为相同;全部从机同时接收,置从机SM2=1,主机第9位=1。2)从机要发送,必须设置联络方式,使地址相符的从机发送,保证同时只有一个从机发送。注意:引脚连接时(主)TXD-(从)RXD;(主)RXD-(从)TXD五、发送与接收过程及参数设置发送接收1、设置工作方式,波特率(TH1、TL1)1、设置工作方式,波特率2、开定时器T12、开定时器T1,置REN=13、加奇偶校验位(按需要)3、接收字符送SBUF,接收完毕,RI自动置14、将待发数据送SBUF(启动发送)4、由软件清除RI5、等待发送结束,TI自动置15、从SBUF中取接收的字符6、由软件给TI置06、进行奇偶校验7、转3、发送下一个字符7、返3、接收下一个字符第八节特殊工作方式一、复位方式1、复位的作用:复位是单片机中必须的功能,它使特殊功能寄存器回复初始状态,见下表。程序重新从0000H开始执行。2、复位结构与条件复位引脚RST通过片内一个斯密特触发器与片内复位电路相连。斯密特触发器用来脉冲整形及抑制噪声,其输出在每个机器周期的S5P2时被复位电路采样一次。给RST输入2个机器周期