单片机串口通信毕业论文_第1页
单片机串口通信毕业论文_第2页
单片机串口通信毕业论文_第3页
单片机串口通信毕业论文_第4页
单片机串口通信毕业论文_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机串口通信毕业论文目录摘要IAbstractII1 绪论11.1本课题选取的目的及意义11.2 目前国内外本课题研究状况21.3 本文的主要工作32串行通信理论的有关概念52.1 通信52.2 通信参数62.3工作模式62.4 同步通信与异步通信73 几种常用串行总线协议及方案选取83.1 IIC总线传输协议83.2 SPI总线传输协议113.3 串口通信传输协议133.3.1 80C51单片机的串行口的结构133.3.2 80C51串行口的控制寄存器133.3.3 80C51单片机串行口的工作方式143.4 方案选取174 主从通信系统设计184.1 硬件原理图设计184.2 软件的编写

2、195主从式总线通信系统仿真226 论文总结24致谢25参考文献26附录27摘要在要监控的范围较大或监控点数较多的情况下,就需要把监控工作分散进行,而把监控结果集中管理。这就是所谓的分布式监控。而分布式监控比较常用的一种通信方式就是主从式通信了。本文介绍了一个单片机做主机,两个单片机做从机的小型主从式总线通信系统的设计与实现。系统不仅实现了主从机之间的通信,而且实现了从机之间的通信。本文以主从式通信系统的分析与设计为主线,首先了解串行通信理论的有关概念,由此引出了多台设备间的串行通信模式,并提出了一个按总线方式将多个RS-232的发送端并联的可行方案。同时也介绍了单片机之间的串行通信设计。主从

3、式通信的程序由两部分组成,一部分是主机的串行通信程序,别一部分是从机的串行通信程序。因此要设计一个协议管理主从机之间的通信。通信协议的设计主要解决了以下几个问题:1.对于主从式通信系统的设计通过通信协议进行管理,可以对主从机之间的通信进行规范化管理,使整个系统不会陷入混乱通信之中。2.设计了主机向从机发送通信方式的命令格式,从机向主机发送反馈命令的格式,以及通讯握手和发送/接收的具体处理流程关键字:主从式,多机通信,RS-232串行数据通信AbstractAs large number of observation points are monitored simultaneously,eac

4、h of the tasks can be controlled through a distributed control system in order to focus on the result of observation. This is called the Distributed Monitoring. The distributed control is commonly used as a way of master-slave communication. This article describes a microcontroller to be the host an

5、d two small microcontroller to be the slave and by this way to design a master-slave bus communication system. System not only realizes the communication between master and slave, but also realizes the communication between the slaves.This thesis focused on analysis and design of a communications pl

6、an for a distributed monitored control system.In the beginning the application background and the layout of the devices are introduced,this leads to the serial communication mode between multiple-device.After the introduction a feasible way to let several RS-232s TXDbe in parallel via bus is describ

7、ed. Also introduced the design of serial communication between MCU.Communication protocol designed mainly to solve the following problems:first,for the master-slave communication system design management through communication protocols can be standardized management the master slave communications.B

8、y this way, the whole system will not into chaos communications.second, Design of the host machine to send a communication from the command format, feedback from the machine to send commands to the format of the host ,Communication handshake and send / receive the specific processesKey Words: Master

9、-slave mode, Muliple-computer communication, RS-232 serial date communication1 绪论为了提高系统管理的先进性和安全性,计算机工业自动控制和检测系统越来越多地采用集总分散系统。较为常见的形式是由一台作管理用的上位主计算机(主机)和多台直接参与控制检测的下位从计算机(从机)构成的主从式多机系统,主机和从机之间以通讯的方式来协调工作。主机的作用一是要向从机发送各种命令及参数;二是要及时收集、整理和分析从机发回的数据,供进一步决策和报表。从机被动地接收、执行主机发来的命令,并且根据主机的要求向主机回传相应的实时数据,报告其运

