毕业设计MSC51单片机典型双机与多机通信

上传人:仙*** 文档编号:29344638 上传时间:2021-10-07 格式:DOC 页数:29 大小:690.51KB
收藏 版权申诉 举报 下载
毕业设计MSC51单片机典型双机与多机通信_第1页
第1页 / 共29页
毕业设计MSC51单片机典型双机与多机通信_第2页
第2页 / 共29页
毕业设计MSC51单片机典型双机与多机通信_第3页
第3页 / 共29页
资源描述:

《毕业设计MSC51单片机典型双机与多机通信》由会员分享,可在线阅读,更多相关《毕业设计MSC51单片机典型双机与多机通信(29页珍藏版)》请在装配图网上搜索。

1、毕业设计(论文)题 目:MSC-51单片机典型双机与多机通信专 业: 应用电子技术 班级: 学 号: 姓 名: 指导老师: 论 文 摘 要本论文论述了MCS-51单片机典型双机与多机通信设计。在文中通过对单片机串口结构,串口的工作原理,串口工作方式,串口通信的详细讲解,掌握了串行接口通信的知识,从而能更好的设计出实现双机与多机通信的硬件与软件。该论文中双机与多机通信设计用的串口通信方式为半双工方式,即双方都具有发送和接收能力.但同一时刻只有一方发送一方接收。本论文介绍的是一个主机与三个从机的通信,在实现多机通信时主机向三个从机发送各自的从机号与数据,而在实现双机通信时,则是从机向主机发送从机自

2、己的从机号码。 关键词:MCS-51单片机 串口通信 双机与多机通信 AbstractThis graduation thesis discussed the typical of dual machine and multi-machine communication of MCS-51 Microcontroller. In the article, when explaining the structure of Serial Port, the theory of Serial Ports Works, the manner of Serial Port Working and Ser

3、ial Port communication, I acquired the basic knowledge of Serial Port communication. Thus I could design out the hardware and software that were able to realize dual machine and multi-machine communication function. In this thesis the design of dual machine and multi-machine communications method of

4、 Serial Port communication was half-duplex communication, which all had the abilities to send and receive data. But at the same time only one sent and other received. My thesis introduced the Serial Port communication that was one host computer and three dependent machines, when multi-machine commun

5、ication worked that sent the own number of slave and data to three dependent machines, while dual machine communication worked that sent its own number to host computer. Keywords: MCS-51 Microcontroller Serial Port Communication dual machine and multi-machine communication 目 录第一章 概述11.1 并行通信和串行通信11.

6、2 串口通信的数据传送方向11.3 同步通信和异步通信11.3.1同步通信11.3.2异步同信2第二章 单片机的串口工作原理32.1 串口结构32.2 串口工作寄存器32.2.1串口控制寄存器SCON32.2.2电源控制寄存器PCON5第三章 串口工作方式63.1工作方式063.1.1串行输出63.2 工作方式173.2.1方式1输出83.2.2 方式1输入83.2.3 方式1波特率83.3 工作方式2和方式393.3.1数据帧格式93.3.2 方式2和方式3输出93.3.3 方式2和方式3输入103.3.4 方式2和方式3波特率10第四章 双机通信114.1 中断方式的双机通信11第五章 多

7、机通信135.1 多机通信原理135.2多机以及双机通信程序设计145.2.1主机通信主程序设计145.2.2 从机通信程序设计15结 语23致 谢24参考文献25附 录 芯片89C51的介绍26 第一章 概述1.1 并行通信和串行通信 在实际工作中,计算机的CPU与外设之间需要进行信息交流,计算机与计算机之间也要进行数据交换,所有这些信息交换均可称为通信。通信的方式有两种,即并行通信和串行通信。8031单片机具有并行和串行通信两种基本通信方式。并行通信是指数据各位同时传送的方式。其优点是传送速度快,缺点是传输信号线的根数和数据的位数相同,传送成本高,因此并行通信通常用于近距离通信。例如,单片

8、机与打印机之间的数据传送常采用并行通信。 串行通信是指数据一位一位按顺序传送的方式。它的突出优点是只需一对传送线进行数据传送,这样传送成本低,特别适用于远距离通信,其缺点是传送速度低。串行通信是一种较常用的通信方式,单片机与系统机之间的数据通信常采用串行通信。1.2 串口通信的数据传送方向 串行通信通常有三种数据传送方向:第一种为单工(或单向)方式,只允许数据向一个方向传送;第二种为半双工(或交替双向)方式,收发交替进行,同一时刻只能收或发:第三种是全双工(或全双向)方式,可同时进行双向数据传送,它要求两端的通信设备都要具备完整和独立的发送,接受能力。1.3 同步通信和异步通信1.3.1同步通

