1、第七节 串行通信与输入/输出接口一、 基本概念1、并行通信与串行通信 1) 并行通信:一次传输8位,需要8根数据线。但同时需要控制。 如单片机的4个并行口。特点:速度快,适合近距离传输, 计算机并口,打印机,8255 ,由于并行通信占用硬件端口多,是系统复杂,不适合远距离通信,应用逐渐减少,现在计算机的许多外设都变成串行通信。2)串行通信:串行通信就是将并行的数据分开后,一位一位地发送出去,接收方也是一位一位地接收数据,需要通信的双方有一个协议,什么时候开始发送,什么时候发送完毕;接收方收到的信息是否正确等。2、串行通信的方式与特点单工方式: 一端是发送端,另外一端是接收端: 半双工发式 :每
2、端口有一个发送器和接收器,通过开关连接在线路上,数据可以双方交换,但不能同时发送和接收. 全双工方式 :通信双方用两个独立的收发器单独连接,可以同时发送和接收数据,因而提高了速度。 (2)特点:硬件简单,适合远距离通信(3)分类:串行同步通信和串行异步通信,3、串行同步通信同步通信先发送一个字符,作为同步字符,之后便连续发送数据,数据之间不能有间隔,直到数据发送完毕。速度要比异步通信快。硬件结构复杂。4、串行异步通信的格式异步串行通信帧格式:(一个字符称作一帧)1) 起始位:在数据发送线上规定无数据时电平为1,当要发送数据时,首先发送一个低电平0,表示数据传送的开始,这就是起始位。2)数据位:
3、真正要传送的8位数据,数据位是由低位开始,高位结束;3)奇偶校验:数据发送完后,发送奇偶校验位,以检验数据传送的正确性,这种校验方法是有限的,但是容易实现。4)停止位:用高电平1表示数据传送的结束。 5)空闲位:用1来填充空闲位。(不同的工作方式,一帧的字符个数不同,后面讲)5、 波特率 定义:波特率是单位时间内传送多少位的信息量。单位:位/秒(B/s);bps。(以每秒传送的位数为单位) 波特率系列:110、300、1200、1800、2400、4800、9600、单片机常用9600B/s与计算机或单片机通信。二、串行总线1、总线是计算机系统中模块到模块间传送信息的一束信号线。采用串行传输方
4、式进行通信的叫串行总线,串行总线有几种标准,常见的有RS-232,USB,还有RS-422,RS-485,在计算机中,常见的是RS-232,现在是USB,在工业中,RS-485用的很广泛。2、RS-232C总线RS-232C总线应用很广,RS232标准由25根信号线组成,设备经常只使用其中9个信号,绝大多数为9针连接器(计算机的串行口)。232C接口信号面向使用调制解调器的串行异步通信,原来主要是计算机通过电话线进行通信的,可支持两个通信信道:主信道:用于数据传送次信道:次信道为辅助串行通道,主要提供通道控制,但其传输速率比主信道要低得多,其他跟主信道相同,通常较少使用9针连接器(阳)各个引脚
5、信号如下: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,最大距
6、离可达1200m。 RS-485是RS-422A的变形。RS-422A为全双工,可同时发送和接收;RS-485则为半双工,在某一时刻,一个发送另一个接收。 电平:RS232c电平逻辑0电平:515V;逻辑1电平:-15-5V经常用MAX232C等芯片转换。三、AT89C51的串行口的结构 8051有一个可编程的全双工串行通信接口,它可作UART(串行异步通信)用,也可作同步移位寄存器,其帧格式可有8位、10位或11位,并能设置各种波特率,给使用者带来很大的灵活性。 结构如下图:工作原理:1、引脚,RXD(P30,串行数据接收端)、TXD(P3.l,串行数据发送端)。2、有两个物理上独立的接收、
7、发送缓冲器SBUF,它们占用同一地址99H。可以同时工作,但不能同时访问。发送缓冲器只能写入,不能读出,接收缓冲器只能读出、不能写入。 3、波特率发生器,8051用定时器T1作为串行通信的波特率发生器,T1溢出率经2分频(或不分频)又经16分频作为串行发送或接收的移位脉冲。移位脉冲的速率即是波特率。 4、接收器是双缓冲结构,在前个字节被从接收缓冲器SBUF读出之前,第二个字节即开始被接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前一个字节CPU未读取时会丢失前一个字节。串行口内部结构示意简图传输周期:输入移位寄存器的时钟周期。由图可知: SMOD0时,传输周期时间tT1溢出周期32
8、s; SMOD1时,传输周期时间tT1溢出周期16s。 5、发送与接收信息,当向SBUF发“写”命令时(执行MOV SBUF,A指令),就是向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI1。 在满足串行口接收中断标志位RISCON00的条件下,置允许接收位REN(SCON4)1就会启动接收一帧数据进入输入移位寄存器,并装载到接收SBUF中,同时使RIl。当发出读SBUF命令时(执行MOV A,SBUF指令),即是由接收缓冲器(SBUF)取出信息通过8051内部总线送CPU。 (对于发送缓冲器,因为发送时CPU是主动的,不会发生重迭错误,所以不需要用双缓
9、冲结构来保持最大传送速率。 )四、串行通信控制寄存器 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,必须
10、软件清零7) RI:接收中断标志,接收一帧结束,RI=1,必须软件清零2、电源控制寄存器PCON(87H) SMODGF1GF0PDIDL在串行通信中,用到了电源控制寄存器PCON中最高位SMOD,是波特率系数控制位,当SMOD1是,波特率增大一倍。五、四种工作方式1、方式0:同步移位寄存器方式。用于扩展并行I/O接口。1)数据格式: 一帧8位,无起始位和停止位。2)RXD:数据输入/输出端。TXD:同步脉冲输出端,每个脉冲对应一个数据位。(唯一不同的作用)3) 波特率:B = fosc/12,每个机器周期发送一位数据。如: fosc=12MHz,B=1MHz,每位数据占1ms。4)发送是低位
11、在前,8位发送完毕,停止发送,并置TI1。(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)SMOD0时,定时器T1溢出32次传送1位;n=32SMOD1时,定时器T1溢出16次传送1位;n=16串行口发送1位需要的时间t21000
12、000s/B(波特率定义)波特率确定,则传送1位的时间确定,定时器的溢出周期t就确定了,t=t2/n。计数器初值为:X=256t/机器周期 X=256-t2/(n机器周期)例:波特率为9600B/s,单片机晶振为24MHz,求T1的初值。解:串行口发送1位需要的时间为:1000000/9600=104.167s当SMOD0时,n机器周期=0.53216sX256104.167/16249.49,取249,误差为|0.49|当SMOD1时,t8s,X256104.167/8242.98误差为|0.02|显然要取SMOD1,x2434) 发送:写入SBUF,同时启动发送,一帧发送结束,TI自动置1
13、。接收: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。(注意SM21时,发送的第9位数据
14、的作用)以下为发送与接收的时序:对每个位检测3次,两次相同者有效。注意:要设奇偶校验位时,一般将待发送的数据送累加器A,则PSW中的奇偶校验位P发生变化,将PTB8,然后将ASBUF即可。接收:关系较复杂,见下表:序号RENSM2第9位数据功 能10禁止接收210接收的数据送SBUF,第9位RB8,接收完RI置1,申请中断,(双机通信,多机通信时地址相符者接收数据。)3110信息作废(多机通信,地址不符者不接收)4111数据SBUF,第9位送RB8,接收完RI1,申请中断(多机通信传递地址信息,各分机都接收)表中“”表示数据任意。接收过程:4、多机通信(方式2和3)多机通信,主机只有一个,从机
15、有多个,每个从机有相应的地址。(见图)通信过程:1) 主机SM2=0,主机发送地址信息,同时TB81;2) 从机SM21,接收信息, RB81,各从机接收地址信息有效;SM2仍为13)各从机判断接收的地址是否与本机相符(中断程序中),相符者置SM20,不符者SM2保持1不变。4)主机发送数据信息,TB80;5)从机地址相符者接收数据信息,(见上表2,因SM20)接收信息有效;地址不同者(见上表3,SM21和第9位0)信息作废。注意:1) 一般每次只能有一个从机接收,想要多个从机同时接收,将地址设为相同;全部从机同时接收,置从机SM2=1,主机第9位=1。2) 从机要发送,必须设置联络方式,使地
16、址相符的从机发送,保证同时只有一个从机发送。注意:引脚连接时 (主)TXD(从)RXD;(主)RXD(从)TXD五、发送与接收过程及参数设置发 送接 收1、设置工作方式,波特率(TH1、TL1)1、设置工作方式,波特率2、开定时器T12、开定时器T1,置REN13、加奇偶校验位(按需要)3、接收字符送SBUF,接收完毕,RI自动置14、将待发数据送SBUF(启动发送)4、由软件清除RI5、等待发送结束,TI自动置15、从SBUF中取接收的字符6、由软件给TI置06、进行奇偶校验7、转3、发送下一个字符7、返3、接收下一个字符第八节 特殊工作方式一、复位方式1、复位的作用:复位是单片机中必须的功
17、能,它使特殊功能寄存器回复初始状态,见下表。程序重新从0000H开始执行。2、复位结构与条件复位引脚RST通过片内一个斯密特触发器与片内复位电路相连。斯密特触发器用来脉冲整形及抑制噪声,其输出在每个机器周期的S5P2时被复位电路采样一次。给RST输入2个机器周期(24个振荡周期)的高电平正脉冲,805l便执行内部复位。复位后几个主要的特殊功能寄存器的初始状态如下:3、复位电路 单片机的复位方式有上电复位和按键手动复位两种。复位电路中的电阻、电容数值的设置,是要保证在RST引脚处至少保持2个机器周期(24个振荡周期)的高电平而完成复位过程的,也就是在斯密特触发器的输入端维持在最低阈值电压以上足够
18、长时间,使斯密特触发器产生一个正脉冲。 此电路为实用电路,当Vcc上电时,给电容C充电,RST的电压升高,同时R2放电,合理选择电容与电阻,可以使高电平时间达到复位要求。在8051中,当晶振为12MHz时,电容为10uf,电阻为8.2k。对于89C51,在RST的内部接了一个下拉电阻,故可以不接外部电阻,只接一个1f电容。按键手动复位电路,该电路是在上电复位电路中另加一个200电阻和手动开关组成。图230的复位电路,前面加了滤波电路C1和C2,可以防止干扰窜入复位端。加了一个非门,提高了驱动能力,可以使几个元件同时复位。该复位原理是:电压由0升到5V的过程中,通过电阻给C3充电,此时为低电平,
19、通过非门变为高电平;当电压升到一定值时,RST变为低电平。二、节电方式对电池供电的仪器,节电是很重要的。AT89Cxx提供了空闲方式和掉电方式。1、电源控制器PCONSMODGF1GF0PDIDLGF0、GF1:通用标志位,由用户设置。用来指示中断发生在正常运行还是等待方式,在等待方式响应的中断,给该位置1。PD:掉电方式控制位,PD1进入掉电方式。IDL:等待方式(空闲方式)控制位,IDL1进入等待方式。2、等待方式(IDL1) 特点: 振荡器继续工作,但CPU不工作; 中断、串行口、定时器正常工作; CPU内部状态维持不变,即SP、PC、PSW、A、端口状态等均不变;退出: 响应中断退出,从等待开始前的下一条指令开始执行; 硬件复位,复位信号直接将IDL清零,然后从等待开始前的下一条指令开始执行。3、 掉电方式(PD1) 振荡器停止工作,所有的功能部件都停止工作; 启动备用电源继续给片内RAM供电,RAM区的内容不变。备用电源需要专门的电路接入,51单片机无此功能。 ALE和PSEN都为高电平。退出的惟一方法是由硬件复位。因掉电时RAM内容不变,掉电前,将需要的信息都压入堆栈,复位后又从堆栈中弹出。