一主多从设计.docx

上传人:小飞机 文档编号:4928798 上传时间:2023-05-24 格式:DOCX 页数:10 大小:201.70KB
返回 下载 相关 举报
一主多从设计.docx_第1页
第1页 / 共10页
一主多从设计.docx_第2页
第2页 / 共10页
一主多从设计.docx_第3页
第3页 / 共10页
一主多从设计.docx_第4页
第4页 / 共10页
一主多从设计.docx_第5页
第5页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《一主多从设计.docx》由会员分享,可在线阅读,更多相关《一主多从设计.docx(10页珍藏版)》请在三一办公上搜索。

1、梁晨 3116301095用51单片机实现一主多从一、多机通信原理在多机通信中,每台从机均分配有一个从机地址,主机与从机之间进行串行通信时,通 常是主机先呼叫某从机地址,唤醒被叫从机后,主、从两机之间进行数据交换。而未被呼叫 的从机则继续进行各自的工作。可是,如果在主机与某被呼叫从机进行数据交换过程中,其 他从机如果不采取相应的数据识别技术,则这些从机就会因为串行通信线上有数据传输而时 时被打断,影响正常的工作。利用单片机的串口工作方式2、方式3可以很好解决上述问题。 它们的通信方式之一如图1所示。图1多机通信结构图在多机通信过程中,从机首先要解决的是如何识别主机发送的是地址信息还是数据信 息

2、。当发送的是地址信息时,各从机都响应串口中断,接收主机下发的一帧地址数据。而当 主机发送数据帧时,无关从机可不响应串口中断。解决的方法是:当主机发送一帧地址信息 时,应保持这帧数据的第9位为1(即TB8=1)。从机按照工作方式2或工作方式3运行时, 将串口寄存器SCON中的控制位SM2置为1,当所接收的一帧数据的第9位为1,所有从机 都产生串口中断,接收这一帧地址数据并与各自的从机地址进行比较,以判断主机是否要与 本机通信。接收到的地址数据与从机地址相等达到为被呼叫从机,该从机将串口控制寄存器 SCON中的控制位SM2清为0,去接收主机发送来的数据帧(数据帧的第9位为0),此时 不管接收到的第

3、9位数据是否为1或0,都要产生串口中断,这就保证了主机与被呼叫从机 间的正常数据通信。数据通信结束后,该从机又重新将串行口控制寄存器SCON中的控制位 SM2置为1,为下一次与主机进行通信做好准备。其他从机则一直在SM2=1下继续自己的 工作,不会因为主、从机之间的数据通信而被打断。多机通信的实现,主要靠主、从机正确地设置与判断多机通信控制位SM2和发送或接 收的第9位数据(TB8或RB8)。当主机给从机发送信息时,要根据发送信息的性质来设置 TB8,发送地址信号时,设置TB8=1;发送数据或命令时,设置TB8=0。当从机的SM2为1 时,该从机只接收地址帧(RB8位为1),对数据帧(RB8位

4、为0)将不予理睬。而当SM2 为0时,该从机接收所有发送来的信息。多机通信过程如下:(1)使所有从机的SM2置1,处于只接收地址帧的状态(即从机复位);(2)主机发送一地址帧信息,其中包含8位地址,第9位为地址/数据标志位,第9位置1 表示发送的是地址;(3)从机接收到地址帧后,各自中断CPU,把接收到的地址与本地址作比较;(4)地址相符的从机,使SM2清零以接收主机随后发来的所有信息,对于地址不相符的 从机,仍保持SM2=1状态,对主机随后发送的数据不予理睬,直到主机发送来新的地址帧;(5)主机发送数据或控制信息给被寻址的从机;(6)被寻址的从机,因SM2=0,可以接收主机发送过来的所有数据

5、,当从机接收数据结束 时,置位SM2,返回接收地址帧状态(复位状态);(7)当主机改为与另外从机联系时,可再发地址帧寻址其从机,而先前被寻址过的从机恢 复 SM2=1。二、设计思路单片机构成的多机系统常采用总线型主从式结构,即在多个单片机中,有一个是主机, 其余的都是从机,从机要服从主机的调度、支配。目前广泛使用的串行扩展总线与串行扩展 接口主要有I2C总线、SPI串行口,CAN总线、USB总线,本设计使用I2C总线协议。I2C总线由两根线实现串行同步通信,其中一根是时钟线SCL,一根是数据线SDA。FC 总线一主多从系统配置原理如图1所示。I2C总线协议有明确的规定:采用7位的寻址字节(寻址

6、字节是起始信号后的第一个字 节)。D7D1位组成从机的地址。D0位是数据传送方向位,为0时表示主机向从机写数据, 为1时表示主机由从机读数据。再使用MAX487组成RS-485通信网络,RS-485采用平衡发送和差分接受方式来实现通 信:在发送端TXD将串行口的TTL电平信号转换成差分信号A、B两路输出,经传输后在接 收端将差分信号还原成TTL电平信号。MAX487引脚如图2所示。图2 MAX487引脚图采用半双工方式进行通讯,在半双工方式下,允许双方向传输,但它们之间只有一个通 信回路,接收和发送不能同时进行,只能分时发送和接收,即甲机发送乙机接收,或者乙机 发送甲机接收,因而两机之间只需要

