单片机原理及应用——C语言程序设计与实现 教学课件 PPT 作者 马斌 韩忠华 王长涛 夏兴华 第9章51单片机串行通信

上传人:E**** 文档编号:89366535 上传时间:2019-05-24 格式:PPT 页数:67 大小:1.98MB
返回 下载 相关 举报
单片机原理及应用——C语言程序设计与实现 教学课件 PPT 作者 马斌 韩忠华 王长涛 夏兴华 第9章51单片机串行通信 _第1页
第1页 / 共67页
单片机原理及应用——C语言程序设计与实现 教学课件 PPT 作者 马斌 韩忠华 王长涛 夏兴华 第9章51单片机串行通信 _第2页
第2页 / 共67页
单片机原理及应用——C语言程序设计与实现 教学课件 PPT 作者 马斌 韩忠华 王长涛 夏兴华 第9章51单片机串行通信 _第3页
第3页 / 共67页
单片机原理及应用——C语言程序设计与实现 教学课件 PPT 作者 马斌 韩忠华 王长涛 夏兴华 第9章51单片机串行通信 _第4页
第4页 / 共67页
单片机原理及应用——C语言程序设计与实现 教学课件 PPT 作者 马斌 韩忠华 王长涛 夏兴华 第9章51单片机串行通信 _第5页
第5页 / 共67页
点击查看更多>>
资源描述

《单片机原理及应用——C语言程序设计与实现 教学课件 PPT 作者 马斌 韩忠华 王长涛 夏兴华 第9章51单片机串行通信 》由会员分享,可在线阅读,更多相关《单片机原理及应用——C语言程序设计与实现 教学课件 PPT 作者 马斌 韩忠华 王长涛 夏兴华 第9章51单片机串行通信 (67页珍藏版)》请在金锄头文库上搜索。

1、第9章 51单片机串行通信,9.1 单片机机间串行通信设计 9.1.1 常用接口芯片结构和工作原理 9.1.2 单片机机间串行通信电路设计 9.1.3 单片机机间串行通信软件编程 *9.2 W环境下PC机与单片机串行通程序设计 9.2.1 W串行类介绍 9.2.2 PC机与下位机通信协议 9.2.3 PC机的串行通信程序的设计 9.2.4 单片机串行通信程序的设计,第9章 51单片机串行通信,第9章 51单片机串行通信,9.1 单片机机间串行通信设计 单片机机间串行通信用于双机冗余控制单片机与单片机之间交换信息。MCS-51单片机本身具有串行接口,为机间通信提供了极为便利的条件。 单片机串行通

2、信有异步通信和同步通信两种基本通信方式。串行通信按传输方向又分为单工、半双工、全双工通信。 单片机串行口输出的是TTL电平,要想实现串行通讯,常将其转换成常用的串行通信总线标准接口电平,常用的串行通信由两种RS-232串行通信和RS-485串行通信。,第9章 51单片机串行通信,第9章 51单片机串行通信,9.1.1 常用接口芯片结构和工作原理 单片机机间串行通信常用MAX232芯片和MAX485芯片,分别介绍如下: 一、MAX232芯片介绍 MAX232芯片是MAXIM公司生产的、两路接收器和驱动器的IC芯片,适用于各种EIA-232C和V.28/V.24的通信接口。 MAX232芯片内部有

3、一个电源电压变换器,可以把输入的+5V电源电压变换成RS-232C输出电平所需的10V电压。所以,采用此芯片接口的串行通信系统只需+5V的电源就可以了,硬件接口简单,所以被广泛使用。,第9章 51单片机串行通信,MAX232芯片的典型工作电路,第9章 51单片机串行通信,二、RS-232-C标准 RS-232-C是一种串行通信总线标准,是数据终端设备(DTE)和数据通信设备(DCE)之间的接口标准。一个完整的RS-232-C接口有22根线,采用一种标准的“”型保护壳的25针插头座,或采用有根引脚用一个九芯连接器连接。 基本的数据传送引脚包括RXD、TXD、SG;Modem的控制和引脚状态包括D

4、TR、RTS、DSR、CTS、DCD和RI。 其中DTR和RTS是计算机通过RS-232-C接口送给Modem的控制引脚;DSR、CTS、DCD和RI是Modem通过RS-232-C接口送给计算机的状态信息引脚。,第9章 51单片机串行通信,三、MAX485芯片介绍 Maxim公司提供了一系列的电平转换芯片。其中,不仅有TTL电平到RS-232电平的转换芯片,还有RS-485和TTL电平之间的转换芯片MAX485。 MAX485芯片管脚及内部结构 : RO:接收其输出端。 DI:驱动器输入端。 DE:驱动器输入使能端。 Vcc:电源正极4.755.25V。 GND:接地 B:反相接收器输入和反