9、信 同步通信方式是指在发送设备的时钟频率与接收设备的频率一致的条件下发送设备先发出一个同步码,随之自动发送一组数据的方式。如下图,因此同步通信方式属于一种连续传送数据方式,适用于大批量数据传送,其特点是传送速率高,但要求收、双方的时钟保持严格的同步。同步码数 据 数据 数据 要保证相距很远的收发双方的时钟频率严格一致实现起来较为困难,因此同步通信方式的硬件复杂,造价高。所以目前使用较多的异步通信。1.3.2异步同信 异步通信方式的数据是一帧一帧传送的,数据帧格式如下图所示:空闲起 始 位58个数据位效验位停止位该图为异位数据帧格式每一帧数据由一个起始位,5 8个数据,一个奇偶校验位(可省略),

10、1 2个停止位组成。线路在不传送数据时保持“1”,起始位为“0”,用来通知接受设备一个待机的数据帧开始。奇偶校验位由发送设备根据本帧数据是奇数“1”,还是偶数“1”,来确定。当接收设备收到数据后,根据此位进行校验,以判断接收到的数据是否正确。停止位为高电平表示一帧数据的结束,若停止位后不接着传送下一个数据则线路保持为“1”。 由于异步通信方式的数据是一帧一帧发送的,接收端一旦接收完一帧数据,马上恢复对起始位的搜索,原有的误差积累全部消除,所以对收发双方的时候要求不高,只要双方的时钟误差较小,就可保证正确地接收异步数据,硬件价格较同步通信便宜,但传送速率较慢。1.3.3波特率波特率,即串行数据传

11、送速率,表示每秒传送的二进制位数,它的单位是bps.若发送一位二进制信号时间为t,则波特率为1/t。在串口通信时,接收和发送双方的波特率必须保持一致,才能正常工作。异步通信的传送速率为50-19200bps。 26第二章 单片机的串口工作原理2.1 串口结构控制门发送控制门T1接收控制门移位寄存器发送缓冲器SUBF接受缓冲器SUBF波特率发生器1 单片机的串口主要有两个物理上独立的串行数据缓冲器SBUF(发送缓冲器、接收缓冲器)、发送控制器、输入移位寄存器和输出控制门组成,如下图所示为MCS-51串口组成结构示意图。发送数据时,CPU将数据送入发送缓冲器SUBF,在发送控制器下,将数据一位一位

12、通过TXD(P3.1)引脚发送出去;接收时,外面的数据通过RXD (P3.0)引脚,在接受控制器的控制下,一位一位地移入移位寄存器,待接收完一个完整的字节后,就将该字节装入接受缓冲器SUBF,由CPU通过读SUBF取走。其中发送缓冲器只能写入,不能读出;接受缓冲器只能读出,不能写入,所以两个缓冲器共用一个地址99(SUBF).该串口有四种工作方式,其工作方式和传送波特率可通过特殊功能寄存器SCON,PCON进行设置。2.2 串口工作寄存器2.2.1串口控制寄存器SCON SCON(复位清0,可位寻址)主要用于设定串口的工作方式,接受和发送控制以及状态标志。其格式如下。SCON SM0SM1SM

13、2RENTB8RB8TI RI(98H)(1)SM0、SM1工作方式控制位(复位时清0,可位寻址)。 SMO SM1 方式 说明 波特率 0 0 0 8位同步移位寄存器 fosc/12 0 1 1 10位异步收发 由定时器1设置 1 0 2 11位异步收发 fosc/32或fosc/64 1 1 3 11位异步收发 由定时器1设置 其中,10位、11位是指异步通信中的数据帧格式。10位数据帧格式为:1位起始位,8位数据位,1位停止位。11位数据帧格式为:1位起始位,8位数据位,1位可编程位(奇偶校验),1位停止位,如下图。空闲起 始 位8个数据位可编程位停止位该图为11位数据帧格式(2)REN