10、行状态1。1.1本课题选取的目的及意义由于计算机工业自动控制和检测系统越来越多地采用集总分散系统,而主从式是其中最为普遍的一种方式。51单片机由于其出色的性能和便宜的价格,目前仍然是国内用的最为广泛的8位单片机类型,因此选取基于51单片机的主从通信系统的设计与实现这个课题是十分有意义的。通过这个课题,不仅对51单片机有了一个比较系统的认识与了解,还可以将所学习的单片机和C语言的有关知识应用到具体的实际中去。同时,通过本次课题,还可以对主从通信有一个大体上的认识了解。通过查找资料,可以学习到各种各样的主从通信的方法,也可以通过对比学习到具体实际情况下各种方法的具体应用。随着计算机系统的应用和微机

11、网络的发展,通信功能越来越显的重要。通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换。由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传输.对于那些与计算机相距不远的人机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍。在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各 CPU 之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的接口。本次课题的设计所采用的方法是用串口通信的方法来实现主从式总线通信系统的。这是因为用串行总线技术可以使

12、集总分散系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。MCS-51系列单片机,由于内部带有一个可用于异步通讯的全双工的串行通讯接口,因此可以很方便地构成一个主从式多机系统。1.2 目前国内外本课题研究状况由于计算机工业自动控制和检测系统越来越多地采用集总分散系统,而主从式是其中最为普遍的一种方式,因此各种各样主从式总线通信系统的方法不断涌现。目前比较常用的有利用IIC总线传输协议设计的主从式总线通信系统,还有的是利用SPI总线传输协议和USB协议以及串口通信等设计的主从式总线通信系统。由于主从式总线通信系统采用的的方法众多,因此目前国内外一般是根据实际情况

13、而采用不同的方法去实现主从式通信系统的功能。比如,如果要设计的主从式通信系统只是在小范围内传送数据,甚至只是在板间传送数据,或者要求使用的I/O口很少,而对于数据的抗干扰能力的要求不是很高的话,则采用IIC总线传输协议是最合适不过的了2。IIC总线支持任何一种IC制造工艺,并且 PHILIPS和其他厂商提供了种类非常丰富的I2C兼容芯片。作为一个专利的控制总线,IIC已经成为世界性的工业标准。每个器件都有一个唯一的地址,而且可以是单接收的器件(例如:LCD驱动器)或者可以接 收也可以发送的器件(例如:存储器)。发送器或接收器可以在主模式或从模式下操作,这取决于芯片是否必须启动数据的传输还是仅仅

14、被寻址。IIC是一个多主总线,即它可以由多个连接的器件控制。基本的I2C总线规范于20年前发布,其数据传输速率最高为100Kbits/s,采用7位寻址。但是由于数据传输速率和应用功能的迅速增加,I2C总线也增强为快速模式(400Kbits/s)和10位寻址以满足更高速度和更大寻址空间的需求。IIC总线始终和先进技术保持同步,但仍然保持其向下兼容性。并且最近还增加了高速模式,其速度可达3.4Mbits/s。它使得IIC总线能够支持现有以及将来的高速串行传输应用,例如EEPROM和Flash存储器。而如果需要远距离传输数据,且对数据传送的抗干扰能力要求有点高,则可以使用RS-422或者RS-485

15、协议进行主从式通信系统的设计。另外,USB协议则是一种比较新型、快速、灵活的总线传输方法,此通信系统通常只有一个主机,利用此方法设计的通信系统有如下特点:(1)适用范围广泛,适用于数码相机,高速数据采集等多种设备;(2)支持热拔插,且此过程由系统自动完成,无需用户干预;(3)采用菊花链式的星型总线结构,支持多达127个外设同时连接;(4)1.5Mbps、12Mbps和480Mbps的3种速度模式,可以满足不同外设对速度的要求3。USB发展到今天,总共有三种标准:1996年发布的USB1.0,1998年发布的USB1.1以及刚刚发布的最新标准USB2.0,此三种标准最大的差别就在于数据传输率方面