5、相驱动器输出。 A:同相接收器输入和同相驱动器输出。,第9章 51单片机串行通信,收、发时序,第9章 51单片机串行通信,四、RS-485接口标准 RS-485是一种基于差分信号传送的串行通信链路层协议。它解决了RS-232协议传输距离太近的缺陷,是工业上广泛采用的较长距离数据通信链路层协议。 RS-485支持半双工或全双工模式网络拓扑,一般采用终端匹配的总线型结构。 RS-485接口采用差分方式传输信号,只需要检测两线之间的电位差就可以。,第9章 51单片机串行通信,9.1.2 单片机机间串行通信电路设计 一、点对点通信 MCS-51单片机一般采用RS-232C标准进行点对点的通信连接。如果

6、采用单片机自身的TTL电平直接传输信息,其传输距离较近,一般不超过1.5m,因此常采用MAX232芯片进行电平转换。硬件电路如下。,第9章 51单片机串行通信,二、多机通信 单片机多机系统中常采用的总线型主从式多机系统。所谓主从式,即在数个单片机中,有一个是主机,其余的为从机,从机要服从主机的调度、支配。在采用不同的通信标准通信时,还需进行相应的电平转换,也可以对传输信号进行光电隔离。在多机系统中,通常采用RS-422或RS-485串行标准总线进行数据传输。,第9章 51单片机串行通信,9.1.3 单片机机间串行通信软件编程 一、点对点通信程序设计,第9章 51单片机串行通信,点对点通信程序采

7、用C51语言编程如下: #include #define uchar unsigned char /发送接收差别值,TR=0发送 #define TR 1 char idata buf10; uchar pf; /-串口通信初始化- void init(void) TMOD=0x20; /设T/C1为定时方式2 TH1=0xe8; /设定波特率 TL1=0xe8; PCON=0x00; TR1=1; /启动T/C1 SCON=0x50; /串行口工作方式1 ,第9章 51单片机串行通信,void send(uchar idata *d) /-发送信息子程序- uchar i; do SBUF=

8、0xaa; /发送信息 while(TI=0); /等待发送出去 TI=0; while(TI=0) /等待B机回答 RI=0; while(SBUF0xbb)!=0); /B机未准备好,继续联络 do pf=0; /清校验和 for(i=0;i16;i+) SBUF=di; /发送一个数据 pf+=di; /求校验和 while(TI=0) TI=0; ,第9章 51单片机串行通信,SBUF=pf; /发校验和 while(TI=0); TI=0; while(RI=0); RI=0; /等待B机回答 while(SBUF!=0); /回答错误,则重发 /-接收信息子程序- void rec

9、eive(uchar idata *d) uchar i; do while(RI=0);RI=0; while (SBUF0xaa)!=0); /判定A机请求否 SBUF=0xbb; /发应答信号 while (1) ,第9章 51单片机串行通信,pf=0; for(i=0;i16;i+) /清校验和 while(RI=0);RI=0; di=SBUF; /接收一个数据 pf+=di; /求校验和 while(RI=0);RI=0; /接收A机校验和 if(SBUFpf)=0) SBUF=0x00;break; /校验和相同发00 else SBUF=0xff; /出错则发送FF,重新接收

10、while (TI=0);TI=0; ,第9章 51单片机串行通信,/-主函数- void main(void) /主程序 init(); if(TR=0) send(buf); /发信息 else receive(buf); /接收信息 ,第9章 51单片机串行通信,二、多机通信程序设计 主机程序流程图,第9章 51单片机串行通信,二、多机通信程序设计 多机通信的从机中断程序流程,第9章 51单片机串行通信,多机通信主机程序采用C51语言编程如下: #include #define uchar unsigned char #define SLAVE 0x02 /从机地址 #define BN

11、 16 uchar idata rbuf16; uchar idata tbuf16=“master transmit“; void err(void) SBUF=0xff; while(TI!=1);TI=0; uchar master(uchar addr,uchar command) uchar aa,i,p; while(1) SBUF=SLAVE; /发呼叫地址,第9章 51单片机串行通信,while(TI!=1);TI=0; while(RI!=1);RI=0; /等待从机回答 if(SBUF!=addr) err(); /若地址错,则发复位信号 else /地址相符 TB8=0;

12、 /清地址信号 SBUF=command; /发命令 while(TI!=1);TI=0; while(RI!=1);RI=0; aa=SBUF; /接收状态 if(aa /若命令未被接收,则发复位信号 else if(command=0x01) /是发送命令 if(aa&0x01)=0x01) /从机准备好接收 do,第9章 51单片机串行通信, p=0; /清校验和 for(i=0;iBN;i+) SBUF=tbufi; /发送一数据 p+=tbufi; while(TI!=1);TI=0; SBUF=p; /发送校验和 while(TI=0);TI=0; while(RI=0);RI=0; while(SBUF!=0); /接收不正确,重新发送 TB8=1; /置地址标志 return(0); else,第9章 51单片机串行通信, if(aa else,第9章 51单片机串行通信, SBUF=0xff; /校验和不同,发0FF,重新接收 while(TI=0);TI=0; TB8=1; /置地址标志 return(0); void main(void) /-主函数- TMOD=0x20; /T/C1定义为方式2 TL1=0xfd;TH1=0xfd; /置初值 PCON=0x00; TR1=1; SCON=0xf0; /串行口为方式3 master

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号