14、允许接受控制位。 可由软件置1或清0. REN=1 允许接收 REN=0 禁止接收 (3)TB8方式2、3中,准备发送的可编程位(第九位),可软件清0或1. 此位可作为数据的奇偶校验位,也可作位多机通信的数据帧(TB8=0)和地址帧(TB8=1)的标志位,以区别发送的是数据还是地址。 (4)RB8方式2、3接收到的可编程位(第九位). (5)TI发送中断标志。 8位数据发送完,开始发送停止位时,由硬件置TI=1,向CPU申请中断。 【注意】CPU响应中断后不能自动清TI=0,必须用软件清0.启动发送条件:当TI=0时,由写SUBF的指令(例如:MOV SUBF,A)启动。 (6)RI接受中断标

15、志(即接受缓冲器满标志). 8位接收完,开始接收停止位时,由硬件置RI=1. 【注意】CPU响应中断后不能自动清0 ,必须用软件清0.启动接受条件:允许接收REN=1,且RI=0时启动。 (7)SM2多机通信控制位。 单片机用于多机通信时,设置SM2=0.当串口工作方式2、3的多机通信软1或清0,来控制多机通信。 0,无论RB8=1或RB8=0,均可申请中断SM2= 1 接收到的可编程位为1,即RB8=1,可申请中断 接收到的可编程位为0,即RB8=0,不能申请中断 2.2.2电源控制寄存器PCONPCON(复位时SMOD清0,可位寻址)中的最高位SMOD与串口工作有关。SMODPCON (8

16、7H)SMOD 波特率选择位,在方式13时有效。 1,波特率加倍SMOD= 0,波特率不加倍第三章 串口工作方式3.1工作方式0 方式0为8位同步移位寄存器输入/输出方式,其波特率固定为fosc/12。此时通过串口输入/输出的8位串行数据没有起始位和停止位。此方式不用于串行通信,而常与外部的移位寄存器相组合,用于扩张并行I/O口。方式0的RXD(P3,.0)作为串行数据的输入/输出端 ,TXD(P3.1)作为外接器件的同步时钟信号。 3.1.1串行输出采用串口扩展并行输出口如下图(a)所示,74ls164为串入并行口的接口芯片。串行数据输出时,在TI=0的条件下,由一条以SUBF为目的地址的指

17、令(MOV SUBF,A)启动发送。在发送过程中,通过RXD端,将发送缓冲器SUBF中的8位数据由低到高顺序发送出去,同时由TXD端输出移位脉冲。当一个字节发送完毕,串行口自动停止发送数据和一位脉冲,并置于TI=1申请中断。RXDTXD8031AB 74LS164CK RXDTXD8031Qu 74LS164CKD7D0D7D0(a)并行输出(b)并行输入用74LS164和74LS165扩展I/O口【注意】若要再次发送数据,必须用软件将TI清0.3.1.2串行输入 用串口扩展的并行输入口如(b)图所示,74ls165为并入串出芯片。串行数据输入时,由允许接收位REN=1和RI=0启动接收。在接

18、收过程中,TXD端输出移位时钟脉冲,控制外设将8位数据通过RXD端按位移入串口的输入移位寄存器,再存入SUBF接收缓冲器中。当串行口控制电路检测到最后一次移位结束后,置RI=1申请中断。CPU可在中断程序中将SUBF中的数据读入。若要再次启动接收,必须用软件清RI=0。3.1.3 方式0举例 利用MCS-51串口的方式0,即8位移位寄存器,外接一个串入并出的芯片,可扩展一个并行输出口;若外接一个并行串出的芯片,则可扩展一个并行输入口。此方法扩展的并行接口不占用片外RAM的地址,且硬件接口简单。1)扩展并行输入口 采用两片74LS165扩展16位并行输入口,接口电路如下图所示。其中SIN为串行输

19、入端,QH为串行输出端,CK为时钟端,CK的上升沿使数据移位,CLK为时钟禁止端,CLK=1时钟禁止,CLK=0时钟有效,S/L为移位/置入端,S/L=0时,并行数据置入各位寄存器,S/L=1时,数据锁存,允许串行移位。 例:从扩展的输入口读入10组数据,存入片内RAM 40H开始的单元。 程序如下: MOV R7,#0AH ;10组数 MOV R0,#40H ;片内RAM指针RCVO: CLR P1.0 ;并行数据置入 SETB P1.0 ;允许串行移位 MOV R2,#02H ;每组两个字节RCV1: MOV SCON,#10H ;SM0 SM1=00,方式0由REN=1,RI=1启动接受

