项目8单片机双机通信设计ppt课件.ppt
《项目8单片机双机通信设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《项目8单片机双机通信设计ppt课件.ppt(48页珍藏版)》请在三一办公上搜索。
1、项目8 单片机双机通信系统设计, 知识目标:1单片机串行通信基础知识; 2单片机与上位机通信基础知识3VB基础知识。 能力目标: 1. 能根据设计任务要求编制程序流程图; 2. 会绘制单片机双机通信电路原理图; 3. 会用keil C51软件对源程序进行编译调试及与protues软件联调,实现电路仿真。,任务1 单片机双机通信设计,单片机系统设计中,经常要使用串口进行外部通信,单片机与PC机通信是单片机功能模块使用中极为重要的一部分,应用也较广泛。本项目以两个任务来学习单片机通信方面的内容。,任务1 单片机双机通信设计,1.1 提出任务单片机甲向单片机乙发送“READY”字符串,然后等待接收。
2、如果接收到乙机发送的“OK”字符串,则蜂鸣器响,否则就不响。1.2 分析任务1. 硬件电路设计电路组成如图8-1所示。这里选择具有内部ROM的AT89S51单片机,如果PROTEUS软件中没有AT89S51单片机,就选用AT89c51单片机。两块单片机串口相接,即甲机的P3.0接乙机的P3.1, 甲机的P3.1接乙机的P3.0,也就是说甲机的发送端接乙机的接收端,甲机的接收端接乙机的发送端;甲机的P1.0接蜂鸣器。当甲机的P1.0管脚输出高电平时,蜂鸣器就响,输出低电平时,蜂鸣器不响。,任务1 单片机双机通信设计,图8-1 双机通信原理图(右边是甲机,左边是乙机),任务1 单片机双机通信设计,
3、使用查询方式,实现双机串口异步通信。所谓的查询方式,是指通过查看中断标志位RI和TI来接受和发送数据。在这种方式下,当串口发送完数据或接收到数据时,仅仅置位相应的标志位而不会以任何其它的形式通知主程序。主程序只能通过定时查询发现标志位的状态改变,从而作出响应的处理。注意,在查询方式中,标志位的位置由硬件完成,而标志位的清除需要软件进行处理。首先由甲机发送“READY”字符串,然后等待接收。如果接收到乙机发送的“OK”字符串,则蜂鸣器响,否则就不响。总程序流程图(甲机)如图8-2。,图8-2 甲机流程图,任务1 单片机双机通信设计,数据的接收和发送均使用查询方式。程序大致分为3个部分:初始化部分
4、、发送数据部分、接受数据部分。(1)系统初始化部分系统初始化部分应完成 如下方面的工作:关闭所有中断;设置串口工作模式;设置串口为接收允许状态;设置串行口通信波特率;其它数据初始化;,任务1 单片机双机通信设计,串口使用工作方式1,其波特率可以是软件设置的。波特率的设置是通过改变定时器T1的溢出率来控制。设定单片机为如下环境:单片机外接晶振频率为11.0592Hz;定时器T1工作在工作模式2,既自动装入初值8位定时器;波特率选择位SWOD置为1;设置通信波特率为9600bit/s;按照上述条件,定时器T1的初值N应设为: N=256 -(2smod晶振频率)/(波特率3212)=256 (21
5、11.0592106)/(96003212) = 250 =FAH,任务1 单片机双机通信设计,(2)发送数据部分在程序中,发送一个字节的过程如下:将数据传送至SBUF;检测TI位,如果数据传送完毕,则TI位被硬件置1,如果TI为0,则继续等待;TI=1,表示发送完成,此时需要将TI软件清0,然后继续发送下一个字符;程序中,使用 put_string()发送数据,当检测到“0”字符时,表示到达发送字符串结尾,停止数据发送。,任务1 单片机双机通信设计,(3)接收数据部分在程序中,接收一个字节的过程如下:检测RI位,如果接收到数据,则RI位被硬件置1,如果TI为0,则继续等待;RI=1,表示已接
6、收到一个字节,此时,可以将SBUF中的内容读入缓冲区;将RI软件清0,准备接收下一字节;程序中,使用 get_string()发送数据,当检测到“0”字符时,表示已接收到完整的字符串,函数返回。,任务1 单片机双机通信设计,#include#include#define _SEND_STRING_ “READY” /发送的字符串#define _RECV_STRING_ “OK” /接收的字符串#define _MAX_LEN_ 16 /数据最大长度void put_string(unsigned char *str); /串口发送字符串void get_string(unsigned cha
7、r *str); /串口接收字符串void Beep(); /蜂鸣表示成功接收到返回信号,/*-程序初始化部分-*/void main() char buf_MAX_LEN_;/*系统初始化*/TMOD = 0 x20; /定时器T1使用工作方式2TH1 =250; /设置初值TL1 = 250;TR1 = 1; /开始计时PCON = 0 x80; /SMOD = 1SCON = 0 x50; /工作方式1,波特率9600bit/s,允许接收EA = 0; /关闭全部中断strcpy(buf, _SEND_STRING_); /设置发送字符串,程序代码如下(甲机):,任务1 单片机双机通信设
8、计,/*-发送数据-*/put_string(buf);buf0 = 0; /清空缓冲区/*-接收数据-*/while(strcmp(buf, _RECV_STRING_)!=0) get_string(buf);beep();while(1); /反复循环,/*-子函数-*/*发送字符,参数str为待发送子符串*/void put_string(unsigned char *str) do SBUF = *str;while(!TI); /等待数据发送完毕TI=0; /清发送标志位str+; /发送下一数据while(*(str-1)=0); /发送至字符串结尾则停止,任务1 单片机双机通信
9、设计,/*接收字符串,参数str指向保存接收子符串缓冲区*/void get_string(unsigned char *str) unsigned char count = 0; *str = 0; /清缓冲区 do while(!RI); /等待数据接收*str = SBUF; /保存接收到的数据RI=0; /清接收标志位str+; /准备接收下一数据,count+;if(count _MAX_LEN_) /如果接收数据超过缓冲区范围,则只接收部分字符 *(str-1) = 0;break;while(*(str-1)=0); /接收至字符串结尾则停止,任务1 单片机双机通信设计, 思考题
10、 根据上面的甲机的程序,写出乙机的程序? 知识链接 1串行通信与并行通信在微型计算机中,通信(数据交换)有两种方式:并行通信和串行通信。并行通信是指计算机与I/O设备之间通过多条传输线交换数据,数据的各位同时进行传送。如图8-3所示。串行通信是指计算机与I/O设备之间仅通过一条传输线交换数据,数据的各位是按顺序依次一位接一位进行传送。如图8-4所示。,任务1 单片机双机通信设计,应该理解所谓的并行和串行,仅是指I/O接口与I/O设备之间数据交换(通信)是并行或串行。无论怎样CPU与I/O接口之间数据交换总是并行。,图8-3 并行通信 图8-4 串行通信,任务1 单片机双机通信设计,二者比较:串
11、行通信的数据传输速率相对较低,但通信距离长,可以从几米到几公里,因此串行适用于长距离而速度要求不高的场合。电脑上的9针座(人称串口)就是串行通信。并行通信的传输速率高,但传输距离短,一般不超过30米,而且成本高(要采用多条数据线)。电脑输出数据到打印机采用的就是并行通信。,任务1 单片机双机通信设计,2串行通信的分类与制式(1)串行通信的分类串行通信可以分为同步通信(Synchronous Communication)和异步通信(Asynchronous Communication)两类。在单片机中,主要使用异步通信方式。(2)串行通信制式根据信息的传送方向,串行通信可以进一步分为单工、半双工
12、和全双工三种。信息只能单向传送为单工;信息能双向传送但不能同时双向传送称为半双工;信息能够同时双向传送则称为全双工。如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输。如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工。,任务1 单片机双机通信设计,3同步通信与异步通信(1)同步通讯异步通信的概念同步和异步都属于串行数据传送方式,但二者的传送格式有所不同。同步方式的一帧内含有很多数据位,而异步方式一帧内只含有几个数据位。如果要传送一大堆数据,同步方式只给这串数据进行
13、一次外包装(即添加“头帧”、“尾帧”、“校验”帧),而异步方式在传送这串数据时则要对数据的每一个字节分别加以包装(即添加“头”位、“尾”位和校验)。 显然在相同的数据传输波特率下,同步方式比异步方式的传送速度快,但同步方式要求收发双方在整个事件传送过程中始终保持严格同步,这将增加硬件上的难度,而异步通信只要求每帧(字节)的传送中短时间保持同步即可,实现起来要容易得多。,任务1 单片机双机通信设计,(2)同步、异步数据通信格式同步、异步数据通信格式分别如图8-4、图8-5所示。,图8-4 同步传送的数据格式,图8-5 异步通信数据帧格式,任务1 单片机双机通信设计,4串行接口的结构(1)数据缓冲
14、寄存器SBUF两个SBUF,一个用于发送(只写);一个用于接收(只读)。映象地址均为99H,如图8-6所示。(2)数据发送与接收控制发送控制器在波特率作用下,将发送SBUF中的数据由并到串,一位位地传输到发送端口;接收控制器在波特率作用下,将接收接收端口的数据由串到并,存入接收SBUF中。,图8-6 串行接口的结构,任务1 单片机双机通信设计,5MCS-51的串行接口概述(1)有一个可编程全双工串行通信接口(UART) (Universal Asychronous Receiver/Transmitter )(2)管脚:TXD(P3.1)、RXD(P3.0)(3)可同时发送、接收数据(Tran
15、smit/Receive)(4)有四种工作方式,帧格式有8、10、11位。(5)波特率(Baud rate)可设置波特率:每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒。,任务1 单片机双机通信设计,6MCS-51串行接口寄存器(1)串行口数据缓冲器 - SBUF共2个:一个发送寄存器SBUF,一个接收SBUF,二者共用一个地址99H。(2)控制寄存器 - SCON,对各位的说明如下:SM0、SM1:串行方式选择位,其定义如表8.1所示。表8.1 串行口工作方式,任务1 单片机双机通信设计,SM2:多机通信控制位,用于方式2和方式3中。在方式2和方式3处于接收方式时,若SM2=
16、1, 且接收到的第9位数据RB8为0时,不激活RI;若SM2=1,且RB8=1时,则置RI=1。在方式2、3处于接收或发送方式时,若SM2=0,不论接收到的第9位RB8为0还是为1,TI、RI都以正常方式被激活。在方式1处于接收时,若SM2=1,则只有收到有效的停止位后,RI置1。在方式0中,SM2应为0。REN:允许串行接收位。它由软件置位或清零。REN=1时,允许接收;REN=0时,禁止接收。TB8:发送数据的第9位。在方式2和方式3中,由软件置位或复位,可做奇偶校验位。在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时,TB8为1,数据帧时,TB8为0。RB8:接收数据的第
17、9位。功能同TB8。,TI:发送中断标志位。在方式0中,发送完8位数据后,由硬件置位;在其它方式中,在发送停止位之初由硬件置位。因此,TI是发送完一帧数据的标志,可以用指令JBC TI,rel来查询是否发送结束。TI=1时,也可向CPU申请中断,响应中断后,必须由软件清除TI。 RI:接收中断标志位。在方式0中,接收完8位数据后,由硬件置位;在其它方式中,在接收停止位的中间由硬件置位。同TI一样,也可以通过JBC RI,rel来查询是否接收完一帧数据。RI=1时,也可申请中断,响应中断后,必须由软件清除RI。,任务1 单片机双机通信设计,任务1 单片机双机通信设计,(3)电源及波特率选择寄存器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 单片机 双机 通信 设计 ppt 课件

链接地址:https://www.31ppt.com/p-1826548.html