由于微机技术的飞速发展和控制系统的复杂化,多机通信的应用越来越广泛,特别在一些对工业过程的控制中,多机通信已经成为通信控制领域的主流通信方式。
本文针对目前单片机书籍(包括教材)很少介绍多机通信的实现技术的情况,在交通灯控制系统的基础上设计了一个交通灯控制网络系统,以此为实例给出了单片机多机通信的解决方案。
1 单片机多机通信的基本原理
计算机之间的通信除了点对点通信外,还有一机对多机或多机之间的通信,构成计算机网络,其中主从式多机通信是比较常用的一种方式。在主从式多机通信系统中,只有一台主机,但可以有多台从机。主机发送的信息可以传送到各个从机或指定从机,从机发送的信息只能为主机所接收,各从机之间不能直接通信。主机通常由PC机担任,也可用单片机担当(本文研究的是用单片机作主机),从机通常为单片机。 MCS-51单片机串行口的方式2和方式3具有多机通信功能,可实现一台主机和若干台从机构成总线式的多机分布式系统,其连接方式如图1所示。
在多机通信中,可充分利用MCS-51单片机的多机通信控制位SM2。用作主机的单片机的SM2应设定为0,作从机的SM2设定为1。主机发送并为从机接收的数据有两类:一类是地址,用于指示需要和主机通信的从机的地址,由串行数据第9位为“1”标志;另一类是数据,由串行数据第9位为“0”标志。由于所有从机的SM2=1,故每个从机总能在RI=0时收到主机发来的地址(因为串行数据第9位为“1”),并进入各自的中断服务程序。在中断服务程序中,每台从机把接收到的从机地址和它的本机地址(系统设计时分配)进行比较。所有比较不相等的从机均从各自的中断服务程序中退出(SM2仍为1),只有比较地址相等的从机才是被主机寻址通信的从机。被寻址从机在程序中使SM2=0,以便接收随之而来的数据或命令(RB8=0)。上述过程进一步归结如下:
(1)主机的SM2=0,所有从机的SM2=1,都处于监听状态(只能接收地址帧),以便接收主机发来的地址。
(2)主机给从机发送一帧地址信息时,其中的8位是地址,第9位为1表示是地址帧。
(3)所有从机在SM2=1、RB8=1且RI=0时,接收到主机发来的从机地址帧后,进行中断处理,进入相应的中断服务程序,并和本机地址进行比较以确认是否为被寻址从机。
(4)被寻址的从机通过指令清除SM2,使SM2=0进入接收数据状态,可以接收主机随后发送的数据(包括命令),并向主机发回接收到的从机地址作为响应信号,供主机核对,实现主机与被寻址从机的双机通信;未被寻址从机保持SM2=1,并退出中断服务程序。
(5)完成主机和被寻址从机之间的数据通信,被寻址从机在通信完成后重新使SM2=1,并退出中断服务程序,恢复到监听状态,等待下次通信。
2 交通灯控制网络硬件电路设计
2.1 硬件电路
城市交通控制系统是一个联动的系统,所有路口的交通灯控制系统由一台中心主机控制,当某一路口将出现紧急情况时(如交通管制、交通堵塞、路段维修等),单击中心主机的对应按钮即可使该路口的所有红灯亮,禁止所有普通车辆通行。本文利用Proteus软件仿真设计了
一台主机控制两台从机的主从式多机系统,实施时可以扩展到253台主机,硬件电路如图2所示。单片机U1为主机,U2、U3为从机,代表两个路口的控制机,S1、S2为按钮,分别与U1的P1.1、P1.0连接,当按下时分别控制两个路口的交通信号灯为所有红灯亮,表示该路口出现紧急情况。与主机U1相连的两个BCD数码管用于显示从机接收到的响应帧,即出现紧急情况的路口地址号,如果接收到的响应帧传送出现错误,与主机发出的地址号不同时,这两个数码管显示FF,当S1和S2没有按下时,这两个数码管也显示FF。
由于串行口通信时传输的“0”或者“1”是通过相对于“地”的电压区分的,因此使用串行口通信时,必须将主、从机的“地”线相连以使其具有相同的电压参考点。[page]
2.2 通信协议
多机通信是一个复杂的通信过程,必须有通信协议来保证多机通信的可操作性和操作秩序,实现收/发双方的响应与协调。这些通信协议,至少应包括从机的地址、主机的控制命令、从机的响应帧格式和数据通信格式等的约定,本文建立交通灯控制网络系统的通信协议如表1
所示。
3 软件程序的设计
3.1 主机程序设计
主机主要负责呼叫从机,发送控制命令以及从机响应帧的接收,数据的显示等功能。为了保证主、从机之间握手的成功,主机采用查询方式发送和接收数据,串行口的工作方式设置为方式2,SMOD=0。其流程图如图3所示。
[page]
3.2 从机程序设计
从机循环运行交通灯控制程序,交通灯控制程序利用定时器/计数器0实现定时,为了能正常和主机通信,从机的串行口也工作于方式2,SMOD=0,以保持和主机相同的波特率。由于主机呼叫从机时发送的地址帧与命令帧没有重复,为了使程序简单,本文针对从机接收到主机发来的数据后不通过第九位数据来判断是地址帧还是命令帧。对接收到的数据如果与本机地址相等则表明是地址帧,立即向主机发送自己的地址作为响应信号;如果是命令则按命令执行相关操作(所有路口红机亮或恢复交通灯信号);如果既不与本机地址相等也不是两个命令之一,则认为该数据不是发送给本机的,该机继续监听,从机U2串行口接收和发送数据中断服务程序清单如下:
4 结束语
单片机利用串行口进行多机通信是一个比较复杂的过程,因此大多数单片机书籍没有对这方面的内容进行介绍,或者没有提供实例,本文对MCS-51单片机的多机通信进行一定的探讨,利用单片机多机通信对城市交通灯控制系统实现网络化集中控制,是一个很好的实例,通过Proteus仿真运行(其运行情况如图3所示),此方案切实可行。
关键字:单片机 多机通信 交通灯系统 控制网络
引用地址:
基于51单片机多机通信的交通灯控制网络设计
推荐阅读最新更新时间:2024-03-16 12:45
基于MCU的气压高度表设计
高度计就是利用大气压的变化规律,来测量所在地的海拔高度和大气压变化,以及测量因地域变化发生的相对高度。一般适用于户外活动者,包括登山、攀岩、滑雪运动、外出旅行等。针对当前气压高度计产品绝对高度测量误差大、功能单一、体积大、耗电高不便携带等缺点,基于VTI公司推出的SCP1000-D11气压传感器微小的尺寸,4种测量模式的切换等特点,采用气压数据与气压转换高度软件算法改进设计。并在硬件设计上增加了背光显示,闹钟功能。 1 系统设计 为使系统更精简、经济与实用,采用4位的OKIMCU ML63189B,SCP1000-D11传感器作为一个Slave,通过I2C接口与MCU的I/O通讯。增加了时钟计时、秒表、闹铃与背光显示功能。
[单片机]
MSP430单片机各种寄存器总结(5)——Timer_A0
参考资料: 王宏波老师的PPT MSP430F6638用户手册 王宏波老师实验教程 本章最新更新日期:2018.12.22 第五章 Timer_A0寄存器 5.1 TA0CTL 【注意】Timer_A0有两种中断,一种是TAIFG,一种是TAxCCR0 CCIFG 5.2 TA0R TA0的16位计数器,这个没啥好说的 我起啦,一枪秒啦,有什么好说的 5.3 TA0CCTLn(n=0~6) 5.4 TA0CCRn 这个就是存放比较寄存器的值,可以用来设置周期和占空比 5.5 TA0IV TAIV中断的中断矢量寄存器,当除TA0CCR0之外的中断标志位置位时,这里面的值就会改
[单片机]
基于AVR单片机多任务嵌入式Internet系统设计
1 引言 目前,嵌入式系统已经广泛渗透到人们的工作、生活中。从家用电器、信息终端、手持通信设备到仪器仪表、制造工业、过程控制等领域,嵌入式设备已随处可见。另一方面,近几年来Internet技术的飞速发展给嵌入式应用带来了新的契机,在未来嵌入式系统中应用Internet技术具有很大的优势。 目前嵌入式Internet技术的实现主要有下面三种方式 : 第一种方式是EMIT技术,采用支持TCP/IP协议的高性能服务器作为网关(emGateway), 嵌入式设备通过RS-232、RS-485或者CAN总线等与网关服务器连接,间接通过服务器网关连接Internet。经过多年的发展EMIT技术已经在工业设备的网络化中得到了广
[单片机]
单片机C语言编程心得
写这个8*8按键程序的过程中,不管是在自己写还是参考别人程序的过程中,发现自己对C语言有些基本知识点和编程规范有很多不懂的地方,有些是自己以前的编程习惯不好,有些就是基础知识不扎实的表现,所以总结出来。 一、.H文件与.C文件的关系: 迄今为止,写过的程序都是一些很简单的程序,从来没有想到要自己写.H文件,也不知道.H文件到底什么用,与.C文件什么关系。只是最近写键盘程序,参考别人的程序时,发现别人写的严格的程序都带有一个“KEY.H”,里面定义了.C文件里用到的自己写的函数,如Keyhit()、Keyscan()等。 经过查找资料得知,.H文件就是头文件,估计就是Head的意思吧,这是规范程序结构化设计的需要,既可以实现大
[单片机]
基于单片机为核心的遥控报警系统设计
1 引 言 由于经济的快速发展,人们生活水平得到较大的提高,生活节奏也越来越快,为此家电遥控和家庭安全也为人们所需要和重视。以AT89C51单片机为核心通过电话进行电器遥控和报警装置主要解决这些问题。他的主要功能有:通过电话可以遥控16路电器通断,遥控路数可以根据需要进行扩展;可以实现电器调压调速控制,有密码设定,保密安全性好;有语言提示,避免盲目操作;可以取消已输入的操作命令;当单片机接收到家中天然气泄露、温度超限和失窃信号后会自动拨打预留电话并报告家中发生的情况。 2 硬件电路设计 总体电路设计思路是:电话遥控报警器与家用电话采用并联方式,当有振铃信号时单片机开始记数,前10次铃声内若有人接电话,则遥控报警器被屏蔽,不
[单片机]
单片机中实现8个LED的流水灯效果
左移函数_crol_(x,y)和数组实现 #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char uchar temp;/*变量类型和赋的值最好一致,P1口为8位寄存器,选用uchar*/ void delay(uint); void main() { temp=0XFE; P1=temp; while(1) { temp=_crol_(temp,1); //循环左移 delay(300); P1=temp; } } void delay(uint z) { uint x
[单片机]
基于32位微控制器的串口转以太网单芯片方案
针对工业运用,包括远程监控、测量、网络设备和交换机、工业自动化、HVAC、建筑安防等领域中对数据远距离传输的需求,作为Luminary代理商的北高智科技有限公司推出了基于Luminary cortex-m3架构32位控制器(LM3S6?32)的单芯片串口转以太网方案,以满足行业应用需求。 应用背景 在工业控制以及安防等领域,通常需要把带有串口的终端设备和控制中心通过以太网进行组网连接。Luminary 32位微控制器LM3S6?32完全集成介质访问控制器(MAC)和网络物理层(PHY),提供单芯片串口转以太网解决方案。 芯片的功能模块简介 1. 以太网控制器模块 (1) 以太网控制器的基本应用架构 以太网控制器模块按功
[单片机]
51单片机控制步进电机-让电机转起来
摘要: 本节介绍用简单的方式,让步进电机转起来。其目的之一是对电机转动有直观的感受,二是熟悉整个开发流程 本系列教程必要的51单片机基础包括IO口操作、中断、定时器三个部分,相关基础教程网上很多,可以自行学习 一、软件清单 需要用到的软件有keil5编译软件、STC程序烧录软件 二、控制原理 根据TB6600驱动器原理,向PUL口发送脉冲,每发送一个脉冲,电机就转一步。通过单片机延时的方式,切换PUL口电平产生脉冲,从而控制电机转动。 三、程序代码 //毫秒延时函数 void delay(unsigned int z) { unsigned int x,y; for(x=z;x 0;x--) for(y
[单片机]