16、,在其它方面也有不同程度的改进,总体来说,就目前的USB2.0而言,已经拥有什么出众的性能与传输速率。USB数据线由两对线组成,一对数据线,一对电力线,通过电力线可以为USB设备提供 5V 电压,允许通过最大电流为500mA ,这个数字不算很大,但好在聊胜于无,可以满足一些耗电量较少的设备的需求,通过特殊的USB互联设备,我们还可以用USB口实现双机联网,速度是 USB1.1的标准达12Mbps(1.5MB/S),可惜仅能进行简单的数据交换,不能称做真正的网络。当所要设计的主从式总线通信系统采用譬如MSP430单片机当主机或者从机时,由于此单片机具有支持SPI的片内串行通信接口,所以可以采用S

17、PI总线传输协议进行设计。SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200。串行外围设备接口SPI是一种同步串行接口,因其硬件功能强,与SPI有关的

18、软件就相当简单,可使MSP430单片机有更多的时间处理其他任务。此时,所设计的系统拥有极低的功耗,丰富的片内外设,卓越的工作性能和方便灵活等优点4。1.3 本文的主要工作本次毕业设计的主要工作是设计出一个51单片机总线式主从通信系统。实现基于主从总线的数据传送,除了实现主机与从机间的数据传送外,还实现从机到从机的数据传送的功能。为了方便起见,先设计一个一主两从的通信系统,画出系统的硬件原理图,并且在此原理图的基础上设计出软件实现此功能。至于更加复杂的主从式多机系统的设计与实现可以在此系统的基础上进行扩展实现。在本次主从式通信系统的设计与实现过程中,首先要做的工作是设计出一个主从式通信系统的硬件

19、原理框图,然后在此原理框图的基础上进行具体的硬件电路设计,在设计过程中要充分考滤到可能出现的问题,然后找出合理的方法解决。在已设计好了的硬件电路的基础上再进行具体的软件编写,满足任务书上主从式通信系统的功能要求。在编写程序代码的过程中,要了解串口通信的原理,并且能通过串口进行正确的数据传送。再者,为了对整个系统进行有效的,规范的管理,使之能够正确通信,必须设计出一个通信协议进行管理。同时通信协议也对主从机之间的接收/发送数据流程有了直观的规定。论文结构如下:第一章,绪论。介绍课题背景、发展现状,课题意义、应用前景等。第二章,简要介绍串行通信理论的有关概念。比如有通信、工作模式和同步异步通信等,

20、对此章的更好了解有助于IIC总线传输协议、串口通信等原理的学习。第三章,根据国内外目前采用的主从式总线设计方法列出了几种比较常用且简单的方法,并且介绍了它们的原理。同时,根据所选课题的实际情况选取最好的方案进行主从式总线通信系统的选取。第四章,对于已经选取好的方案进行系统的硬件设计,对于硬件的设计中出现的问题寻找解决办法。并且在此硬件基础上进行相应的软件代码编写。第五章,在已经构建的软、硬件平台上,对系统进行系统测试,并针对测试结果进行调试。第六章,总结论文工作。对设计的不足之处提出改进方案,并提出下一步的研究方向。2串行通信理论的有关概念2.1 通信不同的独立系统利用线路互相交换数据便是通信

21、,而构成整个通信的线路称为网络。通信的目的不外乎数据的交换,数据必须经过交换才能由发送端到达接收端,发送端所使用的方法就是将数据利用一定的程序通过线路发送出去,接收端则根据协议将数据收集起来并且进行存储或显示。1. 数据发送通信的主要目的是将数据从一端发送到另一端,以实现数据的交换。计算机与设备间的数据交换,计算机与计算机间的数据传输都属于通信的范畴。一个完整的通信系统包括发送端、接收端、转换数据的接口及发送数据的实际信道或媒体。一般情况下,发送与接收的节点称为DTE(Data Terminal Equipment,数据终端设备)。数据在到达正确目的地之前,可能需要经过一系列中间节点,这些中间

