您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于51单片机的多机通信系统设计
单片机多机通信系统一、引言随着单片机技术的不断发展,单片机的应用已经从单机向多机互联化方向发展。单片机在实时数据采集和数据处理方面,有着成本低、能满足一般要求、开发周期短等优点,其在智能家居、计算机的网络通信与数据传输、工业控制自动化等方面有着广泛的应用。本系统是面向智能家居应用而设计的。在初期,采用红外无线通信方式,其传输距离短,适于一般家庭应用,且成本相对较低;待方案成熟、成本允许,可以改用GSM无线通信方式。二、系统原理及方案设计1、系统框架介绍本系统为基于51单片机的多机红外无线通信系统,由三个51单片机模块组成。其中一个作为主机(即上位机),负责接收来自从机1(即下位机)采集的数据信息,以及向从机2(即下位机)发送控制信息。从机1是数据采集模块,采集温度、光强等室内数据,并将其发送给主机。主机经分析处理,作出相应判断,并给从机2发送控制信息,使由从机2控制的电机作出相应反应,调节室内环境状况。系统总体框图如下图1所示,图2为红外收发模块简图:图1系统总体框图图2红外收发模块简图2、多机通信原理介绍在多机通信系统中,要保证主机与从机间可靠的通信,必须要让通信接口具有识别功能,51单片机串行口控制寄存器SCON中的控制位SM2正是为了满足这一要求而设置的。当串行口以方式2或方式3工作时,发送或接收的每一帧信息都是11位的,其中除了包含SBUF寄存器传送的8位数据之外,还包含一个可编程的第9位数据TB8或RB8。主机可以通过对TB8赋予1或0,来区别发送的是数据帧还是地址帧。根据串行口接收有效条件可知,若从机的SCON控制位SM2为1,则当接收的是地址帧时,接收数据将被装入SBUF并将RI标志置1,向CPU发送中断请求;若接收的是数据帧时,则不会产生中断标志,信息将被丢弃。若从机的SCON控制位SM2为0,则无论主机发送的是地址帧还是数据帧,接收数据都会被装入SBUF并置1标志位RI,向CPU发出中断请求。那么,我们规定如下通信协议:(1)置1所有从机的SM2位,使之处于只能接收地址帧的状态,并给每个从机初始化一个地址值;(2)主机发送地址帧,其中包含8位地址信息,第9位为1,进行从机寻址;(3)从机接收到地址后,将8地址信息与其自身地址值相比较,若相同则清“0“控制位SM2,若不同则保持SM2位为1;(4)主机从第二帧开始发送数据帧,其中第9位为0。对于已经被寻址的从机,因其SM2为0,可以接收主机发送来的任何信息,而对于其他从机,因其SM2为1,将对主机发送来的数据信息不予理睬,直到发来一个新的地址帧。(5)若主机需要要与其他从机联系,可再次发送地址帧来进行从机寻址,而先前被寻址过的从机在分析出主机发来的地址帧是对其他从机寻址时,恢复其自身的SM2为1,对主机随后发来的数据信息不予理睬。3、红外通信方式介绍因为本系统是面向智能家居而设计的,考虑到有线方式给用户带来的不便,我们选用无线作为各单片机间的通信方式。且我们队员以前未做无线通信,希望在这次比赛中锻炼、提高自己。对于无线通信方式,常见的有五种:红外通信,蓝牙通信,Zigbee通信,GSM通信,GPRS通信。红外通信是我们在学习中接触到最多的,元件材料相对简单、容易获得,能够满足一般家庭应用,且红外通信方面的资料比较多,易学。蓝牙设备自制不易,购买则增加系统成本。Zigbee、GSM、GPRS则或系统设计复杂,或成本高。红外通信背景介绍:红外线是波长在750nm至1000nm间的电磁波,其频率高于微波而低于可见光,是一种人肉眼看不见的光线。目前无线电波和微波已被广泛应用在长距离的无线通信中,但由于红外线的波长较短,对障碍物的衍射能力差,所以更适合应用在需要短距离无线通信场合点对点的直线数据传输。(1)红外收发器TFDU4100介绍对于红外收发模块,我们采用TFDU4100红外收发器来实现。TFDU4100是常用的低电压红外收发模块,以串行方式进行数据交换,遵循IrDA1.2标准,最高通信速率可以达到115.2Kbps,最大传输距离为3.0m。TFDU4100芯片图片和管脚定义分别如图3、表1所示图3TFDU4100芯片图片管脚号作用描述I/O有效电平1IREDAnode红外发射的阳极,该引脚通过一个外接电阻与Vcc2相接2IREDCathode红外发射的阴极,该引脚在模块内部与输出驱动相连3TXD发送数据的输入端输入引脚高4RXD接收数据的输出端,不需要上拉或下拉电阻,数据发送时此脚无效输出引脚低5NC不用连接6Vcc1/SD电源/关闭引脚,当该脚为低电平时,红外传输模块关闭7SC灵敏度控制端输入引脚高8GND接地端表1TFDU4100管脚定义除了使用TFDU4100构成红外收发模块外,还可以选用其他的方案。比如用分立元件搭建一个红外发射、接收电路:用电阻、电容组成低步振荡器,频率调在38KHz左右,由红外发光二极管发射载波;红外接收部分采用普通的红外接收头,比如LF0038U,再用二极管、晶体管、电容、电阻构成放大、解调电路。但此方案缺点在于电路复杂、系统稳定性不强,并且成本与采用TFDU4100设计差别不大。(2)串行红外传输控制器TOIM3232介绍根据IrDA红外传输标准,串行红外传输采用特定的脉冲编码标准,该标准与RS232串行传输标准不同。若两设备之间进行串行红外通讯,就需要一个传输控制器,以进行RS232编码和IrDA编码之间的转换。TOIM3232串行红外传输控制器就是Vishay公司为配合TFDU4100而设计的。其功能结构图如图4所示:图4TOIM3232功能结构框图在输出模式下,TOIM3232可把RS232输出信号转变成符合IrDA标准的信号以驱动红外发射器;在接收模式下,TOIM3232可把IrDA输入信号转变成符合RS232标准的信号;TOIM3232的红外传输速度范围为2.4Kbit/s~115.2Kbit/s。TOIM3232内部有一个3.6864MHz的晶振,用以实现脉冲的扩张和压缩。该时钟信号既可以由内部晶振产生也可用外部时钟实现。该控制器可通过RS232口进行编程控制,其输出脉冲宽度可程控为1.627μs或3/16位长。4、主机模块介绍主机模块以89C52单片机为控制核心,外围主要接有4X4矩阵键盘、1602液晶显示屏、TFDU4100红外收发器、串行红外传输控制器TOIM3232。此模块中89C52单片机作为CPU,控制整个系统的运转。系统启动时,默认主机与从机1建立连接。主机以串行口中断方式接受从机1发送的数据。数据经单片机分析,显示于1602液晶上,并判断是否向从机2发送控制信息。本系统中我们使用4*4的非独立式矩阵键盘,如下图5所示。将行线、列线分别连接到按键开关的两端,并且连接到单片机的I/O口。图54*4矩阵键盘通过矩阵键盘,可以向主机输入要寻址的从,以控制主与哪一个从通信;并能控制与主机连接的1602液晶,显示任意一项从机1测量的数据。下面为4*4矩阵键盘的程序设计流程图如下图6所示:图64*4矩阵键盘的程序设计流程图1602液晶是一种专门用于显示字母、数字、符号的点阵式LCD,它有5*10和5*7两种点阵字符显示模式可供选择,5*7点阵字符下可以显示2行共32个字符。一般其主控制驱动电路为HD44780,模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。1602液晶在此模块内的作用,是显示从机1测量的数据,验证红外通信的可靠性;当主机要切换要与之通信的从机时,用1602显示修改后与之通信的从机名。红外通信模块主要由TFDU4100和TOIM3232构成。TFDU4100采用IrDA红外传输标准,即串行红外传输的脉冲编码,这个标准不能和单片机接口直接兼容。所以用串行红外传输控制器TOIM3232进行串码和IrDA编码间的转换。TOIM3232可把单片机输出的串码信号转换成符合IrDA标准的信号以驱动TFDU4100;它还可以将IrDA输入信号转换成串码信号送入单片机。其电路设计原理图如下图7所示:图751单片机、TOIM3232、TFDU4100简易连接原理图主机负责对外围器件的调度与控制,包括红外收发模块接收数据控制、键盘扫描、1602液晶的显示、是否向从机2发送消息。其程序流程图如下图8所示:NY图8主机程序流程图5、从机1模块介绍从机1模块以89C52单片机为控制核心,外围主要接有1602液晶显示屏、TFDU4100红外收发器、串行红外传输控制器TOIM3232、ADC0809、温度传感器、光强传感器。室内温度的测量采用温度传感器DS18B20。选用此传感器的原因是它价格便宜,可以降低系统成本,且对于一般家庭使用,此传感器的精度足够了。使用简单,易控制。DS18B20提供9位二进制温度读数,指示器件的温度信息,并通过单线接口送至CPU。DSl820中有用于贮存测得的温度值的两个8位存贮器RAM编号为0号和1号。将存贮器中的二进制数求补再转换成十进制数并除以2就得到被测温度值(-550摄开始单片机复位默认启动时与从机1连接1602显示此时与从机1连接While(1)死循环结束串行口中断数据分析超过阀值1602显示数据返回主程序键盘设置连接从机2红外发送数据返回主程序1602显示连接机2氏度--125摄氏度)。光强传感器采用实验室现已有的,主要由可见光光敏电阻器、普通电阻等分立器件构成。光敏电阻是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强时,电阻减小,入射光弱时,电阻增大。所有传感器输出的数据均为模拟量,要输入单片机处理,必须经过A/D转换。模数转换芯片采用ADC0809,主要原因是采集数据的路数较多(以后还可扩展),需要一个多通道的A/D,而我们以前做数电实验时用过的ADC0809正是8位8通道的模数转换芯片,它是逐次逼近式A/D转换器,可以和单片机直接接口。红外收发模块,则负责将传感器采集的数据传至主机,其结构已在前面介绍过。1602液晶在此处的作用是将单片机接收到的数据显示出来,与传到主机的数据作对比,验证红外通信的可靠性。从机1的程序流程图如下图9所示:NY图9从机1程序流程图开始复位定时时间到?启动A/D,采集数据1602显示红外向主机发送结束6、从机2模块介绍从机2模块以89C52单片机为控制核心,外围主要接有红外收发模块、电机驱动电路、直流电机和窗帘模型。红外收发模块负责接收主机发送来的信息,经单片机处理,以控制电机运转。电机驱动电路主要由L298N构成。L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。电路原理图如下图10所示:图10电机驱动电路原理图直流电机采用德国FAULHABER-2342电机,其转子转动惯量小,因而动态性能极好;FAULHABER电机采用精密合金换向器,因其接触电阻低而使性能优良。为表征电机控制的实现,在电机后端我们做一个窗帘模型,通过电机控制窗帘的开关。89C52单片机在此模块中,负责控制接收来自主机的信息,并产生PWM波驱动电机,以达到调速的目的。51没有硬件的PWM,全靠软件模拟。调速程序可以用定时器做,首先设置两个定时用的全局变量,一个代表高电平时间,一个代表低电平时间。先给定时器初值(既那两个全局变量中的一个),溢出后触发中断,在中断里设置另另一个初值并且取反PWM的输出端口,两个初值轮流给定时器,就可以任意调整占空比,占空比取决于两个初值。此法对于精度要求不高的场合,很适用。PWM中断服务子程序的流程如下图11所示:图11PWM中断服务子程序的流程7、硬件电路实现对于系统的硬件电路实现,89C52单片机采用主办方提供的最小系统核心板,其晶振和复位电路已经做好,I/O也引出。其他外围电路模块,有矩阵键盘
本文标题:基于51单片机的多机通信系统设计
链接地址:https://www.777doc.com/doc-1496329 .html