20、。WAIT: JNB RI,WAIT ;等待8位接收完毕 MOV A,SUBF ;取输入数据 MOV R0,A ;送片内RAM INC R0 DJNZ R2,RCV1 ;2个字节(16位)未输入完,转RCV1。 DJNZ R7,RCV0 ;10组数未输入完,转RCV0。 SJMP $ D7D0D7D0RXD8031P1.0 TXD QH 74LS165 CLK S/L CKQH SIN 74LS165 CLK S/L CKS/L 利用74LS165扩展并行输入口3.2 工作方式1串行口工作方式1时,为一个8位的异步通信口,传送的帧数据的格式为:8位数据位,一位起始位和一位停止位,如下图所示。此

21、时的TXD端为发送端,RXD为接受端。传输的波特率可变,由定时器T1溢出率确定。空闲8个数据位起始位 停止位 上图为方式1数据帧格式3.2.1方式1输出 方式1的发送是在发送中断标志TI为0时,由一条写发送缓冲器指令启动。发送时,串口在SUBF中的数据前自动插入一个起始“0”,然后逐发送出去,8位发送完后,最后发送停止位“1“,。在开始发送停止位时,置TI=1,向CPU发中断申请,通知CPU当前数据发送完毕。 【注意】CPU响应中断后,不能自动清TI=0,而在发送第二个数据时,TI必须为0,所以在程序中应注意用软件清TI=0.发送程序段如下。 MOV SCON,#40H ;串口工作方式1,TI

22、=0 MOV R0,#30H MOV A,R0 MOV SUBF,A ;发送数据WAIT: JNB TI,WAT ;未发送完,等待 CLR TI ;清TI=0 INC R0 3.2.2 方式1输入 方式1的接收是在SCON寄存器中的REN=1,同时RI=0时启动,从检测起始位开始,无信号时RXD端为“1“,当检测RXD到由“1”到 “0”的变化时,即接收到一个数据起始位,则开始自动接收数据。当开始接收停止位时,置RI=1向CPU申请中断,通知CPU从接受缓冲器SUBF中取数据。【注意】 CPU响应中断后,同样不能自动清RI=0,在程序中要用软件清RI=0,否则不能接受第二个数据。接收程序如下。

23、MOV SCON,#50H ;方式1,REN=1,RI=0启动接收MOV R0,#30H WAT: JNB RI,WAT ;未接收完,等待 CLR RI ;清RI=0 MOV A,SUBF ;取接收数据 MOV R0,A 3.2.3 方式1波特率方式1的波特率由定时器T1的溢出率的32分频或16分频决定,当PCON 中的SMOD=0,为32分频;SMOD=1,为16分频,波特率的计算机公式如下方式1的波特率=2SMOD/32*T1的溢出率T1用作波特率发生器时,通常工作于模式2定时(8位自动重装),禁止中断方式。由此可知 T1的溢出周期=28-(TH1初值)*12/fosc T1的溢出率=fo

24、sc/1228-(TH1)所以方式1的波特率=2SMOD/32*fosc/1228-(TH1)3.3 工作方式2和方式33.3.1数据帧格式 串口工作方式2和方式3与方式1一样,均为8位数据通信口,但方式2、方式3的数据帧格式为11位,即除了1位起始位,8位数据位,1位停止位外,还多了1位可编程的第9位,这一位既可作为奇偶校验位,也可在多机通信时作为地址帧和数据帧的标志位,如下图所示。空闲起始位8个数据位可编程位停止位该图为方式2和方式3的数据帧格式 3.3.2 方式2和方式3输出被自动地加在8位数据后面。 我们知道MCS-51单片机在执行某些指令如“MOV A, Ri”之后将影响状态寄存器P

25、SW中奇偶校验标志P的值:当累加器A中1的个数为奇数时,P=1,当累加器A中1的个数为偶数时,P=0.据此可对数据进行奇偶校验。 当可编程位作为奇偶校验位时,由发送方在发送时对数据进行奇偶校验,并将发送方的SCON中 TB8设置为相应的“1”(奇)或“0”(偶),与8位数据一起发送出去。发送程序段如下: ;串口串口 初始化CLR TI ;清TI=0MOV A,R0 ;取数据MOV C, P ;奇偶标志位发送TB8MOV TB8,C ;奇偶位发送TB8MOV SUBF, A ;发送数据和TB83.3.3 方式2和方式3输入接收时,接收设备自动将可编程位取入接收方的RB8中,接收方接收到数据后再对

