




免费预览已结束,剩余54页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章单片机串行通信,9.1串行通信基础9.2单片机串行接口9.3应用程序设计,第9章单片机串行通信,单片机应用系统设计教学课件,9.1串行通信基础,9.1.1概述,9.1.2串行通信方式,9.1.3通用异步接收器和发送器UART,9.1.4串行通信的接口标准,单片机应用系统设计教学课件,串行通信的基本特征是数据逐位顺序进行传送。串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平等)不同,形成了多种串行通信的协议与接口标准。常见的有:通用异步收发器(UART)本课程介绍的串口通用同步串行总线(USB)I2C总线CAN总线SPI总线RS-485,RS-232C,RS422A标准等等,9.1.1概述,单片机应用系统设计教学课件,数据通信的几个术语:,并行:数据各位同时进行传送串行:数据逐位顺序进行传送,异步串行通信:以字符为单位进行传送同步串行通信:以数据块为单位进行传送波特率(bps.):单位时间传送的位数,9.1.1概述,9.1.2串行通信方式,1、单工方式:这种方式只允许数据向一个固定的方向传输。,数据传输仅能从发送设备传输到接收设备。,2、半双工方式:数据可以从A发送到B,也可以由B发送到A。但A、B之间只有一根传输线,因此同一时刻只能作一个方向的传送。其传送方向由收发控制开关K切换。平时一般让A、B方都处于接收状态,以便能够随时响应对方的呼叫。,两个串行通信设备之间只有一条数据线,数据传输可以沿两个方向,但需要分时进行。,9.1.2串行通信方式,3、全双工方式:数据可同时在两个方向上传送。,3种方式中,1)全双工方式的效率最高;2)半双工方式配置和编程相对灵活,传输成本较低;3)串行通信设备常选用半双工方式。,9.1.2串行通信方式,UART是一个能异步传输的数据总线。TXD:发送数据线RXD:接收数据线接收和发送可以单独进行,也可以同时进行。格式严格:每个数据以相同的位串形式传输。每个串行数据由起始位、数据位、奇偶校验位、停止位组成。从起始到停止位结束时间称为一帧(frame)。,9.1.3通用异步接收器和发送器UART,发送方:传送时先输出起始位“0”作为联络信号,接下来的是数据位和奇偶校验位,停止位“1”表示一个字符的结束。其中,数据的低位在前,高位在后。字符之间允许有不定长度的空闲位。接收方:传送开始后,接收设备不断检测传输线的电平状态,当收到一系列的“1”(空闲位或停止位)之后,检测到一个“0”,说明起始位出现,就开始接收所规定的数据位和奇偶校验位以及停止位。特点:所需传输线少,设备开销较小,在单片机控制系统中得到广泛的应用。但每个字符要附加23位用于起止位,各帧之间还有间隔,因此传输效率不高。,工作流程,9.1.3通用异步接收器和发送器UART,UART格式起始位:在通信线上没有数据被传送时处于逻辑1状态,当要发送数据时,首先发出一个逻辑0信号,这个逻辑0信号就是起始位。数据位:起始位后位。数据位的个数可以是58位,MSC-51中常采用8位数据传送,从最低有效位开始发送。奇偶校验位:检测有限差错。偶校验:组成数据位和奇偶位的逻辑1个数必须是偶数。奇校验:逻辑1的个数必须是奇数。停止位:停止位是一个字符数据的结束标志,可以是1位、1.5位或2位的逻辑1。停止位后,通信线又恢复逻辑1状态。,9.1.3通用异步接收器和发送器UART,校验和方法,特点:校验和方法效率更高,可靠性更高。,奇偶校验法数据校验位(偶校验)校验位(奇校验)64H0110010010偶校验:数据区与检验位中1的总数为偶数。奇校验:数据区与检验位中1的总数为奇数。,校验方法,9.1.3通用异步接收器和发送器UART,波特率:数据传送速率,即每秒钟传送二进制代码的位数。单位:位/秒(bit/s)或波特(Baudrate)。数据位宽(每一位代码的传输时间)Td1/Baudrate接收设备和发射设备需要保持相同的传送波特率。如果传送速率为200字符/秒,每个字符包含10个代码位,则传送的波特率是:200字符/秒10位/字符=2000波特=2000bps每一位代码的传送时间Td为波特率的倒数:,波特率,9.1.3通用异步接收器和发送器UART,最常用的通信接口:RS-232、RS-449、RS-422、RS-423、RS-485等。一、RS232C标准简介,9.1.4串行通信的接口标准,信号线25芯,22根信号线,常用9根线最简方式3根线RXD:数据接收线TXD:数据发送线GND:地线例如:PC机上的串口COM1、COM2,9.1.4串行通信的接口标准,电平制采用负逻辑,对应电平如下:1:5V15V0:5V15V常用驱动器典型的线驱动器MC148812V供电典型的线接收器MC1489,9.1.4串行通信的接口标准,二、RS-232C的典型应用,9.1.4串行通信的接口标准,1.传输线驱动器MC1488输入为TTL电平,输出为RS232电平。2.传输线接收器MC1489输入为RS232电平,输出为TTL电平。,三、RS-232C标准接口的电平转换,9.1.4串行通信的接口标准,单片机与单片机通信,单片机与PC机通信,异步串口硬件连接方式,9.1.4串行通信的接口标准,可以实现TTL电平与RS-232C的双向转换,3、收发器MAX232,9.1.4串行通信的接口标准,9.2单片机串行接口,9.2.1串行口控制寄存器,9.2.2串行接口的工作方式,9.2.3计算波特率,一、1个全双工串行接口,可同时进行发送和接收。串行接口输入/输出引脚:TXD(P3.1)、RXD(P3.0)数据格式:按不同方式,一帧位数8/10/11发送/接收时,数据皆低位在前。,一帧字符发送/接收结束,置位标志位(TI/RI)并申请SIO中断。中断控制:中断允许位ES中断入口:0023H,9.2.1串行口控制寄存器,1.数据缓冲器SBUF发送SBUF和接收SBUF共用一个地址99H。(1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。发送指令:MOVSBUF,A(2)接收SBUF存放已接收成功的8位数据,供CPU读取。读取串行口接收数据指令:MOVA,SBUF,二、串行接口控制,9.2.1串行口控制寄存器,SM0,SM1,SM2,REN,TB8,RB8,TI,RI,串行口接收中断标志,串行口工作方式设置:0011:方式0方式3,方式2和方式3的多机通信特征位,允许串行接收位:1:允许;0:禁止,接收到的第9位数据,要发送的第9位数据,串行口发送中断标志,9.2.1串行口控制寄存器,2.串行口控制/状态寄存器SCON(98H),串行口工作方式,9.2.1串行口控制寄存器,应用特点:1)两个中断标志,RI用于接收,TI用于发送。2)发送/接收前都必须对RI/TI清零,一帧数据发送/接收后,RI/TI自动置1,如要再发送/接收,必须用软件清零。3)方式0和1:数据发送/接收完成后,置位RI/TI,请求中断。方式2和3:数据接收完成后,视SM2和RB8状态确定RI和请求中断。,9.2.1串行口控制寄存器,电源控制寄存器-PCON,SMOD,NA,NA,NA,NA,NA,NA,NA,波特率加倍控制位1:加倍;0:不加倍,字节地址为87H,没有位寻址功能,需要字节传送。,9.2.1串行口控制寄存器,SM0,SM1选择四种工作方式。一、方式0:同步移位寄存器方式。用于扩展并行I/O接口。1.一帧8位,无起始位和停止位。2.RXD:数据输入/输出端。TXD:同步脉冲输出端,每个脉冲对应一个数据位。3.波特率BR=fosc/12如:fosc=12MHz,BR=1MHz,每位数据占1s。,9.2.2串行接口的工作方式,用于扩展单片机的并行I/O接口。串行口实现:并行串行的数据转换74LS165/74LS164实现:串行并行的数据转换。SCON中的TB8、RB8位没有用到,发送或接收完8位数据由硬件置“1”TI或RI,CPU响应中断。TI或RI须由用户软件清“0”,可用如下指令:CLRTI;TI位清“0”CLRRI;RI位清“0”方式0时,SM2位必须为0。,9.2.2串行接口的工作方式,4.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。,9.2.2串行接口的工作方式,SBUF(发),SBUF(收),发送控制器TI,接收控制器RI,移位寄存器,波特率发生器T1,1,A累加器,(门)移位寄存器,RxD,TxD,去申请中断,引脚,引脚,9.2.2串行接口的工作方式,数据从RXD(P3.0)引脚串行输出,低位在先,高位在后;TXD(P3.1)引脚输出移位脉冲,其频率为fosc/12;发送完毕后,中断标志位TI为1。如要发送数据,如下所示:MOVSCON,#00H;串行口方式0MOVSBUF,A;将数据送出JNBTI,$;等待数据发送完毕,移位寄存器方式举例,9.2.2串行接口的工作方式,8位数据异步通讯方式。1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。2.RXD:接收数据端。TXD:发送数据端。3.波特率:方式1的波特率由定时器(T1)的溢出率和SMOD的状态决定。用T1作为波特率发生器,BR=(2SMOD/32)T1溢出率。,9.2.2串行接口的工作方式,二.方式1,4.发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1(或SM2=0),将接收数据装入SBUF,停止位装入RB8(即RB8为1),并使RI=1;否则(若RB8为0,帧格式出错)丢弃接收数据,不置位RI。,9.2.2串行接口的工作方式,方式1,9.2.2串行接口的工作方式,9位数据异步通讯方式。1.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。2.RXD:接收数据端,TXD:发送数据端。3.波特率:方式2:BR=(2SMOD/64)fosc。方式3:BR=(2SMOD/32)T1溢出率。,9.2.2串行接口的工作方式,三、方式2和方式3,方式2,3,9.2.2串行接口的工作方式,方式2发送:STDI:PUSHPSW;保护现场PUSHACCSETBSM0;设置方式2发送CLRSM1CLRTI;中断标志清0MOVA,R0;取数据MOVC,P;奇偶位送TB8MOVTB8,CMOVSBUF,A;数据写入发送缓冲器,启动发送INCR0;数据指针加1POPACCPOPPSWRETI,9.2.2串行接口的工作方式,例:P213(胡)程序(参考),方式2接收:PIRI:PUSHPSW;保护现场PUSHACCSETBSM0;设置方式2接收CLRSM1MOVA,SBUF;读接收数据MOVC,P;检测奇偶标志位JNCLOOP1;P=0,转LOOP1JNBRB8,ERP;P=1,RB8=0,出错,转ERPAJMPLOOP2;P=1,RB8=1,接收数据正确LOOP1:JBRB8,ERP;P=0,RB8=1,出错,转ERPLOOP2:MOVR0,A;接收数据送数据区INCR0ERP:POPACCPOPPSWRETI,例:P214(胡)程序(参考),9.2.2串行接口的工作方式,方式0为固定波特率:BR=fosc/12方式2可选两种波特率:BR=(2SMOD/64)fosc方式1、3为可变波特率,用T1作波特率发生器。T1选方式2。BR=(2SMOD/32)T1溢出率串行口方式1、3,根据波特率,计算时间常数C。(若T1选方式1用于低波特率,需考虑T1重装时间常数时间。)(胡)例9.2.1,9.2.3计算波特率,例:若8031单片机的时钟振荡频率为11.0592MHz,选用T1为方式2定时作为波特率发生器,波特率为2400b/s,求初值。这里时钟振荡频率选为11.0592MHz,就可使初值为整数,从而产生精确的波特率。,9.2.3计算波特率,INTT:MOVTMOD,#20H;选T1定时方式2MOVTH1,#0F3H;预置计数初值CMOVTL1,#0F3H;SETBTR1;启动定时器T1MOVPCON,#80H;SMOD=1MOVSCON,#50H;串行口方式1工作,初始化程序:,9.2.3计算波特率,在单片机的应用中,相同机种单片机的波特率很容易达到一致,只要晶振频率相同,可以采用完全一致的设置参数。异机种单片机的波特率设置较难达到一致,这时的设计原则应使两个通信设备之间的波特率误差小于2.5%。常用的串行接口波特率、晶振频率以及各参数的关系如(徐)P143表6.5所示。,9.2.3计算波特率,例:串行口初始化编程格式:SIO:MOVSCON,#控制状态字;写方式字且TI=RI=0MOVPCON,#80H;波特率加倍MOVTMOD,#20H;T1作波特率发生器MOVTH1,#X;选定波特率MOVTL1,#XSETBTR1SETBEA;开串行口中断SETBES,一、串行口初始化,9.3应用程序设计,1.查询方式:TRAM:MOVA,R0;取数据MOVSBUF,A;发送一个字符WAIT:JBCTI,NEXT;等待发送结束SJMPWAITNEXT:INCR0;准备下一次发送SJMPTRAM,二、发送程序,9.3应用程序设计,ORG0023H;串行口中断入口AJMPSINTMAIN:;初始化编程TRAM:MOVA,R0;取数据MOVSBUF,A;发送第一个字符H:SJMPH;其它工作SINT:CLRTI;中断服务程序INCR0MOVA,R0;取数据MOVSBUF,A;发送下一个字符RETI,2.中断方式:,9.3应用程序设计,REN=1、RI=0等待接收,当RI=1,从SBUF读取数据。1.查询方式:WAIT:JBCRI,NEXT;查询等待SJMPWAITNEXT:MOVA,SBUF;读取接收数据MOVR0,A;保存数据INCR0;准备下一次接收SJMPWAIT,三、接收程序,9.3应用程序设计,MAINT:MOVSCON,#80H;串行口初始化,方式2MOVPCON,#80H;SETBEASETBES;开串行口中断MOVR0,#50H;设数据指针MOVR7,#10H;数据长度LOOP:MOVA,R0;取一个字符MOVC,P;加奇偶校验MOVTB8,CMOVSBUF,A;启动一次发送HERE:SJMPHERE;CPU执行其它任务,*异步通讯程序举例(参考)1.发送程序:将片内RAM50H起始单元的16个数由串行口发送。要求发送波特率为系统时钟的32分频,并进行奇偶校验。,9.3应用程序设计,ORG0023HAJMPTRANIORG1000HTRANI:PUSHACC;保护现场PUSHPSWCLRTI;清发送结束标志DJNZR7,NEXT;是否发送完?CLRES;发送完,关闭串行口中断SJMPTENDNEXT:INCR0;未发送完,修改指针MOVA,R0;取下一个字符MOVC,P;加奇偶校验MOVTB8,CMOVSBUF,A;发送一个字符TEND:POPPSW;恢复现场POPACCRETI;中断返回,9.3应用程序设计,RECS:MOVSCON,#50H;串行口方式1允许接收MOVTMOD,#20H;T1方式2定时MOVTL1,#0F4H;写入T1时间常数MOVTH1,#0F4HSETBTR1;启动T1MOVR0,#50H;设数据指针MOVR7,#10H;接收数据长度WAIT:JBCRI,NEXT;等待串行口接收SJMPWAITNEXT:MOVA,SBUF;读取接收字符MOVR0,A;保存一个字符INCR0;修改指针DJNZR7,WAIT;全部字符接收完?RET,2.接收程序:串行输入16个字符,存入片内RAM的50H起始单元,串行口波特率为2400(设晶振为11.0592MHz)。(参考),9.3应用程序设计,RECS:MOVSCON,#0D0H;串行口方式3允许接收MOVTMOD,#20H;T1方式2定时MOVTL1,#0F4H;写入T1时间常数MOVTH1,#0F4HSETBTR1;启动T1MOVR0,#50H;设数据指针MOVR7,#10H;接收数据长度WAIT:JBCRI,NEXT;等待串行口接收SJMPWAITNEXT:MOVA,SBUF;取一个接收字符JNBP,COMP;奇偶校验JNBRB8,ERR;PRB8,数据出错SJMPRIGHT;P=RB8,数据正确COMP:JBRB8,ERRRIGHT:MOVR0,A;保存一个字符INCR0;修改指针DJNZR7,WAIT;全部字符接收完?CLRF0;F0=0,接收数据全部正确AJMPGDERR:SETBF0;F0=1,接收数据出错GD:RET,3.接收程序(参考),9.3应用程序设计,A机发送:SEND:MOVA,R0MOVC,PMOVTB8,CMOVSBUF,AWAIT:JBCTI,NEXTSJMPWAITNEXT:INCR0DJNZR7,SENDRET,B机接收:WAIT:JBCRI,NEXT;等待串行口接收SJMPWAITNEXT:MOVA,SBUF;读取接收字符JNBP,COMP;奇偶校验JNBRB8,ERR;PRB8,出错SJMPSAVE;P=RB8=1,正确COMP:JBRB8,ERRSAVE:MOVR0,A;保存一个字符INCR0;修改指针DJNZR7,WAIT;全部字符接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出院患者心理支持与随访流程探讨
- 中考道德与法治知识体系梳理计划
- 物流运输安全措施及应急处理方案
- 康复护理责任制工作方案及具体措施
- 2025新教科版三年级下册艺术教育计划
- 运输行业质量管理措施
- 混凝土施工工艺与组织措施
- 海洋工程施工环保策略计划
- 水泥厂设备安全操作技术措施
- 2025年幼儿园应急卫生处理计划
- 江苏省南京市、盐城市2025届高三年级5月第二次模拟考试政治试题及答案(南京盐城二模)
- 快递员合同协议书范本
- 互联网+农产品商业计划书
- 公司安全事故隐患内部举报、报告奖励制度
- DL-T5344-2018电力光纤通信工程验收规范
- 过敏性紫癜教案-苏赞彩
- GB∕T 36266-2018 淋浴房玻璃(高清版)
- 外贸报关用发票、装箱单、合同、报关单模板
- 导热系数测定仪期间核查方法、记录 Microsoft Word 文档
- 安全联锁监控系统使用说明书
- 云南省劳动合同样本(共8页).doc
评论
0/150
提交评论