22、节点负责数据的转送工作,以送达目的地,这些中间节点称为DSE(Data Switching Equipment,数据交换设备)。终端设备发送数据时,必须先将数据转换为电气信号,以便在线路上传递,而负责数据与电气信号转换的设备称为DCE(Data Communication Equipment,数据通信设备)。DTE与DCE间的数据传输线路通常使用RS-232串行通信,而DCE与DSE间的媒体则包括了双绞线、同轴电缆、光纤或无线电等5 6。2通信的种类通常通信的形式可以分为两种,一种为并行数据通信,另一种则为串行数据通信。两种不同的通信模式如图2-1所示。 01234567 位10011101并

23、行10011101串行图2-1 并行与串行由图1可知,并行数据通信一次的传输量为8个位(1个字节),而串行数据通信则是一次只传输1位。并行数据通信是指数据的各位同时进行传送的通信方式。其优点是传送速度快;缺点是数据有多少位,就需要多少根传送线。串行数据通信是指数据是一位一位顺序传送的通信方式,它的突出优点是只需一对传送线,这样就大大降低了传送成本,特别适应于远距离通信;其缺点是传送速度较低。假设并行传送N位数据所需时间为T,那么串行传送的时间至少为N*T 6。2.2 通信参数双方为了可以进行通信,必须要遵守一定的通信规则,这个共同的规则就是通信端口的初始化。通信端口的初始化有以下几项必须设置:

24、1. 数据的传输速率传输双方通过传输线的电压改变来交换数据,但传输线的电压改变的速度必须和接收端的接收速度保持一致,RS-232通常用于异步传输,即双方并没有一个可参考的同步时钟作为基准。由于没有一个参考时钟,双方所发送的高低电位到底代表几个位就不得而知了,要使得双方的数据读取正常,就要考虑到传输速率波特率,其所代表的意义是每秒钟所能产生的最大电压状态改变率,或者说是每秒钟可以振荡的次数。原始信号经过不同的波特率取样后,所得的结果完全不一样。取样速度只有原来的一半时,信号被跳着取样,数据因此产生错误。因此通信双方获得相同的通信速度是首先要做的事情5。2. 数据的发送单位一般串行通信端口所发送的

25、数据是字符类型的,若用来传输文件,则会使用二进制的数据类型。当使用字符类型时,通常使用ASCII码,ASCII码中8个位形成一个字符。以实际的RS-232传输来看,由于大多数应用只是发送文字码,因此只要7个位就可以将ASCII码的0-127号字符表达出来,所有的可见字符都在这个范围内,所以只要7个数据位就足够了。不同的情况下,会使用到不同的发送单位,但使用多少个位合成一个字节必须先行确定5。3. 起始位及停止位由于异步串行通信中并没有使用同步脉冲作为基准,故接收端完全不知道发送端何时将进行数据的发送,而当发送端准备要开始发送数据时,发送端会在所送出的字符前后分别加上高电位的起始位(逻辑0)及低

26、电位的停止位(逻辑1),它们分别是所谓的起始位和停止位。当发送端要开始发送数据时,便将传输在线的电位由低电位提升至高电位,而当发送结束后,再将电位降至低电位。接收端会因起始位的触发(因电压由低电位升至高电位)而开始接收数据,并因停止位的通知(因电压维持在低电位)而确切数据的字符信号已经结束5。4. 校验位的检查为了预防错误的产生,因此使用校验位作为检查的机制;校验位是用来检查所发送数据正确性的一种核对码,其中又分成奇校验位和偶校验位两种方式,分别是检查字符码中I的数目是奇数或偶数。以偶校验位为例,A的ASCII码01100001 (二进制),其中1的数目是三个,因此校验位便是1,使1的数目保持

27、偶数。同理,校验位是奇校验位时,A的校验位便是0,使1的数目保持奇数5。2.3工作模式数据传输查模式有单工、半双工、全双工和多工工作方式。单工方式时,数据仅按一个固定方向传送。因而这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。半双工方式时数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收/发开关转换。全双工方式时允许双方同时进行数据双向传送。这三种传输方式都是用同一线路传输同一种频率信号,为了充分利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分或码分复用技术,即可实现在同一线路上共享功能,我们称之为多工传输方式。几种传输方式框图如图2-2

