毕业设计(论文)-单片机主从控制系统的软硬件设计.doc_第1页
毕业设计(论文)-单片机主从控制系统的软硬件设计.doc_第2页
毕业设计(论文)-单片机主从控制系统的软硬件设计.doc_第3页
毕业设计(论文)-单片机主从控制系统的软硬件设计.doc_第4页
毕业设计(论文)-单片机主从控制系统的软硬件设计.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

单片机主从控制系统的软硬件设计摘要:主从控制中,单片机的通信由上位机(单片机)控制。主机向各个从机发送命令或者接受从机反馈的信息,主机有权修改从机的参数,接受从机的数据,还可以查看从机的状态,可以说主机是主从控制的大脑。在本设计中主机用来监视或查看从机的状态,并向从机发送命令,在系统中起着主导地位。我们通过主机的界面可以看到继电器的状态,而且可以修改命令改变继电器组的工作情况。这种控制方式已经在工业中广泛的运用。从机在系统中处于从属地位,是命令的执行者。从机之间不能直接联系,它们之间必须有主机这个桥梁联系3。 在设计中我们选用了89C51单片机作为我们的主机,从机也为89C51单片机(我们本着可得,性价比采用此选择)。RS485通信接口的信号传输是用两根线之间的电压表示逻辑1和0的。因为发送端两根传送线,而且接受接收端也是两根传送线,这样RS485接受和发送仅需要2根线就完成了传输。由于传输线采用了差动信道,所以它的干扰抑制性好,又由于它的阻抗低无接地问题。传输距离可高达1200m,传输速度可达1Mbps。比较上面的数据,考虑工业要求,我们采用了RS485方式。主从控制的下位机也为8051系列,我们采用的是89C51。89C51是一个低功耗、高性能的含有4k字节快擦可编程/擦除只读存储器的8位CMOS单片机。允许写入程序,在8051系列中,其最大的优点是性价比高。便于改写我们采用了飞利浦公司的8051产品2。 主机与从机间的通信协议采取自定义的方式。每一次通信以主机向从机发送一个命令帧开始,从机收到命令帧后,向主机回送一个响应帧。发送和接收以文本方式进行。关键词:主从控制 单片机 89C51 RS485 通信协议Design Of Master - slave Control System In single-chip Microcomputer Software And Hardware Abstract: In the master - slave control, single - chip microcomputer communication between single - chip computer control. Host sending commands to individual machine or accept information from feedback, the host has permission to modify machine parameters, accept the data from the machine. In the design of the hosts to monitor or view from the machines State.We can see through the host interface status of the relay, but you can modify the command change relay group work. This method of control has been widely used in industry. From the machine in a subordinate position in the system, is the performer of the command. No direct contact between machines, they must host this bridge between contacts 3. In design we use the 89C51 single - chip computer as our host,RS485 communication interface signal transmission is expressed as voltage between two lines because the end of the logical 1 and 0 two transmission lines, but also the receiving end are two transmission lines, RS485 accept and send only 2 wires required to complete a transfer. Due to transmission line using the differential channels, so its interference suppression - good, also because of its low impedance grounding problem - free. Transmission distance up to 1200m, transfer rate up to 1Mbps comparisons on the data above, taking into account industry requirements, we use a RS485 mode. Slave master - slave control for 8,051 series, we were 89C512. After the Communication Protocol received from the machine, echo a response to the host frame. Send and receive as text. Keywords: Serial Communication Single-Chip Microcomputers 89C51 RS485 Communication Protocol第一章 概述 当今世界是一个高度自动化的社会,各式各样的设备都可以和单片机联机,而最简单的自动化联机方式就是使用串行通信。RS-485串行通信设备应用的时间已经不短了,随着科技的发展,它不仅没有被取代,反而应用越来越广泛。这是因为串行通信设备硬件开发实现了集成化、简单化、且使用方便。另外,同属串行通信的RS-485网络也被大量应用在工业环境中,而长距离、抗噪声的优点也使其得到了迅速的发展。 在管理系统中,传统的方法是通过现有的设备进行人工测量,然后对不符合要求的进行调整等工作。这种人工方式效率低、误差大,随机事件难以预料,使管理质量得不到很好的保证。上位机(单片机)除负责对下位机(MCS51单片机)进行监管和控制外,还用于采集下位机传送的数据进行数据库化管理,另外,上位机还可以对数据的发送、接收、传送和清除等进行控制。下位机( MCS-51单片机,MCS-51单片机及其外围设备)负责将信息反馈给上位机。此系统可使办公人员坐在办公室里对远在几百米之位的地方进行监控和管理,不但使办公人员从繁重的体力劳动中解放出来,而且使管理快速准确,提高了企业的管理水平和办公自动化水平4。在设计中我们选用了89C51单片机作为我们的主机,从机也为89C51单片机(我们本着可得,性价比采用此选择)。但在选择中出现了通讯接口的问题,我们是串型通讯,在单片机和单片机之间,考虑到工业运用问题我们需要考虑总的选用,在常用的RS232和RS485中,不能使用双端信号,因此要求使用较高的输出电压,而且其传输距离仅为15米。RS485通信接口的信号传输是用两根线之间的电压表示逻辑1和0的因为发送端两根传送线,而且接受接收端也是两根传送线。这样RS485接受和发送仅需要2根线就完成了传输。由于传输线采用了差动信道,所以它的干扰抑制性好,又由于它的阻抗低无接地问题。传输距离可高达1200m,传输速度可达1Mbps。比较上面的数据,考虑工业要求,我们采用了RS485方式。单片机的发展日新月异,但总体而言有硬件和软件组成。硬件分为一下几个部分:CPU 、RAM、EPROM、I/O口 串性口、定时器/计数器、中断系统以及特殊寄存器。主从控制的下位机为8051系列,我们采用的是89C51。89C51是一个低功耗、高性能的含有4k字节快擦可编程/擦除只读存储器的8位CMOS单片机。允许写入程序,在8051系列中 其最大的优点是性价比高。便于改写我们采用了飞利浦公司的8051产品。89C51的硬件由下列组成:CPU 、RAM、EPROM、I/O口、串行口、定时器/计数器、中断系统以及特殊寄存器。实物中的89C51有40个引脚,可以分为控制、电源及时钟、I/O 三部分2。在我们设计中主要用了数据口、复位电路和时钟电路三部分。我们采用的是上电按扭复位电路,并采用看门狗技术,防止进入死循环。为了满足波特率时钟电路的要求其时钟频率为11.059HZ 。开关量输出接口技术:开关量控制就是控制设备“开”或“关”状态的时间实现控制,本设计采用了光电隔离器和继电器。光电隔离器通过发光二极管来控制输出电路,实现光电光的转换。光敏三极管的的状态由发光二极管的开合,从而实现了开关量的控制。单片机的输出为TTL电平,所以我们在设计中采用了7407或者74LS244作为驱动器。使用驱动器有一个优点,就是当8051在上电复位或者受控复位时,继电器不吸合。继电器有耦合电路、触发电路、开关电路、过零控制电路和吸收电路组成。其实质是一个带有光电隔离器的无触点开关在本设计中,我们没有接入负载,而是查看其开关的状态,我们接上一个发光二极管,通过它可以直接了解继电器的状态。多机系统和单片机系统在硬件上的最大不同是需要通讯口。通讯可以采用各种方法来实现,对于传输距离在几米以上的系统,一般采用串行通讯。它可以分为同步和异步两种,前者速度比较快,通讯距离较近,后者速度较慢,但是通讯距离较远。一般的工业控制和数据采集系统,在数据传输量不大时,采用异步的比较多,也比较方便。本设计是典型的异步串行通讯。通讯规程的选择,主要是指主从机之间的通讯约定,它包括从机寻址方式、通讯检验以及通讯应答方式等。在设计中只使用一套公共的通讯线路,主机应能和指定的任何一个从机进行通讯,也可以向全部从机发命令。主从之间存在着一个地址问题。对于MCS-51单片机来说,它的串口就有主从控制方式允许发送地址或数据。第二章 方案设计 2.1主从控制方案的任务本次设计的题目是主从控制系统设计,它是实际工程应用的简化,它利用单片机,单片机组成主从控制系统,单片机控制继电器的打开或闭合,开发编程使用c51开发板和keil51开发软件实现,单片机之间采用RS-485进行通信。故设计任务大致可分为下面几部分:(1)设计一个具有串行通信接口和几个继电器控制的单片机控制系统;(2)设计一个简单的上位机(单片机)界面和通信程序;(3)设计下位机(单片机)通信控制程序;(4)通过上位机能够控制继电器的闭合与断开。 2.2主从控制的设计方案根据设计任务的要求和小组讨论以及指导老师的意见(实际设计的下位机可以连接多台,我们根据设计要求,用了2台),制定出本次设计的框图如下: 主机(单片机) RS-485 1#单片机 RS-485 2#单片机 2#单片 图2-1系统硬件结构图 框图说明如下:主机与从机之间采用RS-485串行通信标准进行通信,它的通信距离可以为1200米,传输速度可以达到10M波特率,可以满足工业上用于远程控制距离和速率两方面的要求,RS-485在速度和传输距离上有优势,适合工业的要求。况且,RS-485因为采用差分接收和发送,故传输线只需2根,抗干扰能力强11。从机我们采用的是8051,8051的基本结构包括用于执行各种指令和运算处理的中央处理器CPU,用于存放可以读写的内部程序存储器RAM,用于存放程序指令或数据表格的内部程序存储器ROM,4个8位的并行I/O口P0、P1、P2、P3,用做外部事件计数器或内部定时的2个定时器/记数器,具有5个中断源的中断系统(2个定时器中断、2级中断服务程序嵌套,每个中段源都可用程序规定为高优先中段或低优先级中段),1个串口接口电路,内部时钟电路(本设计采用的是11.059mhz)2。8051和外设备或者外部存储器的连接。连接方式采用3总线结构方式(控制、地址、数据),在8051单片机中没有单独的地址总线和数据总线,而是才用的分时复用的方式,与通用的并行口P0、P2接口公用。P0口分时用做低8位地址线和数据线。P2口用做高8位的地址线。单片机内部的地址线和数据线都不是独立的总线,而是与并行I/O口公用。 串型口中段系统眼 并行接口 CPU 时钟电路 记数器 RAM ROM 图2-2 8051单片机硬件结构图 8051的存储器结构。物理上它有4个存储器空间:片内程序存储器ROM 片外存储器ROM、片内数据存储器RAM,从市容的角度来看,它有3个存储器空间:称为CODE空间 的片内外统一的64kb的ROM;128字节的的片内RAM 称为XDATA空间的64kb的外部RAM8。 为了实现一台单片机与多台单片机通信的目的,必须采用一定的通信协议。在多机通信中的介绍中已经有一种方法可以实现,那就是用通过设置单片机的串行通讯控制寄存器SCON中的多机通讯选择位SM2。当程控设置SM2=1,串行通讯工作与方式2或方式3,发送端通过对TB8的设置已区别与发送的是地址帧(TB8=1)还是数据帧(TB8=0),接收端通过对接收到的RB8进行识别:当SM2=1,若接收到的RB8=1,则被确认为呼叫地址帧,将该帧内容装入SBUF中,并置位RI=1,向CPU请求中断,进行地址呼叫处理;若RB8=0为数据帧,将不予理采,接收的信息被丢弃。若SM2=0,则无论是地址帧还是数据帧均接收,并置位RI=1,向CPU请求中断,将该帧内容装入SBUF。上面讲的是多机通信实现方法中在保证系统可靠性方面较好的一种方法。在本次设计中,我们采用了另一种方法,那就是自定义通信协议,该通信协议由前导字符,地址,控制字符,(控制代码),结束标志组成,其具体指令格式如下所示: 表2-1 发送控制字符串时的指令格式 % * A * (H) (空格) 其中地址*的范围为0032,A为控制字,用来表示控制继电器的开合,后面的*表示控制信息的十六进制码,最后空格为指令的结束符。 表2-2 发送查询字符串的指令格式 % * B (空格) 前导字符,地址和结束符号与上面相同,其中B为控制字,表示查询开关量,上位机通过使用者的选择来形成上述指令发送给单片机,单片机接受到字符串,然后进行相应的处理,首先进行前导字符识别,它表示字符串的开始,然后在进行地址识别,与本机地址相同则继续进行下面的比较操作,否则退出到开始步逐。若相同,则比较判断是控制还是查询操作,即是A还是B,是A则接收下一个数据即控制量送出,是B则查询开关信息并送到主机进行显示,最后退出,回到开始的接收比较操作。 单片机采用查询方式接收控制字符串,然后进入相应的处理程序。单片机不断的查询串行通信控制寄存器的RI,若RI为1,则接收串行缓冲器SBUF中的数据,进行比较。最先单片机要识别的数据为“%”(前导字符),它表示一个控制字符串的开始,才继续查询接收,否则继续查询是否为“%”根据协议的内容,然后单片机要识别的是并本机地址,若接收比较相同则继续查询比较是A还是B,否则退出到主程序的开始,是A则转入控制服务程序,是B则转入查询服务程序。最后退出到主程序的开始。在这样的分布式控制系统中,主机与从之间的多路通信是整个系统的关键。本文根据作者的实验,提出了一种实用的适合于单片机与多台单片机通信协议,就主机与多台单片机之间通信系统的设计和如何在工业环境下利用开单片机与单片机通信程序的设计方法作了些探讨。 主机与各个从机通讯时,从机采用工作方式3及中断方式发送和接收数据。本机地址指向各个从机的地址,当一台单片机发现主机发出的地址与自己的地址相符时,单片机发地址应答信号。其他从机不响应。这样保证每次与主机通讯的只有一台从机。 2.3 主从控制的通信方式 2.3.1 RS485的基本知识RS485支持一点对多的通信,其电气标准为RS422标准,RS485主要规定了在通信线路中上最多使用32对差分驱动器/接收器的多点通信系统的电气特性。RS485通信接口的信号传输是用两根线之间的电压表示逻辑1和0的因为发送端两根传送线,而且接受端也是两根传送线。这样RS485接受和发送端仅需要2根线就完成了传输。由于传输线采用了差动信道,所以它的干扰抑制性好,又由于它的阻抗低无接地问题。传输距离可高达1200m,传输速度可达1Mbps9。RS485是一点对多的通信接口。通信电缆一般为双绞线,必须使用RS232-RS485转换口,在RS485通信方式中,系统中各节点的识别是通过设置的不同的站地址,从而实现通信中的寻址。RS485为半双工,采用一对平衡差分信号线。其总线两端的匹配电阻为100k欧左右,驱动器负载为54欧。驱动器输出电平在-1.5v以下为逻辑1,在1.5v以上为逻辑0。 2.3.2 主从控制通讯不同的独立系统经由互相交换数据便是通讯。通讯的目的是交换数据,既数据通过设备传输到另一个设备中去。人与人之间的对话,计算机与其他设备或者计算机间的数据交换,广播都可以说是通讯。就通信而言,在微型计算机系统中,主机与外部的基本通信方式有两种:并行通信(Parallel Communication)-数据的所有位同时传输,一次传输8位;串行通信(Serial communiaction)-数据的各位一位一位顺序传输,既一个电压标准。在单片微型内部或与极近距离的外部一般都采用并行传输方式,其特点是传输速度快,效率高,但需多根总线。并行通讯是串行通讯速度的8倍,在与外部距离较远的数据传输时多采用串行通信,其特点是只需要一对传输线,大大节省传输线及有关设备,成本低,但传输速度快,效率低13。常用的串行通讯有两种:RS-232串行通讯,RS-485串行通讯。串行通信是将构成数据或字符的每个二进制码位。按照一定的顺序逐位进行传输,其传输有两种基本的通信方式: 同步通信的基本特征是发送与接收时钟需始终保持严格的同步。由于串行传输是一位位顺序进行的,为了约定数据是由哪一位开始传输,需要设定同步字符,称起始同步等。通信时每位所占的时间均相等。 同步接收端在一次串行传输开始时,即进入“监视同步字符串的搜索方式”,一旦检测到设定的同步字符串后,就从同步字符串后的第一位数符开始计数,按约定的数据段进行接收。 同步串行通信方式常用于传输信息量大,速度要求较高(可达800KB/S)的场合。因为它要求由时钟来实现接收/发送之间的严格同步,对时钟信号的相位一致性要求非常严格,因此其硬件设备复杂,成本高,一般串行通信中较少用。 RS-232串行通讯:串行通讯端口在系统控制的范畴中占有很重要的地位,RS-232的通讯端口是计算机的必备设备,通常含有COM1和COM2两个通道,9Pin有COM1接出。以25Pin的接头有COM2接出。RS-232的信号传输方式: RS-485的信号传输方式: 传输端 接收端 传输端 接收端 . .图2-4 RS-232的信号传输方式 图2-5 RS-485的信号传输方式 由上图可以看到:RS232的信号标准是地线,传输端参考到接地端1来的传输数据;接收端则参考接地2而还原出传输端的信号标准。在二个接地端同电位的前提条件下,传送与接收端的信号准电位相同。 RS-485的信号将被传输出去时会分为正负的两条线路,当达到接收端后,在将信号还原成原来的信号;如果将原来的信号标成(DT),而被分成的信号分别表成(D+)及(D-)。则原始的信号与离散的信号在由传输端传送出去的关系入下:(DT)=(D+)-(D-) 使用RS-485网络还可以有效的防止干扰,是工业上运用比较多的串行传输方式19。 2.3.3 通信原理 初始化通讯数据 主机机与从机机之间(9600,n ,8.1)即波特率为9600band ,1起始位, 8数据为1停止位,无奇偶校验。 数据收发方式:二进制 发送数据的顺序 发送同步码(1byte):stx=0x 发送后续字节的长度(2byte):len=2+N 发送len个后续数据字节(N+2,Byte)Rxd txdRxd txdRxd txdRxDTxD主机图2-6 多机通讯的基本原理 多机通讯中,要保证主机与所选的从机实现可靠的通讯,必须保证通信接口具有识别功能。而MCS51串口控制寄存器的SM2就是满足这一要求的控制位,其原理如下: 在串口以方式2(3)接受时,若SM=1,表示置多机通讯位,这时出现两种情况:收到第九位数据为1时,数据才装入SUBF,并置RI=1向CPU发出中断请求;如果接收到第九位数据为0,则不产生中断标志,信息将抛弃,若SM2=0则接收到的第9位数据不能是0还是1都产生RI=1中断标志,接收到的数据装入SUBF中。根据这个功能,实现多机通讯2。 由于串行通讯是在两台或多台各自完全独立的系统之间进行信息传输,这就需要根据实际通讯要求制定某些约定,作为通讯规范遵照执行。协议要求严格,完善,不同的通讯要求,协议的内容也不相同。多机通讯有以下约定: (1)主从式多机通讯系统,允许配置255台从机,各从机的地址分别为00H-FFH。(2)地址FFH为全部从机的控制命令,命令各从机恢复SM2=1状态,准备接收主机的地址呼叫。(3)制定主机发送的控制命令代码,代码按00H,01H,02H,其它:非法命令。 (4)数据长度:16个字节。(5)从机的状态字格式约定为:表2-3 主机指令表 D7 D6 D5 D4 D3 D2 D1 D0 ERR 0 0 0 0 0 TRDY RRDY定义:若ERR=1,从机接收到非法命令; 若TRDY=1,从机发送准备就绪; 若RRDY=1,从机接收准备就绪;MCS51多机通讯原理,多机通讯过程安排如下:(1) 使所有的从机的SM2=1,处于只接受状态。(2) 主机发送一帧地址信息,其中包含8位地址,第9位为地址数据标志位置1表示接收地址。(3) 从机接收到地址帧后,各自将所受到的地址与本机的地址相比较。对于地址相符的从机,使SM2清0以接收主机随后发来的信息;对于地址不相符的从机,任保持SM2=1状态,对主机随后发送的数据不执行。(4) 被寻址的从机,清除其SM2=1,没有被寻址的其他从机SM仍然维持不变。(5) 主机发送控制指令与数据,给被寻址的从机数据帧的第9位置0,表示发送的是数据或控制指令。(6) 当主机改为和其他从机联系时,可再发出地址帧寻址从机。而先前被寻址的从机在分析出对主机是对其他从机寻址,恢复其SM=1,对随后主机发来的数据帧不执行。第3章 系统硬件电路设计 3.1主从控制系统硬件图图3-1 主从控制系统硬件图 3.2单片机的选型上下位机同为8051系列,我们采用的是89C51。P89C51RX系列单片机以增强MCS-51 CPU作为内核,硬件资源、指令系统、引脚排列与相同封装形式的增强型80C51芯片保持100%兼容,即它完全可以替换具有相同封装形式的8XC5X、8XC5XX2系列芯片。与增强型MCS-51X相比,89C51系列的最大特点是扩展了片内存储器的种类和容量。89C51系列单片机扩充了片内RAM储器容量,在89C51内部,除了256字节的内部RAM外,还集成了256768字节的内部扩展RAM5。P89C51的数据存储器包括片内RAM和外部RAM两大部分,其中片内RAM存储器由256字节的内部RAM和256768字节的内容扩展RAM组成,如图3-2图3-2 P89C51片内存储器结构 MCU 内部有一个独立运行的时钟发生器,在复位后被默认为系统时钟。如果需要,时钟源可以在运行时切换到外部振荡器,外部振荡器可以使用晶体、陶瓷谐振器、电容、RC或外部时钟源产生系统时钟时。钟切换功能在低功耗系统中是非常有用的,它允许MCU 从一个低频率(节电)外部晶体源运行,当需要时再周期性地切换到高速可达16MHz 的内部振荡。CIP-51有标准的P89C51程序和数据地址配置。它包括256字节的数据RAM,其中高128字节为双映射。用间接寻址访问通用RAM的高128字节,直接寻址访问128字节的SFR地址空间。数据RAM的低128字节可用直接或间接寻址方式访问。前32个字节为4个通用寄存器区,接下来的16字节既可以按字节寻址也可以按位寻址7。P89C51中的CIP-51还另有位于外部数据存储器地址空间的4K字节的RAM块和一个可用于访问外部数据存储器的外部存储器接口EMIF。 这个片内的4K字节RAM块可以在整个64K外部数据存储器地址空间中被寻址(以4K为边界重叠)。外部数据存储器地址空间可以只映射到片内存储器、只映射到片外存储器、或两者的组合(4K以下的地址指向片内,4K以上的地址指向EMIF)EMIF可以被配置为地址/数据线复用方式或非复用方式。 3.3单片机系统电路图 图3-3 单片机系统硬件电路图 图中89C51单片机和MAX485相连,来实现主机与从机的串行通信。为了使设计更有实际意义,虽然INT1、INT0以及P1口中的P1.6和P1.7和继电器开关控制有关外部中断部分在电路图中也给出但并非本设计所研究的重点。第四章 串行通信软件设计 4.1通信协议通信协议是指通信双方共同遵守的交换数据的格式和意义的一组规则。计算机网络的协议包括了物理线路的电气特性到计算机的进程之间共享资源的全面内容。我们的通信协议只需制定信息在线路中的传输规则,他涉及信息格式、顺序控制、流量控制、信息的成帧与拆帧、差错控制等方面。在本文中我们主要涉及的是对数据传送方式的规定,包括数据格式的定义和数据位定义等。通信方式必须遵从统一的通信协议。串行通信协议包括同步协议和异步协议两种,在这里只讨论异步串行通信协议。要想保证通信成功,通信双方必须有一系列的约定,比如:作为发送方,必须知道什么时候发送信息、发什么、对方是否接到、收到的内容有没有错、要不要重发、怎样通知对方结束等。作为接收方,必须知道对方是否发送了信息、发的是什么、收到的信息是否有错、如果有错怎样通知对方重发、怎样判断结束等。这种约定就叫做通信规程或协议,它必须在编程之前确定下来。要想使通信双方能够正确地交换信息和数据,在协议中对什么时候开始通信、什么时候结束通信、何时交换信息等问题都必须作出明确的规定。只有双方都正确地识别并遵守这些规定才能顺利地进行通信15。(1)起始位当通信线上没有数据被传送时处于逻辑“1”状态。当发送设备要发送一个字符数据时,首先发送一个逻辑+0“信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。起始位所起到的作用就是使设备同步,通信双方必须在传送数据位前协调同步。(2)数据位当接收设备收到起始位后,紧接着就会收到数据位。数据位的个数可以是5、6、7或8位,计算机机中经常采用7位或8位数据传送,8051串行口采用8位或9位数据传递。这些数据位被接收到移位寄存器中,构成传送数据字符。在字符数据传送过程中,数据位从最低有效位开始发送,依次在接收设备中被转换成并行数据。(3)奇偶校验位数据位发送完之后,便可以发送机偶校验位。奇偶校验用于有限差错检测,通信双方应约定一致的奇偶校验方式。如果选择偶校验,那么组成数据位和奇偶位的逻辑+1的个数必须是偶数;如果选择奇校验,那么逻辑“1”的个数必须是奇数。(4)停止位约定在奇偶位或数据位(当无奇偶校验时)之后发送的是停止位。停止位是一个字符数据的结束标志,可以是1位、1.5位或2位的低电平。接收设备接收到停止位后,通信线路上便又恢复逻辑1状态,直至下一个字符数据的起始位到来。(5)波特率通信线上传送的所有位信号都保持一致的信号持续时间,每一位的宽度都由数据传送速率确定,而传送速率是以每秒多少个二进制位来度量的,这个速率叫波特率。如果数据以每秒300个二进制位在通信线上传送,那么这个传送速率为300波特率。在主机和多台单片机的通讯中,确定一个明确而合理的通讯协议是关键,包括对数据格式、通讯方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定。为了区别不同的分机,必须为每个分机分配一个唯一的地址,此地址唯一区别各单片机。并且规定一特殊符号标志为广播方式。数据格式采用数据包的形式,一次传输一组数据。数据包格式如下所示:表4-1 数据包格式起始标志位 分机地址 操作命令 数据长度 数据内容 和检验 结束标志 起始标志位:1个字节分机地址:1个字节命令数据:l个字节数据长度:1个字节数据内容:n个字节和检验:2个字节结束标志位:l个字节数据格式中的分机地址表示与主机通讯的单片机地址。操作命令域则表示此次通讯要完成的操作。在单片机发送上位机接收的时候,协议规定命令00 H为上报数据,此时数据包中的数据长度、数据内容、和检验三个域便填充实际发送数据的个数、数据及和校验;命令01H04H则表示单片机给主机的反馈信息,此时数据包中的数据长度、数据内容、和检验三个域为空,其中当命令为01H表示接收成功,02H表示接收失败并要求重发,03H表示单片机有数据上报要求,04H表示单片机无数据上报要求。操作命令域在主机发送单片机接收的时候也有相似的协议规定。根据通信情况,通信协议分为以下三种情况:(1)主机发送从机接收主机向单个分机传数据时,首先,上位机顺次发送起始标志位,目的地址位,数据,生成检验位,结束标志位,上位机发送后每个下位机都产生中断把上位机数据包都接收下来,当接收到结束标志字符时,表示接受到一帧完整的数据包,然后对数据解包,把接收到的目的地和本机地址进行比较,如果不是则马上跳出中断服务程序,相同的话则表示要和本下位机进行通讯。主机发完信息后便等待该分机的接收应答。当接收数据包完成后,接受方也生成相应的检验和,如果接受方生成的检验和与接收到的检验和一致,则表明这次通讯成功,下位机根据接收到的内容给上位机发送相应的反馈信息。如果不一致,则表明此次通讯失败,下位机给上位机发送失败信息,要求上位机重新发送。 (2)从机发送主机接受由于系统采用上位机轮询下位机的工作方式,单片机在通过程中处于被动地位,只能在其被轮询到的时候才能给上位机发送数据,否则即使有信息要上报主机时,也必须处于等待。 上位机从第一分机依次查询下位机,给轮询到的下位机发送查询命令,询问该单片机是否有信息要上报给上位机。被轮询的单片机如果没有信息要上报给上位机的话,就给上位机发送无上报要求的指令,上位机接受到此指令后便轮询下一地址的分机;若分机有数据需上报便回发一个有上报要求给主机,主机收到后便等待分机上报数据,有上报数据的分机组织好数据后上报给主机,然后等待主机的接收应答。主机收到分机上报的数据后进行检查,若正确接收发正确接收应答,否则发错误接收应答。当接收错误后,主机等待分机再次上报数据,分机收到接收错误应答后再次发送数据。 (3)上位机向分机发广播信息首先,上位机向各分机发送数据,此时该数据帧中的分机地址是一个广播地址,各分机接收后,看到分机地址是广播地址,便都作好接收准备,继续接收下面的信息。主机发完数据包后,开始轮询各分机是否正确收到了广播信息,若各分机都正确收到了广播信息,即各分机的应答信息都为正确接收应答,主机便发一个本次通信结束标志,之后,便可以开始下一次通信;若有某一台或某几台分机出错,则只对出错的那一台或那几台分机重发信息,其通信协议采用前面所述的通信协议中的第一种情况。由于串行通讯是在两台或多台各自完全独立的系统之间进行信息传输,这就需要根据实际通讯要求制定某些约定,作为通讯规范遵照执行。协议要求严格,完善,不同的通讯要求,协议的内容也不相同。多机通讯有以下约定:(1)主从式多机通讯系统,允许配置255台从机,各从机的地址分别为00H-FFH,所有的从机的SM2=1,处于只接受状态。(2)主机发送一帧地址信息,其中包含8位地址,第9位为地址数据标志位,表示接收地址。(3)从机接收到地址帧后,各自将所受到的地址与本机的地址相比较。对于地址相符的从机,使SM2清0以接收主机随后发来的信息;对于地址不相符的从机,任保持SM2=1状态,对主机随后发送的数据不执行。(4)被寻址的从机,清除其SM2=1,没有被寻址的其他从机SM仍然维持。(5)主机发送控制指令与数据,给被寻址的从机数据帧的第9位置0,表示发送的是数据或控制指令。(6)当主机改为和其他从机联系时,可再发出地址帧寻址从机。而先前被寻址的从机在分析出对主机是对其他从机寻址,恢复其SM=1,对随后主机发来的数据帧不执行。(7)主机接收到呼叫信号后,将该信号返回。每一单片机接收到主发出的信号后,与自己地址比较,相同者置SM2=0,打开通信通道。其余单片机继续处于鉴听状态。(8)主机接收数据时,先判断数据结束标志(RB8),若RB8=1,表示数据传输结束,并比较此帧校验和。若正确,则回送正确信号OOH,此信号令从机复位(即重新等待地址帧);若校验和出错,则发送OFFH,令该从机重发数据。若接收帧的RB8=0,则原数据到缓冲区,并准备接收一F帧信息。(9)波特率设置为9600b/s主机与单片机间的通信协议采取自定义的方式。每一次通信以主机向单片机发送一个命令帧开始,单片机收到命令帧后,向主机回送一个响应帧。发送和接收以文本方式进行。命令帧和响应帧格式如表所示,它们都是以字符“”开始,以空格符结束。为了实现一台主机与多台单片机通信的目的,必须采用一定的通信协议。在多机通信中的介绍中已经有一种方法可以实现,那就是用通过设置单片机的串行通讯控制寄存器SCON中的多机通讯选择位SM2。当程控设置SM2=1,串行通讯工作与方式2或方式3,发送端通过对TB8的设置已区别与发送的是地址帧(TB8=1)还是数据帧(TB8=0),接收端通过对接收到的RB8进行识别:当SM2=1,若接收到的RB8=1,则被确认为呼叫地址帧,将该帧内容装入SBUF中,并置位RI=1,向CPU请求中断,进行地址呼叫处理;若RB8=0为数据帧,将不予理采,接收的信息被丢弃。若SM2=0,则无论是地址帧还是数据帧均接收,并置位RI=1,向CPU请求中断,将该帧内容装入SBUF。上面讲的是多机通信实现方法中在保证系统可靠性方面较好的一种方法。在本次设计中,我们采用了另一种方法,那就是自定义通信协议,该通信协议由起始字符,地址,控制字符,控制代码,结束标志组成,其具体指令格式如下所示: 表4-2 发送控制字符串时的指令格式 % * A * (H) (空格) 其中地址*的范围为0032,A为控制字,用来表示控制命令,后面的*表示控制信息的十六进制码,最后空格为指令的结束符。 表4-3 发送查询字符串的指令格式 % * B (空格)发送查询字符串的指令格式与上面相同,也包括起始字符,地址,控制字及代码,结束符,其中B为控制字,表示查询信息量。 上位机通过使用者的选择来形成上述指令发送给单片机,单片机接受到字符串,然后进行相应的处理,首先进行前导字符识别,它表示字符串的开始,然后在进行地址识别,与本机地址相同则继续进行下面的比较操作,否则退出到开始步逐。若相同,则比较判断是控制还是查询操作,即是A还是B,是A则接收下一个数据即控制量送出,是B则查询开关信息并送到主机进行显示,最后退出,回到开始的接收比较操作。 单片机采用查询方式接收控制字符串,然后进入相应的处理程序。单片机不断的查询串行通信控制寄存器的RI,若RI为1,则接收串行缓冲器SBUF中的数据,进行比较。最先单片机要识别的数据为“%”(起始字符),它表示一个控制字符串的开始,才继续查询接收,否则继续查询是否为“%”根据协议的内容,然后单片机要识别的是本机地址,若接收比较相

温馨提示

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

评论

0/150

提交评论