第7章-51单片机的串行通信模块.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
前一页 7.10.1串行通信模块的波特率自适应算法 为了实现51单片机的波特率的自适应,可以采用如下两种方式。 ●系统启动时使用一个默认的通信波特率来通信,然后定义接下来收到的数据包中的预先设定来修改波特率。 ●根据51单片机串行通信特点,由单片机程序根据时序来判断通信波特率,把串行口接收到得第一个字节作为初始化字节,通过对这个字节的检测来判断波特率。 第一种方式的优点是原理简单,握手成功率高,但是程序控制复杂,并且第一次通信的时候需要一个预先约定的波特率,不能应付突发情况;第二种方式的优点是不需要事先约定好波特率,连接方便,但是该方式需要受到一定条件的限制。由于第一种方式原理比较简单,程序设计方便,本小节将不再赘叙,本小节是第二种方法的原理和应用实例。 51单片机的通信波特率不是一个100%准确的数值(参考7.12小节),可以允许在一定范围内变化,只要满足“测三取二”即可,因此只要波特率在合理的范围内波动,正在传输的数据的第一位和最后一位的传输时间就会发生变化,通过对这个时间的测量,就可以得到波特率的值,该数值测量步骤如下。 (1)检测RXD接收引脚上的下降沿(启动信号),在该跳变到来时启动定时计数器。 (2)检测RXD引脚上的每一个上升沿,在该跳变到来时读出定时计数器的数据寄存器内容并且保存。 (3)等待定时计数的溢出事情,则最后一次所保存的定时计数器的数据寄存器读出数据即为启动位到停止位的时间。 (4)查找事先计算好的表单常数来获得波特率,该计算公式见教材: 表单常数由4位十六进制数据组成,有高8位和低8位之分,如当51单片机工作频率为12MHz,通信波特率为9 600bit/s时所对应的表单常数为0x02,0x08。 前一页 7.10.2串行通信模块波特率自适应的C51语言代码 例7.10是串行通信模块的波特率自适应的C51语言代码,其通过检测RXD引脚上的电平宽度来获得对应的定时计数器的值,然后根据这个值反查出波特率列表综合中对应的波特率,从而达到动态获取波特率的目的,实例中的表单常数对应51单片机的工作频率为11.0592MHz。 【例7.10】串行通信模块的波特率自适应 (实例代码详见教材) 前一页 7.11串行通信模块的“高速”通信 7.11.1波特率固定的“高速”通信 7.11.2波特率可变的“高速”通信应用 首页 前一页 7.11.1波特率固定的“高速”通信 从7.4.3小节可知当51单片机的串行通信模块使用工作方式2时,其波特率仅和其工作频率也就是外部晶体有关,当外部晶体的频率为11.0592MHz时串行模块的通信波特率可以高达345.6kbit/s。 例7.11是一个串行通信模块使用工作方式2循环发送一字节数据的实例,51单片机的工作频率为11.0592MHz,而串行通信模块的通信波特率为345.6kbit/s。串行通信模块的工作方式2下的波特率设置非常简单,只需要控制SMOD位即可,但是需要注意的是SMOD位不支持位寻址,所以需要对PCON寄存器操作。 【例7.11】波特率固定的高速通信 (实例代码详见教材) 前一页 7.11.2波特率可变的“高速”通信应用 串行模块的工作方式2虽然可以获得比较高的通信速率,但是其波特率固定且非标准波特率,和一些外围器件如PC通信的时候很难使用这样的波特率,这时可以使用定时计数器T2作为波特率发生器,在此模式下单片机串行模块的波特率可以达到115 200bit/s(工作频率11.0592MHz)或者23 4000bit/s(工作频率22.1184MHz)。 51单片机的52子系列提供了内部的定时计数器T2,当T0和T1被占用的时候以及需要使用高速率进行串行通信时,可以使用T2来作为51单片机的波特率发生器。由于T2的有效脉冲是每个机器周期1次,所以使用T2可以获得更高的可控通信波特率,而且误差很小。在外部工作频率为10.0592MHz时,使用T2可以获得稳定的115.2kbit/s的标准通信速率。 使用T2作为波特率发生器时,串行通信模块可以工作在工作模式1、3下,其初始化步骤如下。 (1)初始化串行通信模块。 (2)设置TCLK = 1和RCLK = 1。 (3)设置C/T2# = 0。 (4)设置RCAP2H和RCAP2L初始值,其计算公式详见教材: (5)启动T2。 表7.13(详见教材)所示是51单片机常用的在不同工作频率和波特率下使用T2作为波特率发生器的初始化值。 例7.12是使用T2作为串行通信模块的波特率发生器的C51语言初始化代码,51单片机的工作频率为11.0592MHz,通信波特率为115 200bit/s,串行口工作方式1 【例7.12】使用T2作为波特率发生器 (实例代码详见教材) 前一页 7.12串行通信模块的波特率误差 首页 由于51单

文档评论(0)

yyons2019 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档