第8章单片机行口的应用.ppt_第1页
第8章单片机行口的应用.ppt_第2页
第8章单片机行口的应用.ppt_第3页
第8章单片机行口的应用.ppt_第4页
第8章单片机行口的应用.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八章 串行口应用,一、串口组成及工作原理 异步接收/发送器URAT (Universal Asynchronous Receiver/Transmitter)用于串行全双工异步通信,也可作同步寄存器使用。TXD端发送数据,RXD端接收数据;两个发送缓冲器SBUF(Serial Buffer), 用各自的时钟源控制发送、接收数据。,单工、双工、全双工,8.1 数据传输,工作原理,发送(输出):将数据写入发送SBUF(只写不读), 串口控制器按波特率发生器(定时器T1或T2构成)提供的时钟速率 把发送SBUF中的并行数据一位一位从TXD端输出。一帧数据结束 时,硬件将TI置“1”,必须软件清零。

2、发送为主动,只要SBUF中 有数据,就发送。 接收(输入):REN=1,RI=0,接收SBUF(只读不写)。接收 器按要求的波特率采样RXD ,待接收到一个完整的的字节后,就 装入SBUF。 SBUF具有双缓冲作用,在CPU未读入一个接收数据前就 开始接收下一个数据,CPU要在下一个字节接收完毕前读取SBUF中 的 数据。数据接收完,硬件自动置RI=1,必须软件清零。,二、串行口有关的寄存器,1、串行口控制寄存器SCON SM0SM1=00,方式0,移位寄存器输入/输出方式。 SM0SM1=01,方式1, 10位异步通信方式。 SM0SM1=10、11,方式2、3,11位异步通信方式。 REN

3、串口允许接收位,”1”允许接收,“0”禁止接收,软件控制 TB8方式2、3时发送的第九个数据,可由软件置位或清零。 RB8方式2、3时接收的第九个数据,方式1时接收的停止位。 TI接收中断标志,RI发送中断标志,2、电源控制寄存器PCON,SMOD:波特率倍增位,“0”原波特率,“1”波特率*2 GF0、GF1:通用标志位 PD:掉电方式位,PD=1,掉电方式。当检测到单片机有故障时,置PD为1,单片机停止工作,内部RAM单元被保存。当电源恢复后,硬件复位10ms即退出掉电方式。 IDL:待机方式位,“1”待机方式,此时振荡器仍运行,并向中断逻辑、串行口、定时/计数提供时钟,CPU时钟被阻断,

4、CPU不工作,中断功能存在,SP、PSW、ACC及通用寄存器被“冻结”。采用中断可退出待机方式。,三、串行口工作方式介绍,串行口有四种工作方式: 方式0 移位寄存器方式,波特率为fosc/12,外接串并移位寄存器可将数据通过串/并转换输出。 发送(输出):将数据写入发送SBUF,串口将8位数据以波特率为fosc/12从RXD输出,同时TXD端输出同步脉冲,一帧数据8位结束时,硬件将TI置“1”,必须软件清零。 接收(输入):REN=1,RI=0,接收器以fosc/12的波特率采样RXD端引入的数据,8位数据接收完,硬件自动置RI=1,必须软件清零。 方式0中SCON寄存器中的SM2、TB8、R

5、B8均无意义,设为0。,方式1 : 一帧10位异步通信方式,1位起始位 (0),8位数据位(低位在前),1位停止位(1),起始位、停止位自动加入,TXD发送端,RXD接收端,波特率=(2SMOD/32)*N(定时器溢出率)。 发送:将数据写入SBUF,即起动发送,数据由TXD输出,定发送完一帧信息时,硬件将TI置1,必须软件清零。 接收: REN=1时,串行口采样RXD端,当检测到“1”到“0”的变化时(即起始位),开始接收,9位全部收齐时,此时若RI=0,停止位为“1”,便将接收的8位数据装入SBUF,停止位送入RB8,置位RI,若不满足上述条件,则接收无效。重新接收。,方式2、3: 一帧1

6、1位异步通信方式。1位起始位(0),8位数据位(低位在前),1位可编程位0或1,1位停止位(1)。 方式3:波特率=(2SMOD/32)*N(定时器溢出率), 方式2:波特率=fosc/64(32)。 发送:将数据写入SBUF后,即启动发送,发送完一帧信息时,硬件将TI置1,必须软件清零。第九位来自SCON中的TB8(软件置1或清零),作多机通信的标志位或数据的奇偶效验位。 接收:REN=1时,采样RXD端,当检测到“1”到“0”的变化时(即起始位),开始接收,在接收到第9位数据后,此时若RI=0或SM2=0时,第九位送入RB8 ,8位数据装入SBUF,置位RI,若不满足上述条件,则不置位RI

