《单片机原理及应用》项目六-MCS–51串行口应用-单片机与PC机通信课件_第1页
《单片机原理及应用》项目六-MCS–51串行口应用-单片机与PC机通信课件_第2页
《单片机原理及应用》项目六-MCS–51串行口应用-单片机与PC机通信课件_第3页
《单片机原理及应用》项目六-MCS–51串行口应用-单片机与PC机通信课件_第4页
《单片机原理及应用》项目六-MCS–51串行口应用-单片机与PC机通信课件_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用技术单片机原理及MCS–51串行口应用单片机与PC机通信任务一串行通信概述任务二MCS-51串行接口任务三利用串行口扩展并行口任务四典型应用——单片机与PC通信Project6MCS–51串行口应用单片机与PC机通信任务一串行通信概任务1串行通信概述任务1串行通信概述什么是通信?简单地说,不同的系统经由线路相互交换数据,就是通信。数据通信可以分为并行通信和串行通信两种方式P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7GNDMCS—51单片机D0D1D2D3D4D5D6D7GND外部设备01234567RXD(P3.0)GNDMCS—51单片机01234567TXD(P3.1)TXDGND外部设备RXD并行通信示意图串行通信示意图什么是通信?简单地说,不同的系统经由线路相互交换数据,就是通串行通信并行通信数据通信多位数据可以同时传输,通信速度快;但若通信距离较长,传输线路的成本会随之增加,另外,多位数据在远距离传输中也容易产生信号干扰。因此,并行通信适合短距离的数据通信,如系统内部的数据传输。数据在一根数据信号线上一位一位地进行传输,传输速度较慢,但只需一根数据信号线。串行通信可以节约通信成本,在远距离数据通信中应用十分广泛。串行通信并行通信数据通信多位数据可以同时传输,通信速度快;但1、异步通信异步通信方式不要求接收端时钟和发送端时钟同步。发送端发送完一个字符帧后,可经过任意长的时间间隔再发送下一个。异步通信的数据格式如图所示,一个字符帧由起始位、数据位、奇偶校验位和停止位组成。串行通信方式one异步通信的数据格式1、异步通信异步通信方式不要求接收端时钟和发送端时钟同步。发起始位为0(占用1位),表示一个字符的开始,可用于同步接收方的时钟,以确保能够正确接收随后的数据;停止位为1(占用1~2位),表示一个字符的结束;无字符传递时,表示空闲,空闲位为1。接收端不断检测线路的状态,在连续接收到逻辑“1”后收到一个逻辑“0”,表示新的字符帧开始传送。数据位是字符帧中真正需要传输的,一般5~8位,从低位开始传送;为确保数据的准确传输,有些应用场合还需要在停止位之前添加一位奇偶校验位。异步通信中额外的附加位较多,因此,数据传送速度较低,但是对硬件的要求较低,实现起来比较容易,是单片机中常用的数据传送方式。起始位为0(占用1位),表示一个字符的开始,可用于同步接收方2、同步通信同步通信时,接收端和发送端必须先建立同步(即双方的时钟要调整到同一个频率),才能进行数据的传输。同步通信方式以多个字符组成的数据块为传输单位连续地传送数据,在数据块开始时用同步字符来指示,其数据格式如图所示。同步通信对硬件要求较高,适合于需要传送大量数据的场合。同步通信的数据格式2、同步通信同步通信时,接收端和发送端必须先建立同步(即双方串行通信按数据传送的方向可分为单工、半双工和全双工三种制式,如图所示。(a)单工制式串行通信的制式two发送端接收端发送端接收端发送端接收端发送端接收端发送端接收端(b)半双工制式(c)全双工制式串行通信按数据传送的方向可分为单工、半双工和全双工三种制式,串行通信制式单工全双工半双工在通信过程中,数据只能单向传输,称为单工传输通信双方都可以发送和接收数据,并在通信过程中能够实现双向的数据传输,称为全双工传输通信双方都可以发送和接收数据,但在通信过程中只能有一个方向上的传输存在,称为半双工传输提示早期的对讲机是基于半双工的产品;我们平时使用的电话是采用全双工的传输方式;单工传输方式现在使用较少。串行通信制式单工全双工半双工在通信过程中,数据只能单向传输,串行通信的波特率three在串行通信中,每位数据的传送时间(即位宽)是固定的,一般用Td表示。Td的倒数称为波特率,表示每秒传送的二进制代码的位数,它是衡量传输通道频宽的指标。1波特=1位/秒(1bit/s)假设数据传输的速率为100字符/秒,而每个字符包括10个代码位(1个起始位、1个终止位、8个数据位),此时波特率为100×10=1000波特。串行通信的波特率three在串行通信中,每位数据的传送时间(RS-232C美国电子工业协会(EIA)制定,是目前使用最多的一种异步串行通信总线标准。其中“RS”是RecommendedStandard(推荐标准)的缩写,“232”是该标准的标识,“C”表示此标准已修改了三次。RS-232C定义了数据终端设备(DTE)和数据通信设备(DCE)之间的物理接口规范,采用标准接口后,能够方便地把单片机、外设以及测量仪器等有机地连接起来构成一个测控系统。RS-232C串行通信协议适合于短距离或带调制解调器的通信场合。RS-232C串行通讯协议fourRS-232C美国电子工业协会(EIA)制定,是目前使用最多1、RS-232C的电气特性由于RS-232C串行通信协议的制定时间早于TTL电路的产生,与TTL、MOS逻辑电平规定不同,该标准采用负逻辑。电平值为-3~-l5V的低电平表示逻辑“1”;电平值为+3~+l5V的高电平表示逻辑“0”。因此,RS-232C不能直接与TTL电路连接,使用时必须加上适当的电平转换电路,否则将使TTL电路烧毁。目前较为常用的电平转换芯片有MAX232、MC1488和MC1489等。1、RS-232C的电气特性由于RS-232C串行通信协议的2、RS-232C引脚功能标准RS-232C接口采用的是25针D型连接器,如图(a)所示。大部分的通信系统中只用到其中的9个引脚,因此,实际工作中常采用9针串行口,其原理图和实物图如图(b)和(c)所示。另外,在一些简单的通信系统中,只需使用TXD、RXD和地3个引脚就可以完成数据通信。(a)25针串行口原理图(b)9针串行口原理图(c)9针串行口实图2、RS-232C引脚功能标准RS-232C接口采用的是25RS-232C引脚信号可以分为数据发送与接收和联络两部分,其中,RXD和TXD是数据发送与接收信号,用于DTE与DCE之间交换信息;其他信号属于联络信号,用于保证信息正确无误地传输。如表所示为9针串行口和25针串行口的部分引脚定义。9针引脚25针引脚简写功能18CD载波侦测(CarrierDetect)23RXD接收数据(Receive)32TXD发送数据(Transmit)420DTR数据终端准备(DataTerminalReady)57GND地线(Ground)66DSR数据准备好(DataSetReady)74RTS请求发送(RequestToSend)85CTS清除发送(ClearToSend)922RI振铃指示(RingIndicator)RS-232C引脚信号可以分为数据发送与接收和联络两部分,其3.RS-232C的通信距离和速度RS-232C规定最大的负载电容为2500pF,这个电容限制了传输距离和传输速率,在不使用调制解调器(Modem)时,RS-232能够可靠进行数据传输的最大通信距离为15米,对于RS232C远程通信,必须通过调制解调器进行远程通信连接。RS-232C接口最大传输速率为20Kbps,能够提供的传输速率主要有以下几挡:1200bps、2400bps、4800bps、9600bps、19200bps等。另外,由于传输距离与传输速度成反比关系,因此适当地降低传输速度,可以延长RS-232的传输距离,提高通信的稳定性。在仪器仪表或工业控制场合,9600bps是最常见的传输速率。3.RS-232C的通信距离和速度RS-232C规定最大的负任务2MCS-51串行接口任务2MCS-51串行接口串行口的结构one异步通信的数据格式MCS-51单片机串行接口是一个可编程的全双工串行通信接口,通过引脚RXD(P3.0)和引脚TXD(P3.1)与外界通信。串行接口的结构如图所示。串行口的结构one异步通信的数据格式MCS-51单片机串行接输入移位寄存器用于将从外设输入的串行数据转换为并行数据。SBUFSBUF是串行口缓冲寄存器,包括发送SBUF和接收SBUF,两个缓冲器共用一个逻辑地址99H,但实际上它们有相互独立的物理空间。CUP对发送SBUF只能写入不能读出;CPU对接收SBUF只能读出不能写入。SCONSCON是串行控制寄存器,用于定义串行口的工作方式及实施接收和发送控制,在第三部分中将详细讲述其用法。定时器T1用于产生接收和发送数据所需的移位脉冲,称为波特率发生器。T1的溢出频率越高,波特率越高,接收和发送数据的速度越快。各引脚具体功能如下:输入移位寄存器用于将从外设输入的串行数据转换为并行数据。SB串行口接收数据的工作过程串行口发送数据的工作过程工作原理首先,CPU通过内部总线将并行数据写入发送SBUF,在发送控制电路的控制下,按设定好的波特率,每来一次移位脉冲,通过引脚TXD向外输出一位。一帧数据发送结束后,向CPU发出中断请求,TI位置1;CPU响应中断后,开始准备发送下一帧数据。CPU不停检测引脚RXD上的信号,当信号中出现低电平时,在接收控制电路的控制下,按设定好的波特率,每来一次移位脉冲,读取外部设备发送的一位数据到移位寄存器。一帧数据传输结束后,数据被存入接收SBUF,同时向CPU发出中断请求,RI位置1;CPU响应中断后,开始接收下一帧数据。串行口的工作原理two提示在串行通信中,加在数据字符开始和结束部分的起始位、停止位等是由硬件电路直接完成的。

在结构图中我们可以看出,接收数据端硬件结构使用的是双缓冲结构,主要是避免读入的数据产生重叠。串行口接收数据的工作过程串行口发送数据的工作过程工作原理首先串行口的控制寄存器four1.串行口控制寄存器SCONSCON的字节地址为98H,可进行位寻址,各位的名称和地址如表所示。SCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H串行口的控制寄存器four1.串行口控制寄存器SCONSCOSM0和SM1串行口的工作方式选择位,与项目五中M1、M0两位的作用相似,其控制的4种工作方式如表所示。SM0、SM1工作方式功能波特率00方式08位同步移位寄存器fosc/1201方式110位UART由定时器T1控制10方式211位UARTfosc/64或fosc/3211方式311位UART由定时器T1控制SM2多机通信控制位,用于方式2或方式3时,接收状态时,若(SM2)=1且接收到的第9位数据RB8=1,则RI置1;在方式0时,SM2一定要等于0;在方式1时,(SM2)=1且接收到有效停止位时,RI才置1。SM0和SM1串行口的工作方式选择位,与项目五中M1、M0两REN允许/禁止串行接收控制位,由软件进行置位。REN=1时,表示允许串行接收;REN=0时,则禁止接收。TB8要发送数据的第9位。在方式2或方式3中,作为要发送的第9位数据,可根据需要由软件置1或清0。例如,可约定作为奇偶校验位,或在多机通信中作为区别地址帧或数据帧的标志位。RB8接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。TI和RI发送中断请求标志位和接收中断请求标志位,在项目四中已经介绍。REN允许/禁止串行接收控制位,由软件进行置位。REN=1时2.电源控制寄存器PCONPCON的位结构如表所示。SCOND7D6D5D4D3D2D1D0位名称SMOD———GF1GF0PDIDLPCON的最高位SMOD是串行口的波特率倍增位。当SMOD=1时,串行口方式1、2、3的波特率加倍;当SMOD=0时,原设定的波特率不变。2.电源控制寄存器PCONPCON的位结构如表所示。SCON串行口的工作方式four1.方式0外接移位寄存器的工作方式,8位数据为一帧,没有起始位和停止位,先发送或接收最低位,波特率固定不变,为振荡率的fosc/12。该方式主要用来外接移位寄存器来扩展I/O口,或外接同步输入输出设备。方式0的功能结构简化图如图所示。方式0的功能结构简化图串行口的工作方式four1.方式0外接移位寄存器的工作方式,发送数据时,将发送数据缓冲器的数据串行移到外接的移位寄存器,通过引脚RXD输出;引脚TXD输出移位脉冲,用于使外接移位寄存器移位。8位数据以fosc/12的固定频率输出,发送完一帧数据后,发送中断标志TI由硬件置位。接收数据时,复位接收请求标志RI=0,置位允许接收控制位REN=1,外接移位寄存器中的内容首先移入内部的输入寄存器,然后再写入接收数据缓冲寄存器,此后RI置1。发送数据时,将发送数据缓冲器的数据串行移到外接的移位寄存器,方式0的功能结构简化图2.方式110位的UART格式,一帧数据由10位组成,1位起始位,8位数据,1位停止位。波特率可变,根据定时器1的溢出率计算(详见第五部分)。全双工通信模式,TXD为信息发送端,RXD为信息接收端。方式1的功能结构简化图如图所示。方式0的功能结构简化图2.方式110位的UART格式,一帧数发送数据时,CPU执行一条写SBUF指令,启动了串行口发送,同时将1写入输出移位寄存器的第9位。发送起始位后,在每个移位脉冲的作用下,输出移位寄存器右移一位,左边移入0。在数据最高位移到输出位时,原写入的第9位1的左边全是0,检测电路检测到这一条件后,使控制电路作最后一次移位,一帧数据发送完毕,TI置1。发送数据时,CPU执行一条写SBUF指令,启动了串行口发送,接收数据时,接收器以所选波特率的16倍速率对RXD端电平进行采样,当检测到一个负跳变(由“1”至“0”)时,启动接收器,同时把“1FFH”写入输入移位寄存器。接收控制器把一位传送时间16等分采样RXD,以其中7、8、9三次采样中至少2次相同的值为接收值(由于接、发双方时钟频率有少许误差,这样做可以提高可靠性)。接收的数据从移位寄存器右边进入,已装入的“1FFH”逐位由左移出,当最左边是起始位0时,说明已接收8位数据,再作最后一次移位,接收停止位。A.若RI=0、SM2=0,则8位数据装入SBUF,停止位入RB8,置RI=1。B.若RI=0、SM2=1,且停止位为1时,结果与A相同。C.若RI=0、SM2=1,且停止位为0时,所接收数据丢失。D.若RI=1,则所接收数据丢失。无论出现哪种情况,检测器都重新检测RXD端的负跳变,以便接收下一帧。接收数据时,接收器以所选波特率的16倍速率对RXD端电平进行方式0的功能结构简化图3.方式2和方式311位的UART格式,一帧数据由11位组成,1位起始位,8位数据,1位可编程控制的第9位数据和1位停止位。方式2和方式3除波特率设定外,其他相同,适用于多机通信,其功能结构简化图如图所示。方式0的功能结构简化图3.方式2和方式311位的UART格式发送数据时,向SBUF写入一个数据就启动串口发送,同时将TB8写入输出移位寄存器第9位。开始时,SEND和DATA都是低电平,把起始位输出到TXD。以后每次移位,左边移入0,当TB8移到输出位时,其左边是一个1和全0。检测到此条件,再进行最后一次移位,SEND=1,DATA=0,输出停止位,置TI=1。接收数据时,置REN=1,与方式1类似,起始位0移到输入寄存器的最左边时,进行最后一次移位。在RI=0,SM2=0或接收到的第9位=1时,收到的一字节数据装入SBUF,第9位进入RB8,置RI=1;然后又开始检测RXD端负跳变。发送数据时,向SBUF写入一个数据就启动串口发送,同时将TB提示利用单片机的方式2和方式3可以实现多机通信,多机通信中有一台主机和多台从机,主机与各从机之间可以进行通信,从机与从机之间不能进行通信。实现原理如下:1.所有从机的SM2位置l,处于只接收地址帧的状态。2.主机发送一帧地址信息,其中包含8位地址,第9位为1,以表示发送的是地址。3.从机接收到地址帧后,各自将接收到的地址与其本身地址相比较。4.被寻址的从机,清除其SM2,未被寻址的其他从机仍维持SM2=1不变。5.主机发送数据或控制信息(第9位为0)。对于已被寻址的从机,因SM2=0,故

可以接收主机发送过来的信息。而对于其他从机,因SM2维持为l,对主机发来的数据帧将不予理睬,直至发来新的地址帧。6.当主机改为与另外从机联系时,可再发出地址帧寻址其从机:而先前被寻址过的从机在分析出主机是对其他从机寻址时,恢复其SM2=l,对随后主机发来的数据帧不加理睬。提示利用单片机的方式2和方式3可以实现多机通信,多机通信中有串行口的波特率设定five1.方式0方式0的波特率计算公式:fosc/122.方式2方式2的波特率计算公式:fosc×2SMOD/64。当SMOD=1时,方式2的波特率为fosc/32;当SMOD=0时,方式2的波特率为fosc/64。3.方式1或方式3方式3的波特率计算公式:T1的溢出率×2SMOD/32串行口的波特率设定five1.方式0方式0的波特率计算公式:使用定时计数器T1作为波特率发生器时,常选用定时方式2—8位自动重置方式(参见项目五)。T1的溢出率为fosc/[12×(256-TH1)]。用作波特率发生器时应禁止T1中断。在实际应用中,常常需要确定波特率后再求T1的定时初值。其中,确定TH1初值的公式为:TH1=256-fosc/(波特率×12×32/2SMOD)。使用定时计数器T1作为波特率发生器时,常选用定时方式2—8位串口工作方式波特率(bit/s)fosc(MHz)SMODT1方式2的初值方式1或方式3120011.05920E8H方式1或方式3240011.05920F4H方式1或方式3480011.05920FAH方式1或方式3960011.05920FDH方式1或方式31920011.05921FDH方式1或方式362500121FFH方式01M12xx方式2375K121x下表列出了一些常用的波特率以及产生条件串口工作方式波特率(bit/s)fosc(MHz)SMODT任务3利用串行口扩展并行口任务3利用串行口扩展并行口当单片机本身的并行口不能满足需要时,可以通过串行口进行扩展。此时采用方式0,外接一个串入并出的移位寄存器,可以实现由串行到并行的转换。常用的移位寄存器有4094、74LS164、74LS165等。另外,串行口也可以外接并入串出的移位寄存器,来实现由并行到串行的转换,常用的转换芯片如4014等。当单片机本身的并行口不能满足需要时,可以通过串行口进行扩展。【例6-1】使用4094扩展单片机的串行口进行流水灯实验。硬件设计在项目二的流水灯设计中是通过并行口直接进行控制,这里我们使用串行口对流水灯进行控制,在proteus中进行仿真的硬件原理图如图所示。扩展单片机串行口【例6-1】使用4094扩展单片机的串行口进行流水灯实验。硬关于芯片4094的功能:4094是一个8位串行输入和并行输出的同步移位寄存器。引脚1为控制端,这里设置与P1.0相连。若STB=0,则8位并行数据输出关闭,但允许串行数据从DATA输入;若STB=1,则DATA输入端关闭,但允许8位数据并行输出;引脚2为数据输入端(DATA)与单片机的RXD端相连;引脚3为同步脉冲输入端(CLK)与单片机的TXD端相连。关于芯片4094的功能:软件设计ORG 000HLJMP MAINORG 0030HMAIN:MOV SCON,#0 ;设置串行口工作在方式0CLR ES ;禁止串行中断MOV DPTR,#TAB ;流水花样数据表首地址送DPTRL1MOV A,#0 ;将累加器A清0MOVC A,@A+DPTR ;查流水花样数据表软件的设计采用查表方式,程序如下:软件设计ORG 000H软件的设计采用查表方式,程序如下:CLR P1.0 ;关闭并行输出MOV SBUF,A ;开始串行输出JNB TI,$ ;等待8位数据输出完毕CLR TI ;8位数据输出完毕,TI标志置0,准备下次输出SETB P1.0 ;打开并行口输出ACALL DELAY ;调用延时子程序INC DPTR ;数据指针加1CJNE A,#0FFH,L1 ;判断流水花样是否结束DELAY: ;延时子程序MOV R5,#20LOOP1:MOV R6,#20CLR P1.0 ;关闭并行输出LOOP2:MOV R7,#230DJNZ R7,$ DJNZ R6,LOOP2DJNZ R5,LOOP1RETTAB: ;流水花样数据表DB 11111110BDB 11111101BDB 11111011BDB 11110111BDB 11101111BDB 11011111BDB 10111111BDB 01111111BDB 10111111BDB 11011111BDB 11101111BDB 11110111BDB 11111011BDB 11111101BDB 11111110BDB 0FFH ;流水花样结束标志0FFHENDLOOP2:DB 10111111B任务4典型应用——

单片机与PC通信任务4典型应用——单片机与PC机通信原理图提示串行口P1的获得,可以通过在“PickDevices”对话框中通过输入关键字“COMPIM”。在proteus中进行仿真时,不需要电平的转换,所有没有使用如MAX232一类的电平转换芯片,但是在实际应用中是必不可少的。硬件设计one单片机与PC机通信原理图提示串行口P1的获得,可以通过在“P软件设计twoORG 0000H ;通信初始化设置MOV P1,#0FFH ;P1端口初始化MOV SCON,#50H ;设置成串口1方式MOV TMOD,#20H ;波特率发生器T1工作在模式2上MOV TH1,#0FDH ;预置初值(按照波特率9600BPS预置初值)MOV TL1,#0FDH ;预置初值(按照波特率9600BPS预置初值)SETB TR1 ;启动定时器T1WAIT:JB P1.0,$ ;判断K1是否按下,如果没有按下就等待软件设计twoORG 0000H ;通信初始化设置ACALL DELAY10 ;延时10毫秒消除触点抖动JB P1.0,WAIT ;去除干扰信号JNB P1.0,$ ;等待按键松开D1:MOV A,#0FAH ;将16进制的字符AF发送到AMOV SBUF,A ;将AF通过串口发送出去ACALL DELAY10AJMP WAITDELAY10: ;延时子程序MOV R4,#20D2:MOV R5,#248DJNZ R5,$DJNZ R4,D2RETENDACALL DELAY10 ;延时10毫秒消除触点抖仿真通信three进行单片机与PC机之间的通信仿真除需要proteus外,还要用到两个仿真软件:虚拟串口软件和串口调试软件(这两个软件均可以通过网络下载得到)。仿真通信three进行单片机与PC机之间的通信仿真除需要pr步骤一打开虚拟串口软件,如图所示。这里我们创建一个虚拟串口与计算机的串口相连,新建COM3与串口COM1相连,然后单击“Addpair”按钮。注意计算机上一般都有1~2个标准RS-232C串口,即通道COM1和COM2。我们一般可以从计算机后面查看到本机的通信端口。步骤一打开虚拟串口软件,如图所示。这里我们创建一个虚拟串口与步骤二添加完成后,我们可以看到左侧的“Virtualports”中已经添加的串口连接,如图所示。步骤二添加完成后,我们可以看到左侧的“Virtualpor步骤三打开串口调试工具,按照软件中设置的波特率和数据通信格式进行相应设置,如图所示,并打开串口。步骤三打开串口调试工具,按照软件中设置的波特率和数据通信格式步骤四按照软件设计中的数值,对proteus中8051芯片和串行口的参数进行相应的设置(在相应组件上单击右键选择“EditComponent”选项),如左图和右图所示。步骤四按照软件设计中的数值,对proteus中8051芯片和步骤五确认完成所有准备工作后,在proteus中单击开关按钮,这时在串口调试窗口中可以看到发送过来的“FA”。步骤五确认完成所有准备工作后,在proteus中单击开关按钮MCS–51串行口应用——单片机与PC机通信项目总结项目六介绍了MCS-51单片机的串行口结构与应用。其中,任务一中首先介绍了串行通信的基础知识;在接下来的任务二中介绍了串行接口的结构和工作原理;任务三中介绍了一个仿真实验,讲述了如何利用串行口扩展并行口;任务四中给出了一个典型应用,讲述了如何使用proteus和两个仿真软件进行单片机和PC的通信。MCS–51串行口应用——单片机与PC机通信项目总结项目六介THANKSFORWATCHING谢谢收看THANKSFORWATCHING谢谢收看单片机原理及应用技术单片机原理及MCS–51串行口应用单片机与PC机通信任务一串行通信概述任务二MCS-51串行接口任务三利用串行口扩展并行口任务四典型应用——单片机与PC通信Project6MCS–51串行口应用单片机与PC机通信任务一串行通信概任务1串行通信概述任务1串行通信概述什么是通信?简单地说,不同的系统经由线路相互交换数据,就是通信。数据通信可以分为并行通信和串行通信两种方式P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7GNDMCS—51单片机D0D1D2D3D4D5D6D7GND外部设备01234567RXD(P3.0)GNDMCS—51单片机01234567TXD(P3.1)TXDGND外部设备RXD并行通信示意图串行通信示意图什么是通信?简单地说,不同的系统经由线路相互交换数据,就是通串行通信并行通信数据通信多位数据可以同时传输,通信速度快;但若通信距离较长,传输线路的成本会随之增加,另外,多位数据在远距离传输中也容易产生信号干扰。因此,并行通信适合短距离的数据通信,如系统内部的数据传输。数据在一根数据信号线上一位一位地进行传输,传输速度较慢,但只需一根数据信号线。串行通信可以节约通信成本,在远距离数据通信中应用十分广泛。串行通信并行通信数据通信多位数据可以同时传输,通信速度快;但1、异步通信异步通信方式不要求接收端时钟和发送端时钟同步。发送端发送完一个字符帧后,可经过任意长的时间间隔再发送下一个。异步通信的数据格式如图所示,一个字符帧由起始位、数据位、奇偶校验位和停止位组成。串行通信方式one异步通信的数据格式1、异步通信异步通信方式不要求接收端时钟和发送端时钟同步。发起始位为0(占用1位),表示一个字符的开始,可用于同步接收方的时钟,以确保能够正确接收随后的数据;停止位为1(占用1~2位),表示一个字符的结束;无字符传递时,表示空闲,空闲位为1。接收端不断检测线路的状态,在连续接收到逻辑“1”后收到一个逻辑“0”,表示新的字符帧开始传送。数据位是字符帧中真正需要传输的,一般5~8位,从低位开始传送;为确保数据的准确传输,有些应用场合还需要在停止位之前添加一位奇偶校验位。异步通信中额外的附加位较多,因此,数据传送速度较低,但是对硬件的要求较低,实现起来比较容易,是单片机中常用的数据传送方式。起始位为0(占用1位),表示一个字符的开始,可用于同步接收方2、同步通信同步通信时,接收端和发送端必须先建立同步(即双方的时钟要调整到同一个频率),才能进行数据的传输。同步通信方式以多个字符组成的数据块为传输单位连续地传送数据,在数据块开始时用同步字符来指示,其数据格式如图所示。同步通信对硬件要求较高,适合于需要传送大量数据的场合。同步通信的数据格式2、同步通信同步通信时,接收端和发送端必须先建立同步(即双方串行通信按数据传送的方向可分为单工、半双工和全双工三种制式,如图所示。(a)单工制式串行通信的制式two发送端接收端发送端接收端发送端接收端发送端接收端发送端接收端(b)半双工制式(c)全双工制式串行通信按数据传送的方向可分为单工、半双工和全双工三种制式,串行通信制式单工全双工半双工在通信过程中,数据只能单向传输,称为单工传输通信双方都可以发送和接收数据,并在通信过程中能够实现双向的数据传输,称为全双工传输通信双方都可以发送和接收数据,但在通信过程中只能有一个方向上的传输存在,称为半双工传输提示早期的对讲机是基于半双工的产品;我们平时使用的电话是采用全双工的传输方式;单工传输方式现在使用较少。串行通信制式单工全双工半双工在通信过程中,数据只能单向传输,串行通信的波特率three在串行通信中,每位数据的传送时间(即位宽)是固定的,一般用Td表示。Td的倒数称为波特率,表示每秒传送的二进制代码的位数,它是衡量传输通道频宽的指标。1波特=1位/秒(1bit/s)假设数据传输的速率为100字符/秒,而每个字符包括10个代码位(1个起始位、1个终止位、8个数据位),此时波特率为100×10=1000波特。串行通信的波特率three在串行通信中,每位数据的传送时间(RS-232C美国电子工业协会(EIA)制定,是目前使用最多的一种异步串行通信总线标准。其中“RS”是RecommendedStandard(推荐标准)的缩写,“232”是该标准的标识,“C”表示此标准已修改了三次。RS-232C定义了数据终端设备(DTE)和数据通信设备(DCE)之间的物理接口规范,采用标准接口后,能够方便地把单片机、外设以及测量仪器等有机地连接起来构成一个测控系统。RS-232C串行通信协议适合于短距离或带调制解调器的通信场合。RS-232C串行通讯协议fourRS-232C美国电子工业协会(EIA)制定,是目前使用最多1、RS-232C的电气特性由于RS-232C串行通信协议的制定时间早于TTL电路的产生,与TTL、MOS逻辑电平规定不同,该标准采用负逻辑。电平值为-3~-l5V的低电平表示逻辑“1”;电平值为+3~+l5V的高电平表示逻辑“0”。因此,RS-232C不能直接与TTL电路连接,使用时必须加上适当的电平转换电路,否则将使TTL电路烧毁。目前较为常用的电平转换芯片有MAX232、MC1488和MC1489等。1、RS-232C的电气特性由于RS-232C串行通信协议的2、RS-232C引脚功能标准RS-232C接口采用的是25针D型连接器,如图(a)所示。大部分的通信系统中只用到其中的9个引脚,因此,实际工作中常采用9针串行口,其原理图和实物图如图(b)和(c)所示。另外,在一些简单的通信系统中,只需使用TXD、RXD和地3个引脚就可以完成数据通信。(a)25针串行口原理图(b)9针串行口原理图(c)9针串行口实图2、RS-232C引脚功能标准RS-232C接口采用的是25RS-232C引脚信号可以分为数据发送与接收和联络两部分,其中,RXD和TXD是数据发送与接收信号,用于DTE与DCE之间交换信息;其他信号属于联络信号,用于保证信息正确无误地传输。如表所示为9针串行口和25针串行口的部分引脚定义。9针引脚25针引脚简写功能18CD载波侦测(CarrierDetect)23RXD接收数据(Receive)32TXD发送数据(Transmit)420DTR数据终端准备(DataTerminalReady)57GND地线(Ground)66DSR数据准备好(DataSetReady)74RTS请求发送(RequestToSend)85CTS清除发送(ClearToSend)922RI振铃指示(RingIndicator)RS-232C引脚信号可以分为数据发送与接收和联络两部分,其3.RS-232C的通信距离和速度RS-232C规定最大的负载电容为2500pF,这个电容限制了传输距离和传输速率,在不使用调制解调器(Modem)时,RS-232能够可靠进行数据传输的最大通信距离为15米,对于RS232C远程通信,必须通过调制解调器进行远程通信连接。RS-232C接口最大传输速率为20Kbps,能够提供的传输速率主要有以下几挡:1200bps、2400bps、4800bps、9600bps、19200bps等。另外,由于传输距离与传输速度成反比关系,因此适当地降低传输速度,可以延长RS-232的传输距离,提高通信的稳定性。在仪器仪表或工业控制场合,9600bps是最常见的传输速率。3.RS-232C的通信距离和速度RS-232C规定最大的负任务2MCS-51串行接口任务2MCS-51串行接口串行口的结构one异步通信的数据格式MCS-51单片机串行接口是一个可编程的全双工串行通信接口,通过引脚RXD(P3.0)和引脚TXD(P3.1)与外界通信。串行接口的结构如图所示。串行口的结构one异步通信的数据格式MCS-51单片机串行接输入移位寄存器用于将从外设输入的串行数据转换为并行数据。SBUFSBUF是串行口缓冲寄存器,包括发送SBUF和接收SBUF,两个缓冲器共用一个逻辑地址99H,但实际上它们有相互独立的物理空间。CUP对发送SBUF只能写入不能读出;CPU对接收SBUF只能读出不能写入。SCONSCON是串行控制寄存器,用于定义串行口的工作方式及实施接收和发送控制,在第三部分中将详细讲述其用法。定时器T1用于产生接收和发送数据所需的移位脉冲,称为波特率发生器。T1的溢出频率越高,波特率越高,接收和发送数据的速度越快。各引脚具体功能如下:输入移位寄存器用于将从外设输入的串行数据转换为并行数据。SB串行口接收数据的工作过程串行口发送数据的工作过程工作原理首先,CPU通过内部总线将并行数据写入发送SBUF,在发送控制电路的控制下,按设定好的波特率,每来一次移位脉冲,通过引脚TXD向外输出一位。一帧数据发送结束后,向CPU发出中断请求,TI位置1;CPU响应中断后,开始准备发送下一帧数据。CPU不停检测引脚RXD上的信号,当信号中出现低电平时,在接收控制电路的控制下,按设定好的波特率,每来一次移位脉冲,读取外部设备发送的一位数据到移位寄存器。一帧数据传输结束后,数据被存入接收SBUF,同时向CPU发出中断请求,RI位置1;CPU响应中断后,开始接收下一帧数据。串行口的工作原理two提示在串行通信中,加在数据字符开始和结束部分的起始位、停止位等是由硬件电路直接完成的。

在结构图中我们可以看出,接收数据端硬件结构使用的是双缓冲结构,主要是避免读入的数据产生重叠。串行口接收数据的工作过程串行口发送数据的工作过程工作原理首先串行口的控制寄存器four1.串行口控制寄存器SCONSCON的字节地址为98H,可进行位寻址,各位的名称和地址如表所示。SCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H串行口的控制寄存器four1.串行口控制寄存器SCONSCOSM0和SM1串行口的工作方式选择位,与项目五中M1、M0两位的作用相似,其控制的4种工作方式如表所示。SM0、SM1工作方式功能波特率00方式08位同步移位寄存器fosc/1201方式110位UART由定时器T1控制10方式211位UARTfosc/64或fosc/3211方式311位UART由定时器T1控制SM2多机通信控制位,用于方式2或方式3时,接收状态时,若(SM2)=1且接收到的第9位数据RB8=1,则RI置1;在方式0时,SM2一定要等于0;在方式1时,(SM2)=1且接收到有效停止位时,RI才置1。SM0和SM1串行口的工作方式选择位,与项目五中M1、M0两REN允许/禁止串行接收控制位,由软件进行置位。REN=1时,表示允许串行接收;REN=0时,则禁止接收。TB8要发送数据的第9位。在方式2或方式3中,作为要发送的第9位数据,可根据需要由软件置1或清0。例如,可约定作为奇偶校验位,或在多机通信中作为区别地址帧或数据帧的标志位。RB8接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。TI和RI发送中断请求标志位和接收中断请求标志位,在项目四中已经介绍。REN允许/禁止串行接收控制位,由软件进行置位。REN=1时2.电源控制寄存器PCONPCON的位结构如表所示。SCOND7D6D5D4D3D2D1D0位名称SMOD———GF1GF0PDIDLPCON的最高位SMOD是串行口的波特率倍增位。当SMOD=1时,串行口方式1、2、3的波特率加倍;当SMOD=0时,原设定的波特率不变。2.电源控制寄存器PCONPCON的位结构如表所示。SCON串行口的工作方式four1.方式0外接移位寄存器的工作方式,8位数据为一帧,没有起始位和停止位,先发送或接收最低位,波特率固定不变,为振荡率的fosc/12。该方式主要用来外接移位寄存器来扩展I/O口,或外接同步输入输出设备。方式0的功能结构简化图如图所示。方式0的功能结构简化图串行口的工作方式four1.方式0外接移位寄存器的工作方式,发送数据时,将发送数据缓冲器的数据串行移到外接的移位寄存器,通过引脚RXD输出;引脚TXD输出移位脉冲,用于使外接移位寄存器移位。8位数据以fosc/12的固定频率输出,发送完一帧数据后,发送中断标志TI由硬件置位。接收数据时,复位接收请求标志RI=0,置位允许接收控制位REN=1,外接移位寄存器中的内容首先移入内部的输入寄存器,然后再写入接收数据缓冲寄存器,此后RI置1。发送数据时,将发送数据缓冲器的数据串行移到外接的移位寄存器,方式0的功能结构简化图2.方式110位的UART格式,一帧数据由10位组成,1位起始位,8位数据,1位停止位。波特率可变,根据定时器1的溢出率计算(详见第五部分)。全双工通信模式,TXD为信息发送端,RXD为信息接收端。方式1的功能结构简化图如图所示。方式0的功能结构简化图2.方式110位的UART格式,一帧数发送数据时,CPU执行一条写SBUF指令,启动了串行口发送,同时将1写入输出移位寄存器的第9位。发送起始位后,在每个移位脉冲的作用下,输出移位寄存器右移一位,左边移入0。在数据最高位移到输出位时,原写入的第9位1的左边全是0,检测电路检测到这一条件后,使控制电路作最后一次移位,一帧数据发送完毕,TI置1。发送数据时,CPU执行一条写SBUF指令,启动了串行口发送,接收数据时,接收器以所选波特率的16倍速率对RXD端电平进行采样,当检测到一个负跳变(由“1”至“0”)时,启动接收器,同时把“1FFH”写入输入移位寄存器。接收控制器把一位传送时间16等分采样RXD,以其中7、8、9三次采样中至少2次相同的值为接收值(由于接、发双方时钟频率有少许误差,这样做可以提高可靠性)。接收的数据从移位寄存器右边进入,已装入的“1FFH”逐位由左移出,当最左边是起始位0时,说明已接收8位数据,再作最后一次移位,接收停止位。A.若RI=0、SM2=0,则8位数据装入SBUF,停止位入RB8,置RI=1。B.若RI=0、SM2=1,且停止位为1时,结果与A相同。C.若RI=0、SM2=1,且停止位为0时,所接收数据丢失。D.若RI=1,则所接收数据丢失。无论出现哪种情况,检测器都重新检测RXD端的负跳变,以便接收下一帧。接收数据时,接收器以所选波特率的16倍速率对RXD端电平进行方式0的功能结构简化图3.方式2和方式311位的UART格式,一帧数据由11位组成,1位起始位,8位数据,1位可编程控制的第9位数据和1位停止位。方式2和方式3除波特率设定外,其他相同,适用于多机通信,其功能结构简化图如图所示。方式0的功能结构简化图3.方式2和方式311位的UART格式发送数据时,向SBUF写入一个数据就启动串口发送,同时将TB8写入输出移位寄存器第9位。开始时,SEND和DATA都是低电平,把起始位输出到TXD。以后每次移位,左边移入0,当TB8移到输出位时,其左边是一个1和全0。检测到此条件,再进行最后一次移位,SEND=1,DATA=0,输出停止位,置TI=1。接收数据时,置REN=1,与方式1类似,起始位0移到输入寄存器的最左边时,进行最后一次移位。在RI=0,SM2=0或接收到的第9位=1时,收到的一字节数据装入SBUF,第9位进入RB8,置RI=1;然后又开始检测RXD端负跳变。发送数据时,向SBUF写入一个数据就启动串口发送,同时将TB提示利用单片机的方式2和方式3可以实现多机通信,多机通信中有一台主机和多台从机,主机与各从机之间可以进行通信,从机与从机之间不能进行通信。实现原理如下:1.所有从机的SM2位置l,处于只接收地址帧的状态。2.主机发送一帧地址信息,其中包含8位地址,第9位为1,以表示发送的是地址。3.从机接收到地址帧后,各自将接收到的地址与其本身地址相比较。4.被寻址的从机,清除其SM2,未被寻址的其他从机仍维持SM2=1不变。5.主机发送数据或控制信息(第9位为0)。对于已被寻址的从机,因SM2=0,故

可以接收主机发送过来的信息。而对于其他从机,因SM2维持为l,对主机发来的数据帧将不予理睬,直至发来新的地址帧。6.当主机改为与另外从机联系时,可再发出地址帧寻址其从机:而先前被寻址过的从机在分析出主机是对其他从机寻址时,恢复其SM2=l,对随后主机发来的数据帧不加理睬。提示利用单片机的方式2和方式3可以实现多机通信,多机通信中有串行口的波特率设定five1.方式0方式0的波特率计算公式:fosc/122.方式2方式2的波特率计算公式:fosc×2SMOD/64。当SMOD=1时,方式2的波特率为fosc/32;当SMOD=0时,方式2的波特率为fosc/64。3.方式1或方式3方式3的波特率计算公式:T1的溢出率×2SMOD/32串行口的波特率设定five1.方式0方式0的波特率计算公式:使用定时计数器T1作为波特率发生器时,常选用定时方式2—8位自动重置方式(参见项目五)。T1的溢出率为fosc/[12×(256-TH1)]。用作波特率发生器时应禁止T1中断。在实际应用中,常常需要确定波特率后再求T1的定时初值。其中,确定TH1初值的公式为:TH1=256-fosc/(波特率×12×32/2SMOD)。使用定时计数器T1作为波特率发生器时,常选用定时方式2—8位串口工作方式波特率(bit/s)fosc(MHz)SMODT1方式2的初值方式1或方式3120011.05920E8H方式1或方式3240011.05920F4H方式1或方式3480011.05920FAH方式1或方式3960011.05920FDH方式1或方式31920011.05921FDH方式1或方式362500121FFH方式01M12xx方式2375K121x下表列出了一些常用的波特率以及产生条件串口工作方式波特率(bit/s)fosc(MHz)SMODT任务3利用串行口扩展并行口任务3利用串行口扩展并行口当单片机本身的并行口不能满足需要时,可以通过串行口进行扩展。此时采用方式0,外接一个串入并出的移位寄存器,可以实现由串行到并行的转换。常用的移位寄存器有4094、74LS164、74LS165等。另外,串行口也可以外接并入串出的移位寄存器,来实现由并行到串行的转换,常用的转换芯片如4014等。当单片机本身的并行口不能满足需要时,可以通过串行口进行扩展。【例6-1】使用4094扩展单片机的串行口进行流水灯实验。硬件设计在项目二的流水灯设计中是通过并行口直接进行控制,这里我们使用串行口对流水灯进行控制,在proteus中进行仿真的硬件原理图如图所示。扩展单片机串行口【例6-1】使用4094扩展单片机的串行口进行流水灯实验。硬关于芯片4094的功能:4094是一个8位串行输入和并行输出的同步移位寄存器。引脚1为控制端,这里设置与P1.0相连。若STB=0,则8位并行数据输出关闭,但允许串行数据从DATA输入;若STB=1,则DATA输入端关闭,但允许8位数据并行输出;引脚2为数据输入端(DATA)与单片机的RXD端相连;引脚3为同步脉冲输入端(CLK)与单片机的TXD端相连。关于芯片4094的功能:软件设计ORG 000HLJMP MAINORG 0030HMAIN:MOV SCON,#0 ;设置串行口工作在方式0CLR ES ;禁止串行中断MOV DPTR,#TAB ;流水花样数据表首地址送DPTRL1MOV A,#0 ;将累加器A清0MOVC A,@A+DPTR ;查流水花样数据表软件的设计采用查表方式,程序如下:软件设计ORG 000H软件的设计采用查表方式,程序如下:CL

温馨提示

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

评论

0/150

提交评论