7、一条数据线。此时甲机和乙机均称为收发器。三、通信协议通信时,为了处理方便,通信双方应制定相应的协议。本文中主、从机串行口都设为方 式3,波特率为1200bps,PCON中的SMOD位都取0,设f为12MHz,定时/计数器T1的 方式控制字为20H,初值为E6H,主机的SM2位设为0,从机的SM2开始设为1,从机地址 从 00H-FEH。主机发送的控制命令:00H:要求从机接收数据(TB8=0)01H:要求从机发送数据(TB8=)FFH:命令所有从机的SM2位置1,准备接收主机送来的地址(TB8=1)从机发给主机状态格式如图3所示:D7D6D5D4D3D2D1D0ERRTRDYRRDY图3状态字

8、格式其中:ERR=1,表示从机接收到非法命令TRDY=1,表示从机发送准备就绪RRDY=1,表示从机接收准备就绪。四、用proteus绘制电路原理图此电路图仅画出两个从机,不同从机仅仅是本机号不同,具体电路原理图如图4所示。图4 一主多从电路原理图五、用proteus自带的编辑器编写程序主机、00H从机,01H从机程序依次如图5、6、7。图5主机程序迎 Source Editor -从OOHFile Edit View | Window Help图6 00H从机程序图7 01H从机程序五、模拟仿真通过仿真,验证程序正确无误。六、不足与改进我的这个方案,不能直观的看出数据的接收与传送,如果能加入

9、显示的元器件及程序就 更好了。七、程序主机的通信程序MOV TH1,#0E6HSETB TR1MOV SP,#4FHMOV R2,#01HMOV R3,#00HMOV R4,#10HMOV R0,#20HLCALL MASTERMOV R2,#02HMOV R3,#01HMOV R4,#10HMOV R1,#10HLCALL MASTERLOOP: SJMP LOOPMASTER: MOV SCON,#0D8HMASTER1: MOV A,R2MOV SBUF,AJNB RI,$CLR RIMOV A,SBUFXRL A,R2JZ MASTERSMASTER2: MOV SBUF,#0FFHS

10、ETB TB8SJMP MASTER1MASTERS: CLR TB8MOV SBUF,R3JNB RI,$CLR RIMOV A,SBUFJNB ACC.7,MASTER4SJMP MASTER2MASTER4: CJNE R3,#00H,MASTER5JNB ACC.0,MASTER2CLR TIMST_TX: MOV SBUF,R0JNB TI,$CLR TIINC R0DJNZ R4,MST_TXRETMASTER5: JNB ACC.1,MASTER2MST_RX: JNB RI,MST_RXCLR RIMOV A,SBUFMOV R0,AINC R1DJNZ R4,MST_RXRE

11、TEND从机的通信程序,不同的从机,只需修改B的值。MOV TMOD,#20HMOV TL1,#0E6HMOV TH1,#0E6HMOV B,00HSETB TR1MOV SP,#4FHSETB PSW.3MOV R1,#10HMOV R2,#10HSETB F0SETB PSW.1SETB ESSETB EASJMP $SSIO: CLR RICLR EAPUSH ACCPUSH PSWSETB RS0CLR RS1MOV A,SBUFXRL A,BJZ SSIO1RETUNR: POP PSWPOP ACCRETISSIO1: CLR SM2MOV SBUF,BJNB RI,$CLR RI

12、JNB RB8,SSIO2SETB SM2SJMP RETUNRSSIO2: MOV A,SBUFCJNE A,#02,LOOPLOOP: JC SSIO3SJMP RETUNRSSIO3: JZ CMD0CMD1: JB F0,SSIO4MOV SBUF,#00HSJMP RETUNRSSIO4: CLR TIMOV SBUF,#02CLR F0LOOP1: JNB TI,LOOP1CLR TIMOV SBUF,R1INC R1DJNZ R2,LOOP1SETB SM2SJMP RETUNRCMD0: JB PSW.1,SSIO5MOV SBUF,#00HSJMP RETUNRSSIO5: MOV SBUF,#01HCLR PSW.1LOOP2: JNB RI,LOOP2CLR RIMOV R0,SBUFINC R0DJNZ R2,LOOP2SETB SM2SJMP RETUNREND

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号