7、,接收无效。接收电路复位,重新检测RXD从“1”到“0”的变化,重新接收数据。,四、波特率计算,波特率即数据传送速率,每秒传送二进制数码的位数bit/s。 串行口四种工作方式决定三种波特率 方式0,波特率为固定值,单片机时钟频率的1/12,即fosc/12; 方式2有两种波特率,波特率=(2SMOD/64)fosc, 方式1和方式3波特率是可变的, 波特率=(2SMOD/32)*N(定时器溢出率),定时器溢出率:1秒溢出的次数N,N= (1/2k-Z)*fosc/12 k定时器工作方式,=13、16、8; 如波特率为1200 bit/s,不加倍,SMOD=0,选用定时器T1,方式2工作, 12

8、00=(20/32)*N ,N=38400, 38400=(12*106/12)*(1/28-Z) Z=230D=0E6H,通常选fosc=11.059MHz, Z=230D=0E8H 也可根据要求波特率查表得出定时器初值。,8.2 认识74164/74165,8.3 双机通信介绍,1、双机通信(点对点)原理: 双机通信(点对点)利用单片机串行口实现两个单片机之间的串行异步通信。如果两个单片机相距很近(1.5m) ,将它们的串行口直接相连,即实现双机通信;如果距离较远,可利用RS232(15m)、RS429、RS423/422、RS485标准总线接口进行通信(1200m)。,2、RS232芯片

9、介绍,RS232标准总线接口(DB-9或DB-25插座):单片机工作电平为TTL(05V),RS232标准电平(逻辑1:-15V-5V;逻辑0:+5V+15V);常用晶体管MC1488、MC1489或MAX232作TTL与RS232的电平转换。 RS-232 与RS-485: RS-232 的操作方式是单驱动,单接收,误码率较高,最大传输距离为15M,最高数据速率为 200KbpS,且不能连接多个外部设备。RS-485,操作方式是差分型的,数据传输更加安全可靠,还可以同时连接32个外部设备,最大传输距离可达1200M,最高数据速率为 10MbpS。,3、8051与RS-232电平传输,DB-9

10、或DB-25插座信号定义 DB-25 DB-9 信号名称 含 义 2 3 TXD 数据发送端 3 2 RXD 数据接收端 4 7 RTS 请求发送(计算机要求发送信息) 5 8 CTS 清除发送(Modem准备接收数据) 6 6 DSR 数据设备准备就绪 7 5 SG 信号地 8 1 DCD 数据或载波检测 20 4 DTR 数据终端准备就绪 22 9 RI 响铃指示,MAX232( MAX202 )(MAXIM美信公司)含两路接收器或驱动器的单电源转换芯片, +5V电源工作,可以将TTL电平转换成RS232输出所需电平。 MAX232(202)引脚说明 C+、C- 外围电容 T1IN 第一路

11、TTL/CMOS驱动电平输入 T1OUT 第一路RS-232电平输出 R1IN 第一路RS-232电平输入 R1OUT 第一路TTL/CMOS驱动电平输出 T2IN 第二路TTL/CMOS驱动电平输入 T2OUT 第二路RS-232电平输出 R1IN 第二路RS-232电平输入 R1OUT 第二路TTL/CMOS驱动电平输出,8.4 MCS-51机间通信的C语言编程,8.4.1 点对点的串行异步通信 1通信双方的硬件连接,8051间RS232C电平信号的传,2通信双方的约定,点对点通信的程序框图,3. 点对点通信编程 点对点通信双方基本等同,只是人为规定一个为发送,一个为接收。要求两机串行口的

12、波特率相同,因而发送和接收方串行口的初始化相同。可编制含有初始化函数、发送函数接收函数的程序,在主函数中根据程序的发送、接收设置TR,采用条件判别决定使用发送函数还是接收函数。这样点对点通信的双方都可运行此程序,只需在程序运行之前人为设置选择TR,一个令TR=0,一个令TR=1,然后分别编译,在两机上分别装入,同时运行。,例 点对点通信。 点对点通信的程序如下:,#include #define uchar unsigned char #define TR 1 /*发送接收差别值TR=0发送*/ uchar idata buf10; uchar pf; void init(void) /*串行