26、数据进行一次奇偶校验,若校验的结果与收到RB8中一致,即校验结果为奇时,发送为奇(RB8=1);校校验结果为偶时,发送为偶(RB8=1),则接收正确,否则接收出错。接收程序段如下。 MOV A, SUBF ;取接收数据JB P,ONE ;P=1接收数据为奇,转ONEJB RB8,ERR ;P=0接收为偶,RB8=1原发送为奇,转出错LJMP RIG ;转正确ONE:JNB RB8,ERR ;P=1接收为奇,RB8=0发送为偶,转出错RIG: MOV R1,A ;P与RB8同奇、偶,接收正确,存放数据 INC R1 ;修改接收数据指针 ERR: 可见方式2和方式3与方式1最大区别在于,方式2和方

27、式3的数据帧中多了一位可编程位 ,此位可用于奇偶校验位或多机通信的标志位,因此方式2和方式3可工作于多机通信,而方式1只能工作于双机通信。3.3.4 方式2和方式3波特率 方式2和方式3的区别在于波特率的设置方式不同。方式2的波特率只有两种选择,而方式3的波特率的选择与方式1相同,可通过T1的溢出率来设置。它们的计算公式分别为方式2的波特率=2SMOD/64*fosc方式3的波特率=2SMOD/32*T1溢出率 =2SMOD/32*fosc/1228-(fosc/1228-TH1)第四章 双机通信4.1 中断方式的双机通信为实现全双工通信,即能同时发送和接收,就必须采用中断方式进行数据传送。下

28、面我们采用串口工作方式2编程实现双机通信。无论是发送一个完整数据,还是接收到一个数据,串口都向CPU申请中断;CPU在中断服务程序中,通过检测是RI=1还是TI=1来决定是发送中断还是接收中断,从而相应的发送操作或接收操作。程序思路如下:先在主程序中对串口进行初始化,设串口即可发送又允许接收,然后发送一个数据,其余的发送和接收操作在中断程序中实现。校验方法采用数据帧的均可编程作为奇偶校验位,若收到数据的奇偶性与发送数据奇偶性一致,则接收正确,否则出错。下面就是对本次毕业设计程序中主机所用到中断程序的分析。主机主程序: #include /加载51单片机的头文件 #define unsigned

29、 char /宏定义 void shuju(uchar bj ,uchar s ); uchar rt; uchar tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ; /共阴极数码管段代码 sbit c1=P11; /从机1的控制开关 sbit c2=P12; /从机2的控制开关 sbit c3=P13; /从机3的控制开关/-/- void main() TMOD=0x20; /启用定时器1作为波特率发生器 (采用12M晶振) TH1=0xe6;/定义初始值使波特率为 1.2kbps; TL1=0xe6; SCON=0xd8;/串

30、口初始化 PCON=0x00; /波特率不加倍 TR1=1; /启动定时 P1=0xff; /使P1口作为输入口 P2=0x79; /E的七段码是79HEA=1; / CPU开放中断ES=0; /禁止串口中断 while(1) if(c1=0) /从机1发送数据控制开关 Shuju(0x10,0x09); else if(c2=0) /从机2发送数据控制开关 shuju(0x02,0x03); else if(c3=0) /从机3发送数据控制开关 shuju(0x03 , 0x07); /*主机中断程序*/ void in( )interrupt 4 rt=SBUF; /串行数据缓冲器SUBF

31、中的数据赋值给rt while(RI=0) /接收中断标志;RI=0; /用软件清零rt =_cror_(rt,4)P2=tabrt;ES=0; 从机中断程序: void chuanxing()interrupt 4 / 串口中断程序 ch=SUBF; Dushu( ); If((ch&0xf0)=bj ) P2=tabch&0x0f; ES=0; F=1;/显示接收数据 /*从机的数据处理程序*/ void dushu() while(!RI) /RI为接收中断标志 ; RI=0; 程序中的F为PSW中的用户标志,这里定义为接收出错标志。 第五章 多机通信 以上介绍的均为双机通信,串口控制寄