28、所示。从前往后依次为单工、半双工和全双工。图2-2 三种传输方式不同的工作模式可以应用在不同的地方,也各有其优点。就串行通信而言,RS-232使用的是全双工的模式。同时可以利用的传输线路决定了工作模式。RS- 232之所以能达到全双工的功能,就是因为其引脚在设计上是接收与发送分属两个不同的引脚与线路7。2.4 同步通信与异步通信异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。异步通信以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)也是任意的,但每个字符中的各位是以固定的时间传送的。原理图如图2-3

29、所示。接收设备010010101001001010100100101110任意间隙发送设备图2-3 异步通信原理图同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过外同步和自同步两种方法实现78。为自同步原理图如图2-4所示。计算机甲计算机乙数据时钟图2-4 同步通信原理图3 几种常用串行总线协议及方案选取目前使用的比较广泛的串行总线传输协议有IIC总线传输协议、SPI总线传输协议以及RS-232总线协议。无论利用其中任何一种总线协

30、议都可以设计出一个主从式总线通信系统。现在分别介绍其数据传输原理。3.1 IIC总线传输协议IIC总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。IIC总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。IIC总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系79。每个接到IIC总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收

31、器。在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,IIC总线要通过总线仲裁,以决定由哪一台主机控制总线。数据的有效位规定:IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化,如图3-1所示。SCLSDA要求数据稳定 允许数据变化要求数据稳定 图3-1 IIC总线数据传输有效位原理图起始和终止信号 :SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号,如图3-2所示。起始信号S终止信号P图3-2

32、起始信号和终止信号原理图起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。连接到I2C总线上的器件,若具有IIC总线的硬件接口,则很容易检测到起始和终止信号。接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。数据传送格式:(1)字节传送与应答每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的

33、字节后面都必须跟随一位应答位(即一帧共有9位)。原理图如图3-3所示。如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送。当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答”来实现的

34、。然后,从机释放SDA线,以允许主机产生终止信号。SCL(主机)SDA(从机)SDA(从机)起始信号非应答应答图3-3 IIC字符传送格式(2)数据帧格式IIC总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。在总线的一次数据传送过程中,可以有三种组合方式:第一是主机向从机发送数据,数据传

35、送方向在整个传送过程中不变。第二是主机在第一个字节后,立即从从机读数据。第三种刚是在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。IIC总线的寻址是采用7位的寻址字节(寻址字节是起始信号后的第一个字节)。3.2 SPI总线传输协议SPI的通信原理非常简单,它以主从方式工作,这种模式通常有一个主设备和多个从设备。其中CS信号是控制从机的芯片是否被选中的。如图3-4所示,系统内有一个主设备M1和两个从设备S1与S2。当S1的片选信号CS为低电平时,S1被选中,M1通过MOSI引脚发送数据,S1通过MOSI引脚接收数据,或者S1通过MISO引脚发送

36、数据,而M1通过MISO引脚接收数据。同样的,当S2的片选信号CS为低电平时,S2被选中,M1通过MOSI引脚发送数据,S2通过MOSI引脚接收数据,或者S2通过MISO引脚发送数据,而M1通过MISO引脚接收数据。从机只有通过CS信号选中之后,对此从机的操作才会有效,可见,片选信号的存在使得允许在同一总线上连接多个SPI设备成为可能。当从机芯片被选中,和主机建立连接之后,接下来就是负责通讯的3根线了。通讯是通过数据交换完成的,这里首先要知道SPI是串行通讯协议,也就是说数据是一位一位进行传输的。这就是SCK时钟线存在的原因,传输时,由SCK提供时钟脉冲,MOSI,MISO则基于此脉冲完成数据

