资源预览内容
第1页 / 共75页
第2页 / 共75页
第3页 / 共75页
第4页 / 共75页
第5页 / 共75页
第6页 / 共75页
第7页 / 共75页
第8页 / 共75页
第9页 / 共75页
第10页 / 共75页
亲,该文档总共75页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
,微控制器技术应用,项目八 单片机系统中“通信与联络”的分析与实践,【能力目标】,1能够灵活运用单片机中通信方式。 2能够运用单片机中串行通信的制式。 3能够灵活地运用初始化指令。 4能够使用WAVE6000软件对汇编程序进行调试、编译等。 5能够灵活地使用AT89C51单片机串行通信应用于实践。 6能够熟练地使用伟福仿真器。 7能够熟练地使用编程器。,项目八 单片机系统中“通信与联络”的分析与实践,【知识目标】,1能够掌握同步和异步通信的原理。 2能够掌握单片机中串行通信的制式。 3能够掌握AT89C51串行口寄存器结构。 4能够认识使用串行通信控制寄存器。 5能够掌握AT89C51单片机各种串行通信工作方式。 6熟练地掌握AT89C51单片机串行方法及其通信应用。 7熟悉AT89C51单片机双机通信及多机通信。,项目八 单片机系统中“通信与联络”的分析与实践,一、项目引入,二、相关理论知识,三、项目实施,四、拓展知识,六、自测题,五、项目小结,项目八 单片机系统中“通信与联络”的分析与实践,一、项目引入,本项目通过单片机完成“通信与联络”的分析与实践。从这个简单的“通信与联络”的电路做起,使大家对单片机的通信技术有一个最基本的认识,大致了解单片机通信的工作过程,激发学习单片机应用技术的兴趣。,二、相关理论知识,、 单片机系统中的串行接口及特点,、 AT89C51单片机串行口的控制,、 串行口波特率的设定,、 AT89C51单片机串行口的四种工作方式,、 串行口应用举例,串行通讯是实现远距离低成本数据传输的有效方法。 在嵌入式系统中,与并行接口的总线形式相比:串行通讯又成为简化电路结构的新的接口形式而越来越多的被采用。 当前嵌入式系统流行的串行接口有: 异步串行UART、同步串行USRT总线接口; SPI(Micro wire)总线接口 - MOTOROAL、NS; I2C总线接口-PHILIPS; 1-Wire总线接口-Dallas; CAN总线接口 - Bosch; USB总线接口-Intel、Compaq等,从机,从机,从机,从机,主机,、单片机系统中的串行接口及特点,MCS-51 (甲),MCS-51 (乙),TXD RXD,RXD TXD,RS-232 或485,RS-232 或485,TXD RXD,RS-232,PC机 COM1,COM2,单片机甲、乙之间近距离的直接通讯,单片机甲乙两地之间远距离通讯,单片机与PC机之间的数据通讯,TXD,RXD,TXD,RXD,MCS-51内部含有一个可编程全双工串行通信口,具有UART的全部功能.,串行(异步)通讯应用示意图,字符帧:也称数据帧。 由“起始位”+“数据位”+“停止位”构成(如图)。 波特率:每秒钟传输二进制数的个数。 波特率使用的单位是:bps(bit per second) 位/秒。 异步通讯:数据是以字符或字节为单位组成字符帧传送。使用一条数据线发送或接收数据。发送与接收相互独立,互不同步,但双方必须使用相同的波特率和字符帧格式。,起始位,停止位,0,1,一个字符帧的格式,异步串行通讯中的基本概念:,1、数据缓冲寄存器 SBUF(99H),在MCS-51的串行口电路中,SBUF是用来存放发送和接收数据的两个独立的缓冲寄存器,在SFR的地址都是99H。CPU执行写SBUF指令便开始引发串口的发送。 MOV SBUF,A 当串口接收缓冲器接收到一帧数据时,可以执行下面指令进行读取: MOV A,SBUF,、AT89C51单片机串行口的控制,MCS51通过数据缓冲寄存器SBUF和控制寄存器SCON、 PCON实现对串行口的控制,SBUF实际上是一个能够独立完成数据接收和数据发送操作的复杂的硬件电路; CPU只要将数据送到发送SBUF(MOV SBUF,A)后,SBUF便一位一位地发送数据,发送完成后标志TI=1; 在CPU允许接收串行数据的前提下,当外部串行数据经RXD送入SBUF时,电路便自动启动接收,直至完成一帧数据后标志 RI=1。 由于发送SBUF与接收SBUF是两个独立的缓冲器,所以51串行口是一个可以同时发送与接收的“全双工”接口。,SM0 SM1: 串行口工作模式选择位。,2、串行口控制寄存器 SCON(SFR地址98H),RI :完成一帧数据接收标志,必须由软件清零,接收完成RI=1并申请中断(如果中断开放,则引发中断); TI :完成一帧数据发送标志,必须由软件清零,发送完成TI=1同时申请中断(如果中断开放,则引发中断); RB8:在9位有效数据传送的模式2、3时,接收到的第9位数据; TB8:在9位有效数据传送的模式2、3时,将要发送的第9位数据; REN:允许接收位,REN=1时允许接收.由软件置位或清零。 SM2 :多机通信使能位.,SM2 :多机通信使能位. 1,模式0、1时: SM2不用,应设为0。 2,模式2、3时: 若SM2=0,无论RB8如何,RI都能被激活(RI=1)。 但RI=1不能引发中断!只能用查询的方式接收数据。 若SM2=1,收到的第9位(RB8)=0时,则RI不会被激活; 若SM2=1且RB8=1时,RI才能被激活=1并可引发中断。,RI(SCON.0):接收完成标志 当SUBF从RXD接收完一个完整的数据帧时RI=1,如果中断是开放的,则RI=1时会自动引发中断。用户可以通过中断服务程序将SBUF中的数据取出送累加器A。 MOV A, SBUF 在中服程序中接收数据; 也可以使用查询的方式对RI进行检测: JNB RI,$ ;如果RI1 则等待 MOV A,SBUF ;RI=1时,取SBUF中数据送A,由于SBUF与CPU之间各自独立工作,那么: 接收数据时CPU何时读取SBUF中的数据? 发送数据时,CPU何时再向SBUF发送下一个数据? 双方只能通过标志进行协调,使用RI、TI标志完成数据的发送与接收,当CPU执行:MOV SBUF,A 指令后,便引发一次串行通信的过程。SBUF开始通过TXD向外按位发送数据。当完成一帧数据的发送后,TI=1。 如果系统中断是开放的,则TI=1会自动引发中断。 用户可以通过中断服务程序向SBUF输送下一个数据: MOV SBUF, A ;在中断程序中发送下一个数据; 也可以使用查询的方式对TI进行检测: JNB TI,$ ;如果TI1 则等待 CLR TI ;软件清除标志,准备下次发送 MOV SBUF,A ;TI=1时发送下一个数据,TI(SCON.1):发送完成标志,使用查询RI、TI标志的方式进行发送与接收N个数据,SMOD: 串行口波特率倍率控制位 SMOD=1时,方式1、2、3的波特率加倍,注意:PCON不可位寻址,3、控制寄存器 PCON(SFR地址87H),特点:做同步移位寄存器用。其波特率固定为 fosc/12。在这种模式下RXD(P3.0)做数据口; TXD(P3.1)做移位脉冲输出端。在移位过程中,先移数据的低位D0。(注意:移位脉冲的频率就是模式0的波特率) 主要功能:使用串行口扩展并行口,1、模式0,注意:方式0并不是一种同步通信方式,、AT89C51单片机串行口的四种工作方式,写SBUF,SEND,D1,D0,D2,D3,D4,D5,D6,D7,RXD端数据,SHIFT,TXD端同步脉冲,TI中断标志,mov sbuf,a 指令从发送到结束的10个机器周期,串行口模式0的时序信号(发送),特点: 10位传输格式 (1个起始位+8个数据位+1个停止位);用于真正远距离的异步通讯方式; 波特率可变(定时器T1的溢出率来确定,所以首先要对T1进行初始化以确定串行口的波特率)。 发送操作:在TI=0,执行mov sbuf ,a指令后开始,自动在8位字符前后分别添加1个起始位和停止位,并从TXD端开始依次发送一帧数据。当发送完后将TI置位。,起始位,停止位,0,1,从TXD(P3.1)端发出的一个字符帧的格式,TI,TXD,2、模式1,接收操作:在REN=1且RI=0的条件下进行。 串行口的接收电路对RXD线进行采样,其采样频率是接收时钟的16倍。当连续8次采集到RXD线上为低电平时,检测电路便认定RXD线上有了“起始位”,此后,便开始在每次第7 、 8 、9三个脉冲时进行RXD采样,采取“三中取二”的原则来确定接收的数据(如图所示)。,起始位,8位数据,停止位,7.8.9,RI,RXD,当连续8次采集到低电 平时,便确认起始位到来N。,在每个第7,8,9个脉冲对RXD采样并采用 “以三取二”来确定采集的数据。,串行口模式1时数据帧格式及接收采样示意图,起始位,8位数据,停止位,7.8.9,RI,RXD,当接收到停止位时,必须满足:RI=0且SM2=0,才能把接收的数据送到SBUF中(停止位送SCON的RB8中,并使RI=1),否则数据丢失。 上面的条件意味着:要想得到接收的数据,在接收前必须事先清零RI。,方式1下波特率可变:,特点:模式2、3都是11位传输格式1个起始位+9个数据位+1个停止位。 模式2、3的区别仅在波特率上 模式2:固定为fosc/64或fosc/32。(具体由PCON中的SMOD位来确定)。 模式3:可变,由定时器T1的溢出波特率来确定(同方式1一样,为1/32或1/16倍的T1溢出率)。,起始位,8+1位数据,停止位,第9 位,0,1,3、模式2、3,第9位数据可由用户安排,可以是奇偶校验位,可以是其他控制位,模式2、3的发送过程类似于模式1,唯一的区别在于数据帧中数据是9位。这样,在发送一帧数据时,CPU除了要把8位数据送SBUF外(mov sbuf,a),还要事先将第9位数据送到SCON.TB8中。 SETB SCON.TB8 或: CLR SCON.TB8 例如: SETB SCON.TB8 或: CLR SCON.TB8 MOV SBUF,A MOV SBUF,A,SCON,发送:,接收:,RI=0是保证下一个数据的正常接收的重要条件。每次当SBUF收到数据时,RI自动置1。当取走数据时必须通过软件复位RI(指令 CLR RI),否则外部发来的数据将丢失! 模式2、3的接收过程类似于模式1,不同的是:模式1时,SCON中的RB8是接收到的停止位“1”;而模式2、3时,RB8是接收到的第9位(D8)。,发送时:将SCON中的TB8作为第9位数据发送; 接收时:将接收来的第9位送到SCON中的RB8中。,起始位,9位数据,停止位,串行口模式2、3时数据帧格式,在串行口的异步通讯中,发送方与接收方是两个互相独立的系统,它们的系统时钟可以各不相同。在这种条件下使通讯正确的条件是: 1,要有相同的字符帧格式; 2,要有相同的波特率。,、串行口波特率的设定,* 当SMOD=1时,B=fosc/32;当SMOD=0时,B=fosc/64。,3、模式1、3的波特率 由定时器T1的溢出率来决定的(SMOD=1使波特率加倍)。,AT89C51单片机的串行口4种模式其波特率各不相同,1、模式
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号