1、第第8章章 单片机的数据通信单片机的数据通信8.1 单片机的串行通信单片机的串行通信8.2 单片机与单片机与PC之间的之间的串行通信串行通信习题习题本章将围绕着单片机在实际应用中对本章将围绕着单片机在实际应用中对串口的使用,根据通信的方法分别介串口的使用,根据通信的方法分别介绍单片机的各种通信和数据传送的方绍单片机的各种通信和数据传送的方式。对于式。对于1-wire总线、总线、IIC总线和总线和SPI总总线等知识由于内容较多,本书将在后线等知识由于内容较多,本书将在后面单独作为一章来介绍。面单独作为一章来介绍。8.1 单片机的串行通信8.1.1 案例介绍及知识要点8.1.2 程序示例8.1.3
2、 知识总结串行口的结构8.1.4 知识总结串行口相关特殊功能寄存器8.1.5 知识总结串行通信工作方式及波特率的计算8.1.1 案例介绍及知识要点案例介绍及知识要点利用单片机利用单片机a将一段流将一段流水灯控制程序发送水灯控制程序发送到单片机到单片机b,利用,利用b来控制其来控制其P1口点亮口点亮8位位LED,如图,如图8-1所示。所示。l了解串行口的基了解串行口的基本结构和工作原本结构和工作原理。理。l掌握相关寄存器掌握相关寄存器的配置方式。的配置方式。l了解串行口的工了解串行口的工作方式,掌握串作方式,掌握串行通信波特率的行通信波特率的计算方式。计算方式。l掌握应用程序的掌握应用程序的编写
3、方法。编写方法。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 知识总结知识总结串行口相关
4、特殊功能串行口相关特殊功能寄存器寄存器串行口控制寄存器SCON存放串行口的控制和状态信息,串行口用定时器T1作为波特率发生器(发送接受时钟),电源控制寄存器PCON的最高位SMOD为串行口波特率的倍率控制位,中断允许控制寄存器IE控制串行通信中断是否允许。具体格式如下。1串行口控制寄存器SCON2数据缓冲器SBUF3电源控制寄存器PCON4中断允许控制寄存器IE1串行口控制寄存器串行口控制寄存器SCON串行口的工作方式是由串行口控制寄存器SCON控制的,其格式如表8-1所示。(1)SM0和SM1:用于设置串行接口的工作方式,有4种工作方式,如表8-2所示。(2)SM2:方式2和方式3的多级通信
5、控制位。对于方式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位,作为奇偶校验位或地址帧/数据帧的标志位。对于方式
6、1,若SM2=0,则RB8是接收到的停止位。对于方式0,不使用RB8。(6)TI:发送中断标志位。由硬件在方式0串行发送第8位结束时置位,或在其他方式串行发送停止位的开始时置位,向CPU发中断申请,但必须在中断服务程序中由软件将其清0,取消此中断请求。(7)RI:接收中断标志位。由硬件在方式0接收到第8位结束时置位,或在其他方式接收到停止位的中间时置位,向CPU发中断申请,但必须在中断服务程序中由软件将其清0,取消此中断请求。表表8-122数据缓冲器数据缓冲器SBUF发送缓冲器只管发送数据,51单片机没有专门的启动发送的指令,发送时,就是CPU写入SBUF的过程(MOV SBUF,A);接收缓
7、冲器只管接收数据,接受时,就是CPU读取SBUF的过程(MOV A,SBUF)。即数据接收缓冲器只能读出不能写入,数据发送缓冲器只能写入不能读出。CPU对特殊功能寄存器SBUF执行写操作,就是将数据写入发送缓冲器;对SBUF执行读操作就是读出接受缓冲器的内容。所以可以同时发送和接收数据。对于发送缓冲器,由于发送时CPU是主动的,不会产生重叠错误。而接收缓冲器是双缓冲结构,以避免在接收下一帧数据之前,CPU未能及时响应接收器的中断,没有把上一帧数据取走,就会丢失前一字节的内容。3电源控制寄存器电源控制寄存器PCONPCON的最高位是串行口波特率系数控制位SMOD,在串行接口方式1、方式2和方式3
8、时,波特率与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单片机的串行通
9、信设置成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
10、.0)输入,移位脉冲从外接引脚TXD(P3.1)输出。8位数据接收完后,由硬件将输入移位寄存器中的内容写入SBUF,并自动将RI置1,向CPU申请中断。CPU响应中断后,用软件将RI清0,同时读走输入的数据,接着启动串行口接收下一个数据。图图8-342方式方式1当串行通信控制寄存器SCON的最高两位SM0SM1=01时,串行口工作在方式1。在方式1下,串行口是波特率可变的10位异步通信接口。TXD为数据输出线,RXD为数据输入线。传送一帧数据为10位:1位起始位(0),8位数据位(低位在先),1位停止位(1)。方式1的波特率发生器由下式确定:方式1波特率=(2SMOD/32)定时器1的溢出率其
11、中,SMOD是特殊功能寄存器PCON的最高位,即波特率加倍控制位。当SMOD=1时,串行口的波特率加倍。1)方式1发送。如图8-5所示。2)方式1接收。如图8-6所示。图图8-563方式方式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)f
12、osc其中,SMOD是特殊功能寄存器PCON的最高位,即波特率加倍控制位。当SMOD=1时,串行口的波特率被加倍。1)方式2发送。如图8-7所示。2)方式2接收。如图8-8所示。图图8-784方式方式3由于方式2的波特率完全取决于单片机使用的晶振频率,当需要改变波特率时(除了波特率加倍外)往往需要更换系统的晶体振荡器,灵活性较差,而方式3的波特率是可以调整的,其波特率取决于T1的溢出率。当串行通信控制寄存器SCON的最高两位SM0SM1=11时,串行口工作在方式3。方式3是波特率可调的11位异步通信方式,该方式的波特率由下式确定:方式3波特率=(2SMOD/32)定时器1的溢出率串行口方式3接
13、收数据和发送数据的时序分别如图8-7和图8-8所示。方式2和方式3除了使用的波特率发生器不同外,其他都相同,因此在这里不再做介绍。5波特率波特率为了保证异步通信数据信息的可靠传输,异步通信的双方必须保持一致的波特率。串行口的波特率是否精确直接影响到异步通信数据传送的效率,如果两个设备之间用异步通信传输数据,但二者之间的波特率有误差,极可能造成接收方错误接收数据。常用的串行口波特率及相应的晶振频率、T1工作方式和计数初值等参数的关系如表8-5所示。表表8-58.2 单片机与PC之间的串行通信8.2.1 案例介绍及知识要点8.2.2 程序示例8.2.3 知识总结RS232接口标准8.2.1 案例介
14、绍及知识要点案例介绍及知识要点单片机与PC进行通信,利用MAX232作为电平转换芯片,电路原理图如图8-9所示。了解RS-232C串行通信接口标准。掌握接口电路的设计方式及电气特性。学会编写基本程序。8.2.2 程序示例程序示例(1)单片机向PC发送数据。(2)单片机接收PC送来数据。8.2.3 知识总结知识总结RS232接口标准接口标准除了满足约定的波特率、工作方式和特殊功能寄存器的设定外,串行通信双方必须采用相同的接口标准,才能进行正常的通信。由于不同设备串行接口的信号线定义及电器规格等特性都不尽相同,因此要使这些设备能够互相连接,需要统一的串行通信接口。RS-232C接口标准的全称是EI
15、A-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型口连接器
16、替代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、
17、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发送,单片机接收数据,将数据通过数码管显示。