37、传输。如图3-4所示,当M1给S1发送数据时,数据从M1输出通过 MOSI线,数据在时钟脉冲的上升沿或下降沿时输出,在紧接着的下降沿或上升沿通过S1的MOSI线被读取。当S1给M1发送数据时,原理是一样的,只不过通过的是MISO线来完成10。SCKMISOMOSICSM1SCKMISOMOSICSSCKMISOMOSICSS1S2图3-4 SPI传输原理图要注意的是,SCK信号线只由主设备控制,从设备不能控制时钟信号线。因此,在一个基于SPI的系统中,必须至少有一个主控设备。在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的

38、使能信号,硬件上比IIC系统要稍微复杂一些。SPI是一个环形总线结构,其时序其实比较简单,主要是在时钟脉冲SCK的控制下,两个双向移位寄存器SPIDATA进行数据交换。我们假设主机的8位寄存器SPIDATA1内的数据是10101010,而从机的8位寄存器SPIDATA2内的数据是01010101,在上升沿的时候发送数据,在下降沿的时候接收数据,最高位的数据先发送,主机和从机之间全双工通信,也就是说两个SPI接口同时发送和接收数据,如图3-5所示。从图中我们也可以看到,SPIDATA移位寄存器总是将最高位的数据移出,接着将剩余的数据分别左移一位,然后将接收到得数据移入其最低位11。图3-5 SP

39、I主从工作模式示意图如图3-6所示,当第一个上升沿来的时候,SPIDATA1将最高位1移除,并将所有数据左移1位,这时MOSI线为高电平,而SPIDATA2将最高位0移出,并将所有数据左移1位,这样MISO线为低电平。然后当下降沿到来的时候,SPIDATA1将锁存MISO线上的电平,并将其移入其最低位,同样的,SPIDATA2将锁存MOSI线上的电平,并将其移入最低位。经过8个脉冲后,两个移位寄存器就实现了数据的交换,也就是完成了一次SPI的时序11。图3-6 数据传输示例3.3 串口通信传输协议由于本次设计的题目是基于8051单片机的主从式通信系统的设计,因此有关串口通信的原理的介绍都是围绕

40、51单片机讲解的。3.3.1 80C51单片机的串行口的结构MCS-51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器刚只能写入不能读出。这个通信口既可以用于网络通信,亦可以实现串行异步通信,还可以构成同步移位寄存器使用。如果在传行口的输入输出引脚上加上电平转换器,就可以方便地构成标准的RS-232接口712。80C51单片机的串行口的结构如图3-7所示。图3-7 80C51单片机的串行口的结构串行口有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H

41、;接收器是双缓冲结构;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。 3.3.2 80C51串行口的控制寄存器1特殊功能寄存器SCONSCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志,字节地址为98H。SCON寄存器的各位定义如表3-1所示。位76543210 字节地址:98HSM0SM1SM2RENTB8RB8TI RISCON 表3-1 SCON寄存器SM0和SM1为工作方式选择位,可选择四种工作方式,如表3-2所示。SM0SM1方式说明波特率000移位寄存器fosc/1201110位异步收发器(8位数据)可变10211位异步收发器(9位数

42、据)fosc/64或fosc/3211311位异步收发器(9位数据)可变表3-2 串口通信4种工作方式SM2为多机通信控制位,主要用于方式2和方式3。当接收机的SM2=1时可以利用收到的RB8来控制是否激活RI(RB80时不激活RI,收到的信息丢弃;RB81时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走)。当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。通过控制SM2,可以实现多机通信。在方式0时,SM2必须是0。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1。REN为允许

43、串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。TB8用在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位(在方式0和方式1中,该位未用) 。RB8用在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。TI,发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。R

44、I,接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请7。2特殊功能寄存器PCONPCON的字节地址为87H,它的第7位SMOD是与串口通信波特率的设置有关的选择位。SMOD(PCON.7)为波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。3.3.3 80C51单片机串行口的工作方式1.方式0设置SCON寄存器的SM0、SM10 0时,串行口工作于方式0。此时,串行口为同步移位寄

45、存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。其中fosc为时钟频率。2方式1设置SCON寄存器的SM0、SM10 1时,串行口工作于方式1。方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。 用软件置REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,

