您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 第7章MCS-51串行接口.
第7章MCS-51串行接口【学习目标】熟悉并理解串行通信相关的基本概念:串行通信、异步通信、同步通信、波特率等;了解MCS-51单片机串行口的内部硬件结构;掌握SBUF、SCON、PCON寄存器的结构、控制作用与设置方法;掌握串行口的4种工作方式和应用编程;了解RS-232C电平转换电路和RS-485通信接口电路。7.1串行通信的基本概念1.并行通信与串行通信所谓通信是指计算机与计算机或外围设备之间的数据传输。数据传输主要有两种基本方式:并行通信和串行通信。并行通信是数据的各位同时发送或同时接收;串行通信是数据的各位依次逐位发送或接收。并行通信优点:传送速度快缺点:不便长距离传送串行通信优点:便于长距离传送缺点:传送速度较慢串行通信的基本特征是数据逐位顺序进行传送串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平……等)不同,形成了多种串行通信的协议与接口标准。常见的有:☞通用异步收发器(UART)——本课程介绍的串口☞通用串行总线(USB)☞I2C总线☞CAN总线☞SPI总线☞RS-485,RS-232C,RS422A标准……等等2.同步通信和异步通信方式串行通信根据传输数据格式的不同,主要分为异步通信和同步通信两种方式。(1)异步通信异步通信是指发送和接收设备使用各自的时钟控制数据的传输过程。数据以字节为单位组成信息帧传送。异步通信信息帧格式如图7.1所示,包括1个起始位、1~8个数据位、1个奇偶校验位及1~2个停止位组成。信息帧由发送端一帧一帧地发送,两相邻字符帧之间可以无空闲位,也可以有若干空闲位,空闲时数据线状态为高电平。发送端和接收端的时钟各自独立,实现双方同步接收是靠信息帧的起始位和停止位。异步通信的优点是不需要传送同步时钟,但信息帧中包含有起始位和停止位,从而降低了有效数据的传输速率,比较适用于低速通信。(2)同步通信同步通信依靠同步字符保持通信同步。同步通信是由1~2个同步字符和多字节数据位组成,同步字符作为起始位以触发同步时钟开始发送或接收数据;多字节数据之间不允许有空隙,每位占用的时间相等;空闲位需发送同步字符。(同步字符可以用户约定,也可以有用ASCⅡ码中规定的SYNC同步字符(即16H))同步通信传输速度较快,但要求有准确的时钟来实现收发双方的严格同步,对硬件要求较高,适用于成批数据传送。3.串行通信的数据传送速率波特率是指每秒钟传送二进制数码的位数(bit),单位为bit/s。波特率的倒数即为传送每一位所需的时间。1波特=1位/秒(1bps)常用的标准波特率为110bit/s、300bit/s、600bit/s、1200bit/s、1800bit/s、2400bit/s、4800bit/s、9600bit/s、14.4kbit/s、19.2kbit/s等。波特率的倒数即为每位传输所需的时间。相互通信的甲乙双方必须具有相同的波特率,否则无法成功地完成串行数据通信。4.串行通信的制式串行通信具有多种操作模式:单工、半双工和全双工。单工制式是指甲乙双方通信时只能单向传送数据,发送方和接收方固定。半双工制式是指通信双方都具有发送器和接收器,既可发送也可接收,但不能同时接收和发送,发送时不能接收,接收时不能发送。全双工制式是指通信双方均设有发送器和接收器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收时也能发送5.通信协议(1)奇偶校验(2)累加和校验(3)循环冗余码校验(CyclicRedundancyCheck,简称CRC)发送指令:MOVSBUF,A;将数据写到发送缓冲器SBUF接收指令:MOVA,SBUF;读出接收缓冲器SBUF中接收到的数据控制寄存器共两个:特殊功能寄存器SCON和PCON。7.2MCS-51串行口结构与工作原理MCS-51单片机内部含有1个可编程全双工串行通信接口,它有4种工作方式。串行口内部结构如下图,两个物理上独立地接收和发送缓冲器,可同时收、发数据(全双工)。两个缓冲器共用一个特殊功能寄存器字节地址:SBUF(99H)串行数据缓冲器SBUF在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H,用同一寄存器名SBUF。在物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。发送时,只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发送;接收时,CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接收数据。指令MOVSBUF,A启动一次数据发送,可向SBUF再发送下一个数指令MOVA,SBUF完成一次数据接收,SBUF可再接收下一个数7.2.1串行口控制寄存器SCONSCON是MCS-51单片机的一个可位寻址的专用寄存器,用于串行口数据通信的控制。单元地址为98H,位地址为9FH~98H。SCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能工作方式选择多机通信控制接收允许发送第9位接收第9位发送中断接收中断①SM0SM1——串行口工作方式选择位。②SM2——多机通信控制位。③REN——允许接收控制位。REN=1,允许接收。④TB8——方式2和方式3中要发送的第9位数据。⑤RB8——方式2和方式3中要接收的第9位数据。⑥TI——发送中断标志。⑦RI——接收中断标志。1)SM0SM1——串行口4种工作方式选择位,所对应的工作方式见表。SM0SM1工作方式功能说明000同步移位寄存器输入/输出,波特率固定为fosc/1201110位UART;波特率可变(T1溢出率/n,n=32或16)10211位UART,波特率固定为fosc/n,(n=64或32)11311位UART,波特率可变(T1溢出率/n,n=32或16)2)SM2--多机通信位,主要用于方式2、3。0—单机对单机;1—多机通信。当SM2=1时,只有当接收到第9位数据(RB8)为1时,才将接收到的前8位数据送入SBUF,并置位RI;否则,将接收到的8位数据丢弃。当SM2=0时,则不论第9位数据为0还是为1,都将8位数据装入SBUF中,并置位RI。在方式0时,SM2必须为0。3)REN:允许/禁止接收控制位。0—禁止串行口接收数据;1—允许串行口接收数据。由软件置“1”或清零。4)TB8:发送数据第9位。在方式2和方式3时,TB8是要发送的第9位数据,其值由软件置“1”或清零。在双机通信时,TB8一般作为奇偶校验位使用;在多机通信中,用来表示主机发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。5)RB8:接收数据第9位。在方式2和方式3时,RB8存放接收到的第9位数据。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。6)TI:发送中断标志。当方式0时,发送完第8位数据后,该位由硬件置位。在其他方式下,遇发送停止位时,该位由硬件置位。因此TI=1,表示帧发送结束,可软件查询TI位标志,也可以请求中断。TI位必须由软件清0。7)RI:接收中断标志。当方式0时,接收完第8位数据后,该位由硬件置位。在其他方式下,当接收到停止位时,该位由硬件置位。因此RI=1,表示帧接收结束,可软件查询RI位标志,也可以请求中断。RI位也必须由软件清0。接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对RI/TI清0,以备下一次收/发。7.2.2特殊功能寄存器PCONPCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器。单元地址为87H,没有位寻址功能,其格式如下:SMOD=1,串行口波特率加倍。PCON寄存器不能进行位寻址。☞SMOD:在串行口工作方式1、2、3中,是波特率加倍位=1时,波特率加倍=0时,波特率不加倍。(在PCON中只有这一个位与串口有关)PCOND7D6D5D4D3D2D1D0位名称SMOD———GF1GF0PDIDL7.2.3波特率的设置波特率=T1溢出率SMOD232其中,溢出率是指定时器每秒溢出的次数。波特率计算公式如下:7.3串行口的4种工作方式89C51串行通信共有4种工作方式,由串行控制寄存器SCON中SM0SM1决定。7.2.1方式0(同步移位寄存器工作方式)以RXD(P3.0)端作为数据移位的输入/输出端,以TXD(P3.1)端输出移位脉冲。移位数据的发送和接收以8位为一帧,不设起始位和停止位,无论输入/输出,均低位在前高位在后。串口方式0发送数据时序:方式0可将串行输入输出数据转换成并行输入输出数据。1.输出(发送)=0时,将74LS164输出端Q0~Q7清零;=1时,允许74LS164输出端Q0~Q7输出数据。这时,通过移位脉冲TXD的控制,数据D0~D7从RXD端逐位移入74LS164内的移位寄存器,并从74LS164的Q0~Q7输出。当8位数据全部移出后,SCON寄存器的TI位被自动置1。串行口作为并行输出口使用时,要有“串入并出”的移位寄存器配合。(例如CD4094或74LSl64)CLRCLR2.输入(接收)串行口作为并行输入口使用时,要有“并入串出”的移位寄存器配合。(例如CD4014或74LSl65)74LS165S/L端为移位/置入端,当S/L=0时,从Q0~Q7并行置入数据,当S/L=1时,允许从QH端移出数据。在MCS-51串行控制寄存器SCON中的REN=1时,TXD端发出移位时钟脉冲,从RXD端串行输入8位数据。当接收到第8位数据D7后,置位中断标志RI,表示一帧数据接收完成。3.波特率:方式0波特率固定,为单片机晶振频率的十二分之一。即一个机器周期进行一次移位。4.应用举例:电路如图所示,要求使发光二极管从左向右依次点亮,并进行循环操作,试编程。汇编语言程序如下:MAIN:MOVSCON,#00HCLREAMOVA,#80HTX:CLRP1.0;将74ls164的Q0~Q7端清零MOVSBUF,AJNBTI,$SETBP1.0;发送完,允许Q0~Q7输出数据LCALLDELAYRRA;右循环CLRTISJMPTX对应C51程序如下:#includereg51.hsbitP1_0=P1^0;voidmain(){unsignedcharled;SCON=0;EA=0;led=0x80;P1_0=1;while(1){SBUF=led;while(TI==0);TI=0;led=(led1);循环右移一位if(led==0)led=0x80delay();}}串行口工作方式0工作方式0:8位移位寄存器I/O方式☞发送:SBUF中的串行数据由RxD逐位移出;TxD输出移位时钟,频率=fosc1/12;每送出8位数据TI就自动置1;需要用软件清零TI。☞接收:串行数据由RxD逐位移入SBUF中;TxD输出移位时钟,频率=fosc1/12;每接收8位数据RI就自动置1;需要用软件清零RI。☞经常配合“串入并出”“并入串出”移位寄存器一起使用扩展接口。☞方式0工作时,多用查询方式编程:发送:MOVSBUF,A接收:JNBRI,$JNBTI,$CLRRICLRTIMOVA,SBUF工作方式0:8位移位寄存器I/O方式☞复位时,SCON已经被清零,缺省值:方式0。☞接收前,务必先置位REN=1允许接收数据。串行口方式0的扩展应用——经常用到串行口常用工作方式0扩展出并行I/O口,工作方式1、2、3则常用于串行通信ABCLKhgfedcbaCLRABCLKCLRABCLKCLR+5V74LS16474LS16474LS16474LS164是串入并出芯片;74LS165是并入串出芯片hgfedcbahgfedcba+5V共阳LED数码管VCCTxDRxD51单片机共阳极hgfedcbaabcdgefh共阳LED数码管公共端(字位)接高电平,笔划(字段)置为低电平就被点亮了hgfedcba累加器A110000000C0H=“0”☞比如要显示“0”须令abcdef为“0
本文标题:第7章MCS-51串行接口.
链接地址:https://www.777doc.com/doc-2111554 .html