为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

串口通信

2011-01-13 50页 ppt 3MB 26阅读

用户头像

is_311002

暂无简介

举报
串口通信nullnullMCU课程核心教程 51-单片机基础 2 O 10 年null第九章 MCS-51串行口串行通信:指数据一位一位按顺序传送串行通信方式:MCS-51内部有一个全双工的串行通信接口串行通信: 串行通讯应用示意图 串行通讯应用示意图TXD RXDRXD TXDTXD RXDRXD TXDRS-232 或485RS-232 或485TXD RXDRS-232PC机 COM1,COM2单片机甲、乙之间近距离通讯单片机甲乙两地之间远距离通讯单片机与...
串口通信
nullnullMCU课程核心 51-单片机基础 2 O 10 年null第九章 MCS-51串行口串行通信:指数据一位一位按顺序传送串行通信方式:MCS-51内部有一个全双工的串行通信接口串行通信: 串行通讯应用示意图 串行通讯应用示意图TXD RXDRXD TXDTXD RXDRXD TXDRS-232 或485RS-232 或485TXD RXDRS-232PC机 COM1,COM2单片机甲、乙之间近距离通讯单片机甲乙两地之间远距离通讯单片机与PC机之间的数据通讯null一、串行通信的两种基本方式1、异步传送方式一帧数据:一个字符在异步传送中称为一帧数据一帧数据由4部分组成: 起始位、数据位、奇偶位、停止位一帧数据起始位数据位奇偶位停止位第n个字符第n+1个字符null数据位:起始位:奇偶位:5~8位。数据的最低位在前,最高位在后。紧跟在最高位之后,占用一位,奇偶校验时,根据协议置“1”或“0”停止位:为逻辑“1”信号,占用1位或2位,当接收端收到停止位时,表示一帧数据结束。2、同步传送方式数据结构:null二、MCS-51串行口结构1、数据缓冲器SBUF包括物理上独立的发送缓冲器、接收缓冲器发送缓冲器:只能写入不能读出, MOV SBUF,A接收缓冲器:只能读出不能写入, MOV A,SBUF 2、串行口控制寄存器字节地址为98H,可位寻址,位地址为98H~9FHSM0 SM1 SM2 REN TB8 RB8 TI RISCON (98H)nullSM0、SM1:串行口工作方式选择位,如表6-3所示 0 0 0 移位寄存器方式(用于I/O扩展) 0 1 1 8位UART,波特率可变 1 0 2 9位UART,波特率为fosc/32或fosc/64 1 1 3 9位UART,波特率可变表6-3 串行口工作方式允许接收控制位。由软件置“1”时,允许接收,置“0”时,禁止接收REN:nullSM2 :多机通信使能位. 1,模式0、1时: SM2不用,应设为0。RI才能被正常激活并引发中断; 2,模式2、3时: 若SM2=0时,无论RB8如何,RI都能被激活(RI=1)。 但是RI=1并不能引发中断!所以只能用查询的方式接收数据。 若SM2=1,收到的第9位(RB8)=0时,则RI不会被激活; 若SM2=1且RB8=1时,RI才能被激活=1并引发中断。nullTB8:在方式2和方式3中要发送的第9位数据,需要时由软件置位或复位RB8:在方式2和方式3中要接收的第9位数据,在方式1时,如SM2=0,RB8是接收到的停止位。在方式0中,不使用RB8TI:发送中断标志。在方式0串行发送第8位结束时由硬件置“1”,或在其他方式中串行发送停止位的开始时置“1”,必须由软件清“0”RI:接收中断标志。在方式0串行发送第8位结束时由硬件置“1”,或在其他方式中串行发送停止位的开始时置“1”,必须由软件清“0”使用查询RI、TI标志方式进行发送与接收N个数据使用查询RI、TI标志方式进行发送与接收N个数据CLR SCON .TI数据送累加器A 修改数据区指针mov sbuf,aTI=1?N个数据发送完?YESNOYESNO发送数据的程序框图SETB SCON .RENmov a,sbufRI=1? N个数据接收完?YESNOYESNOCLR SCON .RI A送数据区 修改数据指针接收数据程序框图null3、特殊功能寄存器PCON其字节地址87H,没有位寻址功能。PCON(87H)SMOD:波特率选择位。SMOD=1时,波特率加倍三、串行口工作方式1、方式0移位寄存器输入输出方式,可外接移位寄存器,以扩展I/O口方式0的波特率为:波特率=fosc/12null74LS164数据输出移位脉冲⑴方式0 发送一个数据写入SBUF,串口将数据从RXD输出(波特率fosc/12),TXD输出同步移位信号,发送完TI置1D7 D0图6-12 方式0扩展I/O口硬件逻辑图null⑵方式0 接收REN置1,串口将数据从RXD输入(波特率fosc/12),TXD输出同步移位信号,发送完RI置1图6-12 方式0扩展I/O口硬件逻辑图null图6-11 方式0发送时序null图6-11 方式0接收时序null2、方式1波特率可变的8位异步通信接口方式。波特率=2SMOD/32×T1溢出率⑴方式1发送CPU 执行一条写SBUF指令,就启动了串口发送当SEND和DATA有效时,数据从TXD输出。⑵方式1接收允许接收位REN被置“1”后,接收器就开始工作,跳变检测器以波特率16倍的速率采样RXD端的电平,RXD引脚上发生由“1”到“0”的跳变,接收器开始接收。null图6-13 方式1发送时序null图6-13 方式1接收时序null3、方式29位异步通信接口方式。传送一帧数据信息为11位波特率=2SMOD/64×fosc⑴方式2发送数据由TXD端输出,附加的第9位数据由SCON中的TB8提供。 CPU 执行一条写SBUF指令,就启动了串口发送,发送完TI置1⑵方式2接收与方式1相似,REN被置“1”后,跳变检测器以波特率16倍的速率采样RXD端的电平,RXD引脚上发生由“1”到“0”的跳变,接收器开始接收。nullSTOP BIT图6-14 方式2发送时序null图6-14 方式2接收时序4、方式39位异步通信接口方式。波特率=2SMOD/32×T1的溢出率其他与方式2类似null四、波特率的设计⑴方式0的波特率是固定的:波特率=fosc/12⑵方式2波特率取决于SMOD波特率=2SMOD/32×T1的溢出率方式2波特率=2SMOD/64× foscSMOD=0时,波特率=fosc/64,SMOD=1时,波特率=fosc/32⑶方式1、3波特率取决于T1的溢出率SMOD=0时,波特率= T1的溢出率/32,SMOD=1时,波特率= T1的溢出率/16null⑷定时器1作波特率发生器T1的溢出率=计数速度/(2K-初值)K为定时器T1的位数K=13(方式0) K=16(方式1) K=8(方式2、3)T1为计数器时:T1为定时器时:T1的溢出率=fosc/[ 12×(2K-初值)]工作于方式1、3时波特率:波特率=2SMOD/32×T1的溢出率= 2SMOD × fosc/[ 32 × 12×(2K-初值)]null2、串行口控制寄存器 SCONTI:串行口发送中断标志在方式0,串行发送到第8位结束时,由硬件置“1”;或在其他方式中,串行发送到停止位的开始时,由硬件置“1”,RI:串行口接收中断标志在方式0,串行接收到第8位结束时,由硬件置“1”;或在其他方式中,串行接收到停止位的开始时,由硬件置“1”,“1” 发送完一帧数据后“1” 接收完一帧数据后必须由软件清 “0” 必须由软件清 “0” SCON (98H)null三、中断控制1、中断允许寄存器 IE0 禁止1 允许0 禁止1 允许 总 中断 总 中断中断中断IE (A8)中断的开放和禁止是可控,可编程的ET2CPUIE 的相应位被置 “0” 或 “1” 该相应中断即被“禁止”或“开放”null2、中断优先级寄存器 IPIP (B8)ET20 低级1 高级中断中断中断优先级是可控,可编程的3、优先级结构中断优先级控制遵循的两个基本原则: ⑴ 一个正在执行的低级中断服务程序,能被高优先级 中断请求所中断,但不能被同优先级中断请求所中断。⑵ 一个正在执行的高级中断服务程序,不能被任何中断 请求所中断,直到返回。 五、串口的应用 1、模式2、3的应用之一:带奇偶校验位的数据传送 五、串口的应用 1、模式2、3的应用之一:带奇偶校验位的数据传送奇偶校验:接收到的第9位数据是发送方送来的奇偶校验位。 在这种情况下,必须令SM2=0,否则接收的校验位RB8=0时,将影响数据的接收(因为RB8是根据8位数据进行奇偶校验的结果来设定,有时为“1”,而有时为“0”)。 当接收到数据后,用指令对 PSW.P位进行判断。将此结果与RB8中的数据进行“异或”,看结果是否与约定的相符合。 null例如:发送、接收双方约定为奇校验: 若发送的数据和第9位分别是:00011010 、0 (第9位数据是发送方用根据奇校验自动生成的) 若接收后SBUF送A的数据是:00011010,这时,PSW.P=1,且 RB8=0 。则进行: P异或RB8=1, 满足约定条件既接收正确。 反之若SBUF送A=00011011,使PSW.P=0,且RB8=0 。 P异或RB8=0 表明不符合约定条件,接收出错。 总之,使用模式2、3发送带“奇偶校验”位的数据时: 1,一定要使SM2=0。 2,又因为SM2=0,所以尽管RI能够激活,但不会引发中断,所以只能采用“查询”的方式接收数据。利用模式2,3进行带奇校验的串行通讯程序流程图利用模式2,3进行带奇校验的串行通讯程序流程图数据送累加器APSW.P=1 ?SET SCON.TB8CLR SCON.TB8MOV SBUF,ATI=1 ?CLR SCON.TIYESNONOYES发送端程序(原始TI=0)使用“查询法”编制的发送、接收程序返回本节目录二RI=1 ?MOV A,SBUFPSW.P⊕RB8=1?出错处理CLR SCON.RIYESNO接收端程序(原始RI=0)NY数据送内存 休息一下,马上回来2、 模式2、3的应用之二:多机通讯2、 模式2、3的应用之二:多机通讯在传统的多路数据采集系统中,存在着许多缺点。使它在采集的点数和引线长度都受到限制。 采用多CPU的方式可以构成一个多机通讯系统。如在一个生产线上要对许多参数(温度、压力、流量等)进行采集检测,并且要对这些数据进行处理、显示、打印或保存。 我们可以将这些单片机进行分工:选一台单片机作为主机,专门负责接收其他单片机传回的数据,并进行数据的后期处理如:保存、显示等。而其它的单片机则完成对传感器的信号检测、A/D转换,最后将数据上传给主机。我们称这些单片机为从机。传统方式的多路数据采集系统传统方式的多路数据采集系统单片机系统 或 微型计算机系统传感器 1传感器 2传感器 3传感器 4传感器 N接口 电路引线 (模拟信号) 机房 或 仪表室检测现场采用“智能传感器”组成的多路数据采集系统采用“智能传感器”组成的多路数据采集系统主机从机 N从机 4从机 3从机 2从机 1串行数据线(2条)RXDTXDTXDRXD主从式多机通讯原理主从式多机通讯原理主机发送的数据可以传送到各个从机,从机发送的数据只能为主机接收,从机之间不能直接通讯; 主机和从机的设置为模式2或3,其中主机的SM2=0,从机的SM2=1。 主机首先通过发送地址码来寻找从机(地址码的特征是第9位数据为“1”,且被从机接收为RB8),所以,所有的从机都能接收到主机发出的地址码(因为:RI=0,SM2=1,RB8=1),并使RI=1引发中断。从机在中断服务程序中,将接收到地址码与自己的地址进行比较,被选中的从机将自己的SM2=0,而未被选中的从机仍保持SM2=1。 当主机找到从机后,开始向从机发数据、命令,其特征为第9位=0。由于从机SM2=0,所以尽管接收到的RB8=0,同样可以激活从机的RI,使其以查询的方式接收主机发出的数据或命令。当主机与从机的通讯完成后,从机再将其SM2=1,主机重新发出另一个从机的地址,所有从机可以马上响应并接收地址信息。多机通讯原理多机通讯原理在模式2、3中, 1,SM2=0时:RB8=1或RB8=0 都可以激活RI, 但不能引发中断。 2,SM2=1时:RB8=1才能激活RI并引发中断。 而RB8=0时,RI不能激活。小 结小 结1,主机的SM2=0,从机的SM2=1; 2,主机向从机发送的地址码第9位为“1”; 3,所有的从机SM2=1、RB8=1、RI=0,接收主机的地址进入中断服务程序。在程序中比较、确认是否为被寻从机。返回多机图返回本节目录二null 4,被寻从机将SM2清零,以保证能以查询的方式接收主机的数据、命令。同时向主机返回地址供主机核实。没有被选种的从机保持SM2=1并退出服务程序。 5,被寻中的从机以查询RI的方式与主机之间进行数据交换(注意:因为SM2=0时,RI虽然能被激活,但不能引发中断),完成后,重新将SM2置1。3、模式2、3使用时要注意的问3、模式2、3使用时要注意的问题 在模式2、3中,可以实现较为特殊的通讯方式,如带校验位的9位传送、多机通讯。注意:当SM2=0时,只能采用查询方式。null串行口初始化编程格式: SIO:MOV SCON,#控制状态字;写方式字且TI=RI=0 (MOV PCON,#80H) ;波特率加倍 ( MOV TMOD,#20H ) ;T1作波特率发生器 ( MOV TH1,#X ) ;选定波特率 ( MOV TL1,#X ) ( SETB TR1) ;启动定时器 ( SETB EA) ;开总中断开 ( SETB ES) ;串行口中断 5 串行口的应用返回本章首页null发送程序:先发送一个字符,等待TI=1后再发送下一个字符。1.查询方式: TRAM: MOV A,@R0 ;取数据 MOV SBUF,A ;发送一个字符 WAIT: JBC TI,NEXT ;等待发送结束 SJMP WAIT NEXT: INC R0 ;准备下一次发送 SJMP TRAM2.中断方式: ORG 0023H ;串行口中断入口 AJMP SINT ORG 0100H MAIN: … ;初始化编程 TRAM: MOV A,@R0 ;取数据 MOV SBUF,A ;发送第一个字符 H: SJMP H ;其它工作 SINT: CLR TI ;中断服务程序 INC R0 MOV A,@R0 ;取数据 MOV SBUF,A ;发送下一个字符 RETI返回本节null接收程序:REN=1、RI=0等待接收,当RI=1,从SBUF读取数据。1.查询方式: WAIT: JBC RI,NEXT ;查询等待 SJMP WAIT NEXT: MOV A,SBUF ;读取接收数据 MOV @R0,A ;保存数据 INC R0 ;准备下一次接收 SJMP WAIT2.中断方式: ORG 0023H AJMP RINT ORG 0100H MAIN: … ;初始化编程 H: SJMP H ;其它任务 RINT: CLR RI ;清中断标志 MOV A,SBUF ;读取接收数据 MOV @R0,A ;保存数据 INC R0 RETInullRS232C接口的具体规定1.电气性能规定 (1) 在TXD和RXD线上,RS232C采用负逻辑。 逻辑正(即数字“1”)=-3V~-15V 逻辑负(即数字“0”)=+3V~+15V (2) 在联络控制信号线上(如RTS、CTS、DSR、DTR、RI、DCD等) ON(接通状态)=+3V~+15V OFF(断开状态)=-3V~-15V 2.传输距离 RS-232协议理论传输距离是13米。(常用芯片MAX232) RS-485协议理论传输距离是1200米。(常用芯片MAX485) null单片机和PC机采用1488和1489通信连线图 null 单片机和PC机采用MAX232通信连线图 使用串行口扩展I/O端口使用串行口扩展I/O端口在MCS-51单片机串行口的4种工作模式中模式0 (同步移位模式)可以用来实现系统并行I/O端口的扩展。 使用这种方式的特点: 扩展I/O端口数量可以不受限制(N*8位); 扩展端口与单片机之间的连线少(2 ~ 3条); 扩展口与单片机之间的数据交换时间较长; 需要使用外部的“并入串出” 或“串入并出” 移位寄存器。MCS-51 RXD TXD移位寄存器移位寄存器同步移位脉冲由MCS-51的串口与两个8位移位寄存器(74LS164)构成的16位并行输出口数据线串行口0模式串行口0模式特点: 同步移位方式。8位数据移位,低位在先; 波特率固定为fosc/12; 数据由RXD(P3.0)出入,同步移位脉冲由TXD发出。 与串行口模式0相关的寄存器 SBUF。用来装载接收或待传送数据的缓冲器; SCON。设定工作模式,存放相关标志的串口控制寄存器。 设定串口模式:00000000B 模式0 时发送机的控制字; 00010000B 模式0 时接收机的控制字。 【注意】: 在接收或发送前必须将对应的标志RI或TI清零! 只要REN=1便开始启动接收。使用2片74LS165构成的16位输入扩展口使用2片74LS165构成的16位输入扩展口MCS-51 P3.0 P3.1 P1.0 H G F E D C B A QH 74LS165 SIN S/ L CLK H G F E D C B A QH 74LS165 SIN S/ L CLK RXDTXD16位并行I/O端口 74LS165: A~H:8位并行数据输入端; 并入串出移位寄存器 SIN: 串行数据输入端; QH: 串行数据输出端; S/ L: =0时锁存并行数据,=1时允许串行移位。编程举例:读入20个字节的数据并送入内部RAM单元编程举例:读入20个字节的数据并送入内部RAM单元 MOV R7,#14H ;字节数20送计数器R7 MOV R0,#20H ;内部数据区指针R0赋初值 SETB F0 ;设置“读入字节数奇偶数”标志 RCV0: CLR P1.0 ;并行置入数据 SETB P1.0 ;允许串行移位 RCV1: MOV SCON,#00010000B ;设定模式0并启动接收(REN=1) LOOP: JNB RI,$ ;等待接收结束 CLR RI ; 首先清RI准备下一次接收 MOV A,SBUF ;将接收的数据送A MOV @R0,A ;数据送内存 INC R0 CPL F0 ;标志取反 JB F0,RCV2 ;接收偶次后重新置入数据 DEC R7 ;接收奇次时要再接收一帧 SJMP RCV1 ;转RCV1再接收一帧数据 RCV2: DJNZ R7,RCV0 ;是否完成20个字节的输入 【注意】:F0的作用和程序根据F0的状态转移到RCV1、RCV0的区别。思考题:编一个在下面的电路中读入20个字节的数据的程序思考题:编一个在下面的电路中读入20个字节的数据的程序MCS-51 P3.0 P3.1 P1.0 H G F E D C B A QH 74LS165 SIN S/ L CLK RXDTXD使用2片74LS164构成的16位输出扩展口使用2片74LS164构成的16位输出扩展口MCS-51 P3.0 P3.1 P1.0 QA QH A,B 74LS164 /CLR CLK QA QH A,B 74LS164 /CLR CLK RXDTXD 共阳极LED数码管 . g f e d c b a 共阳极LED数码管 . g f e d c b a+5V编程:利用静态数码管显示电路,显示RAM中的数据编程:利用静态数码管显示电路,显示RAM中的数据数据存RAM的20H开始的单元,以BCD码的形式存储(高4位为0); 再送数码管显示前必须事先利用查表程序将BCD码转换为共阳极的字符码。a b c d e f g dp+VCCabcdefgdpnull ORG 2000H DISP: MOV R7,02H ;设置显示位数 MOV R0,#20H ;设置数据区指针 MOV SCON,#00H ;设串行口为模式0 MOV DPTR, # TABLE ;设置字符表指针 DISP0: MOV A , @R0 ;取数据到A MOVC A,@A+DPTR ;从表中取与A对应的字符到A MOV SBUF,A ;字符向外传送 LOOP: JNB TI,$ ;等待传送结束 CLR TI ;清除标志TI INC R0 ;指向下一个数据 DJNZ R7,DISP0 ;未完时转DISP0继续 RET TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H ;0,1, 2,3,4的字符码 DB 92H,82H,0F8H,80H,98H ;5,6,7,8,9的字符码 END
/
本文档为【串口通信】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索