46、并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。方式一的输入输出图如图3-8、3-9所示。图3-8 方式1输入图3-9 方式1输出2. 方式2和方式3设置SCON寄存器的SM0、SM11 0时,串行口工作于方式2,当SM0、SM11 1时,串行口工作于方式3。方式2或方式3为11位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚 。方式2和方

47、式3时起始位1位,数据9位(含1位附加的第9位,发送时为SCON中的TB8,接收时为RB8),停止位1位,一帧数据为11位。方式2的波特率固定为晶振频率的1/64或1/32,方式3的波特率由定时器T1的溢出率决定。 方式2和方式3输出:发送开始时,先把起始位0输出到TXD引脚,然后发送移位寄存器的输出位(D0)到TXD引脚。每一个移位脉冲都使输出移位寄存器的各位右移一位,并由TXD引脚输出。第一次移位时,停止位“1”移入输出移位寄存器的第9位上 ,以后每次移位,左边都移入0。当停止位移至输出位时,左边其余位全为0,检测电路检测到这一条件时,使控制电路进行最后一次移位,并置TI=1,向CPU请求

48、中断。发送时序图如下图3-10所示。图3-10 方式2或方式3的发送时序图方式2和方式3输入:接收时,数据从右边移入输入移位寄存器,在起始位0移到最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的第9位数据为1)时,接收到的数据装入接收缓冲器SBUF和RB8(接收数据的第9位),置RI=1,向CPU请求中断。如果条件不满足,则数据丢失,且不置位RI,继续搜索RXD引脚的负跳变。接收时序图如图3-11所示。图3-11 方式2或方式3的接收时序图4.波特率的计算在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2

49、的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。方式0的波特率 = fosc/12方式2的波特率 =(2SMOD/64)· fosc 方式1的波特率 =(2SMOD/32)·(T1溢出率)方式3的波特率 =(2SMOD/32)·(T1溢出率)当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。这时溢出率取决于TH1中的计数值。计算公式如3-1所示: T

50、1 溢出率 = fosc /12×256 (TH1) (3-1)在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所以,选用的波特率也相对固定13。3.4 方案选取就三种数据传输协议的方式来看,串口通信是这三种方式中最为简单也是最好实现通信方式的一种。因为MCS-51单片机内部有一个全双工的串行通信口,而一般的51单片机不带IIC总线接口和SPI总线接口。要想使用这两种传输方式进行数据传输的话,必须要使用软件模拟。而且主机从机要是都是51单片机的话,实现起来的难度就会非常的大。另外,虽然IIC和SPI比UART更加强大,但是在技术上也在更麻烦一些。同时IIC的抗干

51、扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离传输。所以无论是从设计的难易程序来考虑,还是从本次设计的实际情况来看,采用串口通信的方式实现51单片机的主从式通信是最合适不过的了,除了实现主机与从机间的串口数据传送外,还实现从机到从机的串口数据传送的功能91112。4 主从通信系统设计主从通信系统的设计不仅包括系统的硬件原理图设计,还包括基于硬件基础上的软件代码的编写。本文首先设计出主从通信的硬件原理图,然后再编写出了相应的代码。4.1 硬件原理图设计关于51单片机的主从式通信系统的硬件设计的原理框图是很容易的。本次设计主要是一个主机和两个从机进行通信。因此,主要需要三个单片机作主

52、从机,另外设计一些外围硬件电路来实现这个主从式通信系统MCS-51单片机的第10号管脚RXD可用于串行数据的接收,第11号管脚TXD可用于串行数据的发送。因此,可以将主机的TXD管脚与从机的RXD相连接,以实现主机发送数据从机接收数据的功能。而主机的RXD与从机的TXD相连接,以实现从机发送数据主机接收的功能。同时也可以实现从机与从机之间的数据通信。根据上面的原理框图设计具体的硬件原理图时,如果只是简单的这样连线的话,就会遇到一些问题。其一:当单片机处于待机状态时,单片机的各个I/O口被默认为是高电平,而当主机与一个从机进行通信,另一个从机不工作的话,传输线上的信号就会受到另一从机的影响,最终