13、口初始化*/ TMOD=0 x20; /*设T/C1为定时方式2*/ TH1=0 xe8; /*设定波特率*/,TL1=0 xe8; PCON=0 x00; TR1=1; /*启动T/C1*/ SCON=0 x50; /*串行口工作在方式1*/ void send(uchar idata *d) uchar i; do SBUF=0 xaa; /*发送联络信号*/ while(TI= =0); /*等待发送出去*/ TI=0;,while(RI= =0); /*等待B机回答*/ RI=0; while(SBUF0 xbb)!=0); /*B机未准备好,继续联络*/ do pf=0; /*清校验

14、和*/ for ( i=0;i16;i+) SBUF=di; /*发送一个数据*/ pf+ =di; /*求校验和*/ while(TI= =0);TI=0; SBUF=pf; /*发送校验和*/,while(TI= =0);TI=0; while(RI= =0);RI=0; /*等待B机回答*/ while(SBUF!=0); /*回答出错,则重发*/ void receive (uchar idata *d) uchar i; do while (RI= =0); RI=0; while (SBUF0 xaa)! =0); /*判A机请求否*/ SBUF=0 xbb; /*发应答信号*/,

15、while (TI= =0); TI=0; while (1) pf=0; /*清校验和*/ for ( i=0;i16;i+) while (RI= =0); RI=0; d i =SBUF; /*接收一个数据*/ pf+ =di; /*求校验和*/ while (RI= =0); RI=0; /*接收A机校验和*/ if (SBUF pf) = =0) /*比较校验和*/ SBUF=0 x00; break; /*校验和相同发00*/ else SBUF=0 xff; /*出错发FF,重新接收*/,while(TI= =0); TI=0; void main (void) init ( )

16、; if(TR= =0) send(buf); else receive(buf); ,8.4.2 多机通信 1通信接口,总线式主从式多机系统,2通信协议,根据MCS-51串行口的多机通信能力,多机通信可以按照以下协议进行: (1) 首先使所有从机的SM2位置1处于只接收地址帧的状态。 (2) 主机先发送一帧地址信息,其中8位地址,第9位为地址/数据信息的标志位,该位置1表示该帧为地址信息。 (3) 从机接收到地址帧后,各自将接收的地址与本机的地址比较。对于地址相符的那个从机,使SM2位清零,以接收主机随后发来的所有信息;对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据不予理睬,直至

17、发送新的地址帧。,(4) 当从机发送数据结束后,发送一帧校验和,并置第9位(TB8)为1,作为从机数据传送结束标志。 (5) 主机接收数据时先判断数据结束标志(RB8),若RB8=1,表示数据传送结束,并比较此帧校验和,若正确,则会送正确信号00H,此信号令该从机复位(即重新等待地址帧);若校验和出错,则发送0FFH,令该从机重发数据。若接收帧的RB8=0,则原数据到缓冲区,并准备接收下帧信息。 (6) 若主机向从机发送数据,从机在第(3)步中比较地址相符后,从机令SM2=0,同时把本站地址发回主机。作为应答之后才能收到主机发送来的数据。其它从机(SM2=1),无法收到数据。,(7) 主机收到

18、从机的应答地址后,确认地址是否相符。如果地址不符,发复位信号(数据帧中TB8=1);如果地址相符,则清TB8,开始发送数据。 (8) 从机接收到复位命令后回到监听地址状态(SM2=1)。否则开始接收数据和命令。,3. 通信程序 设主机发送的地址联络信号00H,01H,02H为从机设备地址,地址FFH是命令各从机恢复SM2为1的状态,即复位。主机的命令编码为: 01H 请求从机接收主机的数据命令; 02H 请求从机向主机发送数据命令。 其它都按从机向主机发送数据命令02H对待。,从机的状态字节格式为:,D7 D6 D5 D4 D3 D2 D1 D0,RRDY=1:从机准备好接收主机的数据。 TR

19、DY=1:从机准备好向主机发送数据。 ERR=1:从机接收到的命令是非法的。 通常从机以中断方式控制和主机的通信。程序可分成主机程序和从机程序,约定一次传送的数据为16个字节,以02H地址的从机为例。,1) 主机程序,多机通信主机程序流程图,主机程序如下: #include #define uchar unsigned char #define SLAVE 0 x02 /*从机地址*/ #define BN 16 uchar idata rbuf 16; uchar idata tbuf 16=master transmit; void err (void) SBUF=0 xff; while

20、(TI!=1);TI=0; ,uchar master (char addr, uchar command) uchar aa, i,p; while(1) SBUF=SLAVE; /* 发呼叫地址 */ while (TI!=1);TI=0; while (RI!=1);RI=0; /* 等待从机回答 */ if(SBUF!=addr) err( ); /* 若地址错,发复位信号 */ else /* 地址相符 */ TB8=0; /* 清地址标志 */ SBUF=command; /* 发命令 */ while (TI!=1);TI=0; while (RI!=1);RI=0;,aa=SBUF; /*

温馨提示

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

评论

0/150

提交评论