单片机的数据通信.ppt
第8章 单片机的数据通信,8.1 单片机的串行通信8.2 单片机与PC之间的串行通信习题,本章将围绕着单片机在实际应用中对串口的使用,根据通信的方法分别介绍单片机的各种通信和数据传送的方式。对于1-wire总线、IIC总线和SPI总线等知识由于内容较多,本书将在后面单独作为一章来介绍。,8.1 单片机的串行通信,8.1.1 案例介绍及知识要点8.1.2 程序示例8.1.3 知识总结串行口的结构8.1.4 知识总结串行口相关特殊功能寄存器8.1.5 知识总结串行通信工作方式及波特率的计算,8.1.1 案例介绍及知识要点,利用单片机a将一段流水灯控制程序发送到单片机b,利用b来控制其P1口点亮8位LED,如图8-1所示。了解串行口的基本结构和工作原理。掌握相关寄存器的配置方式。了解串行口的工作方式,掌握串行通信波特率的计算方式。掌握应用程序的编写方法。,8.1.2 程序示例,1案例分析a完成发送,b完成接收。编写程序设置a,令SM0=0,SM1=1。设置b,令SM0=0,SM1=1,REN=1,使接收允许。2源程序1)数据发送程序2)数据接收程序,8.1.3 知识总结串行口的结构,51系列单片机的串行口占用P3.0和P3.1两个引脚,是一个全双工的异步串行通信接口,可以同时发送和接收数据。P3.0是串行数据接收端RXD,P3.1是串行数据发送端TXD。51单片机串行接口的内部结构如图8-2所示。51单片机串行接口的结构由串行接口控制电路、发送电路和接收电路3部分组成。,8.1.4 知识总结串行口相关特殊功能寄存器,串行口控制寄存器SCON存放串行口的控制和状态信息,串行口用定时器T1作为波特率发生器(发送接受时钟),电源控制寄存器PCON的最高位SMOD为串行口波特率的倍率控制位,中断允许控制寄存器IE控制串行通信中断是否允许。具体格式如下。1串行口控制寄存器SCON2数据缓冲器SBUF3电源控制寄存器PCON4中断允许控制寄存器IE,1串行口控制寄存器SCON,串行口的工作方式是由串行口控制寄存器SCON控制的,其格式如表8-1所示。(1)SM0和SM1:用于设置串行接口的工作方式,有4种工作方式,如表8-2所示。(2)SM2:方式2和方式3的多级通信控制位。对于方式2或方式3,如SM2置为1,则接收到的第9位数据(RB8)为1时置位RI,否则不置位;对于方式1,若SM2=1,则只有接收到有效的停止位时才会置位RI。对于方式0,SM2应该为0。(3)REN:允许串行接收位。由软件置位或清零。REN=1时,串行接口允许接收数据;REN=0时,则禁止接收。(4)TB8:对于方式2和方式3,是发送数据的第9位。可用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位,TB8=0,发送地址帧,TB8=1,发送数据帧。需要有软件置1或清0。(5)RB8:对于方式2和方式3,是接收数据的第9位,作为奇偶校验位或地址帧/数据帧的标志位。对于方式1,若SM2=0,则RB8是接收到的停止位。对于方式0,不使用RB8。(6)TI:发送中断标志位。由硬件在方式0串行发送第8位结束时置位,或在其他方式串行发送停止位的开始时置位,向CPU发中断申请,但必须在中断服务程序中由软件将其清0,取消此中断请求。(7)RI:接收中断标志位。由硬件在方式0接收到第8位结束时置位,或在其他方式接收到停止位的中间时置位,向CPU发中断申请,但必须在中断服务程序中由软件将其清0,取消此中断请求。,表8-12,2数据缓冲器SBUF,发送缓冲器只管发送数据,51单片机没有专门的启动发送的指令,发送时,就是CPU写入SBUF的过程(MOV SBUF,A);接收缓冲器只管接收数据,接受时,就是CPU读取SBUF的过程(MOV A,SBUF)。即数据接收缓冲器只能读出不能写入,数据发送缓冲器只能写入不能读出。CPU对特殊功能寄存器SBUF执行写操作,就是将数据写入发送缓冲器;对SBUF执行读操作就是读出接受缓冲器的内容。所以可以同时发送和接收数据。对于发送缓冲器,由于发送时CPU是主动的,不会产生重叠错误。而接收缓冲器是双缓冲结构,以避免在接收下一帧数据之前,CPU未能及时响应接收器的中断,没有把上一帧数据取走,就会丢失前一字节的内容。,3电源控制寄存器PCON,PCON的最高位是串行口波特率系数控制位SMOD,在串行接口方式1、方式2和方式3时,波特率与SMOD有关,当SMOD=1时,波特率加倍,否则不加倍。复位时,SMOD=0。PCON的地址为97H,不能位寻址,需要字节传送。其格式如表8-3所示。,4中断允许控制寄存器IE,此寄存器在6.2.5节中断的控制与实现中已经介绍过,此处为了串行数据通信的需要又一次列出,其格式如表8-4所示。其中,ES为串行通信中断允许位:ES=0,禁止串行端口中断;ES=1,允许串行端口的接收和发送中断。,8.1.5 知识总结串行通信工作方式及波特率的计算,通过对串行控制寄存器SM0(SCON.7)和SM1(SCON.6)的设置,可将51单片机的串行通信设置成4种不同的工作方式,如表8-2所示。1方式02方式13方式24方式35波特率,1方式0,当串行通信控制寄存器SCON的最高两位SM0SM1=00时,串行口工作在方式0。方式0是扩展移位寄存器工作方式,常常用于外接移位寄存器扩展I/O口。在此方式下,数据由RXD串行地输入/输出,TXD为移位脉冲输出端,使外部的移位寄存器移位。发送和接收都是8位数据,为1帧,没有起始位和停止位,低位在前。1)方式0输出。如图8-3所示。2)方式0输入。如图8-4所示。当用户在应用程序中,将SCON中的REN位置1时(同时RI=0),就启动了一次数据接收过程。数据从外接引脚RXD(P3.0)输入,移位脉冲从外接引脚TXD(P3.1)输出。8位数据接收完后,由硬件将输入移位寄存器中的内容写入SBUF,并自动将RI置1,向CPU申请中断。CPU响应中断后,用软件将RI清0,同时读走输入的数据,接着启动串行口接收下一个数据。,图8-34,2方式1,当串行通信控制寄存器SCON的最高两位SM0SM1=01时,串行口工作在方式1。在方式1下,串行口是波特率可变的10位异步通信接口。TXD为数据输出线,RXD为数据输入线。传送一帧数据为10位:1位起始位(0),8位数据位(低位在先),1位停止位(1)。方式1的波特率发生器由下式确定:方式1波特率=(2SMOD/32)定时器1的溢出率其中,SMOD是特殊功能寄存器PCON的最高位,即波特率加倍控制位。当SMOD=1时,串行口的波特率加倍。1)方式1发送。如图8-5所示。2)方式1接收。如图8-6所示。,图8-56,3方式2,当串行通信控制寄存器SCON的最高两位SM0SM1=10时,串行口工作在方式2。在方式2下,串行口是波特率可调的11位异步通信接口。TXD为数据发送引脚,RXD为数据接收引脚。传送一帧数据为11位:1位起始位(0),8位数据位(低位在先),第9位(附加位)是SCON中的TB8或RB8,最后1位是停止位(1)。方式2的波特率固定为晶振频率的1/64或1/32,由下式确定:方式2波特率=(2SMOD/64)fosc其中,SMOD是特殊功能寄存器PCON的最高位,即波特率加倍控制位。当SMOD=1时,串行口的波特率被加倍。1)方式2发送。如图8-7所示。2)方式2接收。如图8-8所示。,图8-78,4方式3,由于方式2的波特率完全取决于单片机使用的晶振频率,当需要改变波特率时(除了波特率加倍外)往往需要更换系统的晶体振荡器,灵活性较差,而方式3的波特率是可以调整的,其波特率取决于T1的溢出率。当串行通信控制寄存器SCON的最高两位SM0SM1=11时,串行口工作在方式3。方式3是波特率可调的11位异步通信方式,该方式的波特率由下式确定:方式3波特率=(2SMOD/32)定时器1的溢出率串行口方式3接收数据和发送数据的时序分别如图8-7和图8-8所示。方式2和方式3除了使用的波特率发生器不同外,其他都相同,因此在这里不再做介绍。,5波特率,为了保证异步通信数据信息的可靠传输,异步通信的双方必须保持一致的波特率。串行口的波特率是否精确直接影响到异步通信数据传送的效率,如果两个设备之间用异步通信传输数据,但二者之间的波特率有误差,极可能造成接收方错误接收数据。常用的串行口波特率及相应的晶振频率、T1工作方式和计数初值等参数的关系如表8-5所示。,表8-5,8.2 单片机与PC之间的串行通信,8.2.1 案例介绍及知识要点8.2.2 程序示例8.2.3 知识总结RS232接口标准,8.2.1 案例介绍及知识要点,单片机与PC进行通信,利用MAX232作为电平转换芯片,电路原理图如图8-9所示。了解RS-232C串行通信接口标准。掌握接口电路的设计方式及电气特性。学会编写基本程序。,8.2.2 程序示例,(1)单片机向PC发送数据。(2)单片机接收PC送来数据。,8.2.3 知识总结RS232接口标准,除了满足约定的波特率、工作方式和特殊功能寄存器的设定外,串行通信双方必须采用相同的接口标准,才能进行正常的通信。由于不同设备串行接口的信号线定义及电器规格等特性都不尽相同,因此要使这些设备能够互相连接,需要统一的串行通信接口。RS-232C接口标准的全称是EIA-RS-232C标准,其中,EIA(Electronic Industry Association)代表美国电子工业协会,RS(Recommended Standard)代表EIA的“推荐标准”,232为标识号。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。接口标准包括引脚定义、电气特性和电平转换几方面的内容。1引脚定义2电气特性3RS-232C电平与TTL电平转换驱动电路,1引脚定义,RS-232C接口规定使用25针D型口连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。在微型计算机通信中,常常使用的有9根信号引脚,所以常用9针D型口连接器替代25针连接器。连接器引脚定义如图8-10所示,RS-232C接口的主要信号线的功能定义如表8-6所示。,2电气特性,RS-232C采用负逻辑电平,规定DC(-3-15)为逻辑1,DC(+3+15)为逻辑0。通常RS-232C的信号传输最大距离为30m,最高传输速率为20kbit/s。RS-232C的逻辑电平与通常的TTL和MOS电平不兼容,为了实现与TTL或MOS电路的连接,要外加电平转换电路。,3RS-232C电平与TTL电平转换驱动电路,1单片机串行口与PC的RS-232C接口不能直接对接,必须进行电平转换。常见的TTL到RS-232C的电平转换器有MC1488、MC1489和MAX 202/232/232A等芯片。由于单片机系统中一般只用+5V电源,MC1488和MC1489需要双电源供电(12V),增加了体积和成本。生产商推出了芯片内部具有自升压电平转换电路,可在单+5V电源下工作的接口芯片MAX232,如图8-11所示,它能满足RS-232C的电气规范,内置电子泵电压转换器将+5V转换成-10V+10V,该芯片与TTL/CMOS电平兼容,片内有两个发送器,两个接收器,在单片机应用系统中得到了广泛使用。,习题,1并行通信和串行通信的特点是什么?2串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?3编写程序,单片机在按键的控制下发送一组数据,PC接收,利用串行口调试助手查看结果。4编写程序,PC发送,单片机接收数据,将数据通过数码管显示。,