32、存器SCON中的多机通信控制位SM2均设为0。根据前面对MCS-51单片机串口介绍,我们知道串口工作于和方式3时,通过对SM2的设置,可实现多机通信。下图为主从分布式多机通信的系统结构,主机可指定同任何一台从机进行双向数据通信,各从机通过主机也能间接地实现数据交换。此处主机和从机均用8031单片机组成在实际应用中,主机也可由PC机担任,从而组成一个两极分布式的控制系统。 TXD RXD 主 机8031 TXD RXD1# 8031 TXD RXD0# 8031 通信原理 该图为 主从式多机通信 5.1 多机通信原理根据前面的叙述,当串口工作于方式2和方式3时,数据帧的第九位为可编程位,发送时此

33、位可通过发送端的TB8进行设置,接收时数据帧的第九位自动取入接收端的RB8.【注意】 多机通信时可利用可编程位来区别地址帧和数据帧,地址帧的第九位为1,数据帧的第九位为0.当SM0=0时,不管RB8(接收的第九位)为0还是1,接收端一律将接收到的数据装入SUBF,并置RI=1向CPU发中断申请,即SM2=0时,收到的无论是地址帧还是数据帧都接收,并向发送中断请求。当SM2=1时,串口的接收分两种情况:若收到的RB8为1时(地址帧),数据装入SUBF,置RI=1向CPU发中断申请;若收到的RB8为0(数据帧),则数据被丢弃,不置位RI,也不会申请中断。即SM2=1时,接收端选择性的只接收地址帧。

34、根据上述原理,主从分布式多机通信的工作过程可表述如下。(1)对从机编号,且从机的SM2均设为1,只允许接收地址帧。(2)主机发送一帧地址信息(代表从机编号)。其中,第九位TB81,作为地址帧的标志。(3)所有的从机(处于SM2=1状态)同时接收地址。从机将收到的地址信息与各自的地址编号相比较:若编号不符,则保持SM2=1;若编号相同,则从机置SM2=0,准备接收数据帧。(4)主机发送数据(可位具体的命令和参数),同时置第九位TB8=0,作为数据帧的标志。(5)主机发送的数据帧只有指定的编号的从机(即SM2=0的从机)可以接收到,而非通信对象的从机由于保持SM2=1,而不能接收数据帧。这样就保证

35、了主机与指定从机实现的一对一的数据通信,而其余的从机则保持等待呼叫状态。5.2多机以及双机通信程序设计下面是本论文的多机通信程序设计。该程序实现的是一台主机和三台从机通信,要求主机与从机的通信任务由主机来决定,若主机向从机发出“接收”控制命令,则从机接收由主机发来的数据,若主机向从机发出“发送”控制命令,则从机向主机发送数据。5.2.1主机通信主程序设计主程序如下: #include /加载51单片机的头文件 #define unsigned char /宏定义 void shuju(uchar bj ,uchar s ); uchar rt; uchar tab=0x3f,0x06,0x5b

36、,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ; /共阴极数码管段代码 sbit c1=P11; /从机1的控制开关 sbit c2=P12; /从机2的控制开关 sbit c3=P13; /从机3的控制开关 void main() TMOD=0x20; /启用定时器1作为波特率发生器 (采用12M晶振) TH1=0xe6;/定义初始值使波特率为 1.2kbps; TL1=0xe6;/ SCON=0xd8;/串口初始化 PCON=0X00; /波特率不加倍 TR1=1; /启动定时 P1=0xff; /使P1口作为输入口 P2=0x79; /E的七段码是79HEA=1

37、; /CPU开放中断ES=0; /禁止串口中断 while(1) if(c1=0) /从机1发送数据控制开关 Shuju(0x10,0x09); else if(c2=0) /从机2发送数据控制开关 shuju(0x02,0x03); else if(c3=0) /从机3发送数据控制开关 shuju(0x03 , 0x07); /*中断程序服务*/ void in( )interrupt 4 rt=SBUF; while(RI=0) /接收中断标志;RI=0; /用软件清零P2=tabrt;ES=0; /*数据处理*/Void shuju(uchar bj, uchar s) SUBF=(bi

38、|s); While (TI=0) /数据是否发送完了? ;TI=0; / 清除发送标志 ES=1; 5.2.2 从机通信程序设计(1)从机1程序如下: #include #define uchar unsigned char Sbit b=P11;void dushu(); uchar bj=0x10,ch,f; /bj为本机机器码uchar tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x070x7f,0x6f ; /共阴极数码管段代码 /-void main() TMOD=0x20; TH1=0xe6; TL1=0xe6; SCON=0xd8; PCON

