第06章单片机串行通信系统案例.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
定时器每秒所溢出的次数为: 定时器T1的溢出率=fosc/(12×(28—N))。 式中的N为时间常数,即TH1的预置初值。 例如:系统的时钟频率fosc=12MHz,TH1的预置值N=E6H,定时器T1在工作模式2下的溢出率为: 12×106/12/(28—E6H)≈38461.5次/秒。 若SMOD=1,串口传输数据的波特率是多少? 设波特率用B表示,计数初值用N表示,则波特率B与T1计数初值N之间的关系可以表示为: 【例6-1】若fosc=6MHz,波特率为2400波特,设SMOD=1,则定时/计数器T1的计数初值为多少? N = 256-2SMOD×fosc /(2400×32×12) = 242.98≈243 =F3H 将N=F3H带入公式,反过来求B=2403.846,误差率 0.16% 若fosc=11.0592MHz,波特率为2400,设SMOD=0,则N=F4H。 3、波特率与计数初值的关系 解决的方法只有调整单片机的时钟频率fosc,通常采用11.0592MHz晶振。 常用波特率及其产生条件 常用波特率通常按规范取1200、2400、4800、9600、…,若采用晶振12MHz和6MHz,则计算得出的T1定时初值将不是一个整数,产生波特率误差而影响串行通信的同步性能。 财富是一时的朋友,而朋友才是永久的财富; 每个人都有五个不停旋转的球:工作、健康、家庭、朋友和灵魂。工作是橡胶球,掉下去会弹起来;而另外四个都是玻璃球,掉了-----就碎了。 单片机串行通信系统 串行通信接口概述 1 串行通信工作方式 3 串行通信波特率设置 4 串行通信应用举例 5 串行通信应用举例 5 串行通信接口 2 五、串行通信应用举例 1、 串行口的编程 串行口需初始化后,才能完成数据的输入、输出。初始化过程如下: 按选定串行口的工作方式设定SCON的SM0、SM1; 对于工作方式2或3,应根据需要在TB8中写入待发送的第9位 数据; 若选定的工作方式不是模式0,还需设定接收/发送的波特率; 设定SMOD的状态,以控制波特率是否加倍; 若选定工作方式1或3,则应对定时器T1进行初始化操作,即设定T1的工作方式和初值,以设定其溢出率。 电路如图6-8所示,试编制程序输入K1~K8的状态信息,并存入内RAM 40H。 图6-8 串行通讯方式0应用。 图6-8 串行通讯方式0应用 2、 工作方式0应用举例 4014 是一个并入串出转换芯片,Q8端为串行数据输出端,CLK为时钟脉冲输入端,P/S为操作控制端,P/S=1:锁存并行输入数据,P/S=0:允许串行移位操作。 要完成题目的要求,应先将开关状态锁存,然后串行输入单片机。 C语言参考程序: # include reg51.h sbit P1_0=P1^0; //定义P1.0口 void main() //主函数 { unsigned char i; P1_0=1; //锁存并行输入数据 P1_0=0; //允许串行移位操作 SCON=0x00; //设定串行口为方式0 while (!RI) {;} //等待接收完毕 i=SBUF; //存入K1~K8状态数据 RI=0; //清中断标志 …… } 【例3】设甲乙两机以串行方式1进行数据传送,fosc=11.0592MHz,波特率为1200b/s。甲机发送的16个字节数据存在内RAM40H~4FH单元中,乙机接收后存在内RAM 50H为首的地址区域中。 T1初值 = 解: 串行方式1波特率取决于T1溢出率(设SMOD=0), 计算T1定时初值 3、 工作方式1应用举例 = 232 = E8H C语言参考程序: 甲机发送程序: #includereg51.h //包含特殊功能寄存器库 #define uchar unsigned char uchar idata buf[16]; //要发送的16个数据 uchar i; //变量i, 循环发送的次数记录 void main( )

文档评论(0)

1112111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档