53、数据传送会发生错误。其二:主从式的通信要实现的是主机与从机以及从机与从机之间的通信。其中包括主机与两个从机同时通信,主机与单个从机通信(另一个从机处于待机状态),从机与从机之间的通信。如果只是单纯的连接主机与从机之间的RXD与TXD信号线是无法实现的114。为了解决上述所提到的问题,可以设计一些硬件电路来实现。关于主从机之间信号的影响,可以在信号端加上三态门电路,当某个从机不进行工作时,可以设置三态门呈高阻态的状态,这样从机之间就不会相互的影响了。同时,关于三态门的控制,可以设计成主机控制,这样要想实现各种形式的通信都可由主机控制了。本次设计采用74HC245芯片作为三态们器件。具体的电路原理

54、图如图4-1所示。三态门三态门TRTRTR主机从机1从机2图4-1 硬件原理图4.2 软件的编写主从式通信系统包括主机与从机之间的通信,以及从机与从机之间的通信。因此,在编写程序进行数据信号传输时,必须考虑到各种情形。同时,如果想要系统具有实时性,数据信号则必须是可变的。数据的可变不仅包括数据的内容,还应该包括数据的长度。关于各种情形的通信,程序设计时,可以设计一种通信协议,采用不同的控制命令字进行通信控制,同时也可规范的管理数据之间的传送。我们可以将一组特殊的,用的比较少的数据用来当成控制命令字。例如,本次设计采用如下控制命令:0xaa表示主机给从机1发送数据,0xbb表示主机给从机2传送数

55、据,0xcc表示从机1给主机传送数据,0xdd表示从机2给主机传送数据,0xee表示从机1给从机2传送数据,最后0xff表示从机2给从机1传送数据。本次设计所设计的通信协议为:主机首先给所有的从机发送一个控制命令字,从机接收到这个控制命令字后进行辨认,如果是0xaa则从机1准备接收主机的数据,从机2处于待机状态,而主机则会在发送完前面的控制命令字后发送在传送的数据信号。当主机发送的是0xbb控制命令字时,主机在发送完控制命令字后发送要传送的数据信号,此时从机1处于待机状态,从机2接收主机发送来的数据。如果从机接收到的是0xcc,则主机在发送完控制命令字后就准备接收从机1发送来的数据信号,从机2

56、处于待机状态。当主机发送的是0xdd控制命令字时,则主机在发送完控制命令字后就准备接收从机2发送来的数据信号,从机1处于待机状态。主机发送的如果是0xee或者是0xff控制命令字时,则表示从机与从机之间进行数据通信,此时,数据首先由从机传送给主机,再由主机传送给另外一个从机。另外,对于主从机之间发送的数据,有可靠传输方式和不可靠传输方式。所谓不可靠传输方式,就是发送端与接收端之间没有任何关系,发送端只管发送数据,接收端只管接收数据。到于数据在传送时有没有发生错误,接收端是不会知道的。这种传输模式的优点是相对于可靠传输而言,传输速率要更高。缺点就像其名字一样,数据传送不安全。对于要求高准确率的数

57、据通信系统,更多的采用可靠传输。所谓可靠传输,就是发送端在发送一组数据后,在数据的最后加上一个校验码,而接收端在接收数据时,不仅接收数据,而且还要进行计算,最后与发送端发送的校验码进行对比,如果两个校验码一致,则表示数据是正确的。如果不一致,则放弃接收到的数据。发送端重新发送数据,进而重复上面的过程,直到数据信号发送正确为止。本次设计采用可靠传输方式。在上述的所有通信过程中,当每次数据传送结束后,接收机在接收完所有的数据后会进行一次求和校验,这样可以检验数据传送的成确与否。如果所得的求和值与发送机发出的求和校验码一致时,则表示数据发送正确,可以接收并存储。如果所得的求和值与发送机发出的求和校验码有一致时,则表示数据发送时出现

温馨提示

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

评论

0/150

提交评论