39、=0x00; F=0;/接收出错标志,即置0为接收到的数据有效 TR1=1; EA=1; /开启CPU中断 ES=1; /开启串口中断 while(1) if(f=1) SBUF=bj; While(TI=0) ES=1; TI=0; F=0; void chuanxing()interrupt 4 / 串口中断程序 ch=SUBF; Dushu( ); If((ch&0xf0)=bj ) P2=tabch&0x0f; ES=0; F=1;/显示接收数据 /- void dushu() while(!RI) /RI为接收中断标志 ; RI=0;(2)从机2通信程序如下: #include #d

40、efine uchar unsigned charvoid dushu(); uchar bj=0x02,ch,f; uchar tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /- void main() TMOD=0x20; TH1=0xe6; TL1=0xe6;/1.2k,12M,smod=0; SCON=0xd8; PCON=0x00; TR1=1; EA=1; ES=1; F=0; while(1) if(f=1) SBUF=bj; While(TI=0) ES=1; TI=0;F=0; /- void chuanxing

41、()interrupt 4 ch=SUBF; Dushu( ) If((ch&0xf0)=bj) P2=tabch&0x0f; ES=0; F=1; /- void dushu() while(!RI) ; RI=0;(3)从机3通信程序如下: #include #define uchar unsigned char /- void dushu(); uchar bj=0x30,ch,f;uchar tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ; void main() TMOD=0x20; TH1=0xe6; TL1=0xe6;

42、/1.2k,12M,smod=0; SCON=0xd8; PCON=0x00; TR1=1; EA=1; ES=1; F=0; while(1) if(f=1) SBUF=bj; While(TI=0) ES=1; F=0; TI=0; /- void chuanxing()interrupt 4 ch=SUBF; Dushu( ); If((ch&0xf0)=bj ) P2=tabch&0x0f; ES=0; F=1; /显示接收数据 /- void dushu() while(!RI) ; RI=0;开始 N 主程序框图: 初始化从机1按键是否按下?Y从机2按键是否按下?YNY从机2按键是

43、否按下?数据处理函数N 中断入口主机中断程序框图:接收数据是否完毕?While循环Y关闭串口中断清除接收标志 显示数据右移4位 出 口 数据处理:主程序 入 口 数据发送 While循环发送完? Y清除TI0 打开串口中断从机1主程序:开 始 初始化出 口 接收数据是否为1? NYWhile循环清除TI0 清除数据位打开串口中断 是否等于本机号?发送本机号 接收数据从机1中断程序框图:入 口While循环是否完?YN出 口关闭串口中断置数据位为1显示接收数据Y是否等于本机号?以上为主机与从机1的程序框图,由于从机1,从机2还有从机3 的程序一样,则就只需画出从机1 程序框图即可。下面为多机以及

44、双机通信的硬件连接图: 双机与多机通信连接图如下: 结 语通过这次毕业设计学会了很多东西,具体如下几点:(1)学习到了串行通信的基础知识,清楚地知道MCS-51的串口结构。(2)理解学习到单片机串口四种工作方式的特点,还有半双工串口通信的基本原理。(3)掌握到中断方式的双机通信以及主从式的多机通信的程序设计。 致 谢 在这次毕业设计中,真诚地感谢*老师的认真,细心的指导,提出我的不足之处,以便我及时修改,直到做到很好。还要感谢同组的同学的合作,一起努力把毕业设计程序与硬件图设计出来。没有你们的帮助我无法把毕业设计做出来,还做得这样好。至此敬礼! 参考文献1曾一江,李寿强,刘虹.单片微机原理与接

45、口技术.北京:科学出版社,20062张毅刚,彭喜元.单片机原理与应用设计.北京:电子工业出版社,2008 附 录 芯片89C51的介绍芯片AT89C51介绍如下:根据连接图可知,P1口接的是开关,即在这里P1口作为输入口。P2口接的是数码管,在这里P2口作为地址输出线使用,P2口可以输出外存储器的高8位地址与P0口输出的低8位地址一起构成16位地址线,可以寻址64KB的地址空间。当P2口作为高8位地址输出口时,输出锁存器的内容保持不变。在发送数据时,CPU将数据送入缓冲器SUBF,在发送控制器的控制下,将数据一位一位通过AT89C51的P3.1(TXD)引脚发送出去;接收时,外面的数据通过P3.0(RXD)引脚,在接受控制器的控制下,一位一位移入移位寄存器,待接收完一个完整的字节后,将该字节装入接收缓冲器SUBF,由CPU通过读SUBF取走。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!