教学课件第5章 单片机串口通信.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
;第5章 单片机的串口通信;;1. 并口通信和串口通信(数据通信的两种常用形式);;计算机串行接口;按照传输数据流向,串行通信具有3种传输形式:;在半双工制式下,系统由一个TXD和一个RXD组成,但不能同时在两个方向上传送,收发开关由软件方式切换。 ;在全双工制式下,通信系统每端都有TXD和RXD,可以同时发送和接收,即数据可以在两个方向上同时传送。 实际应用中,尽管多数串行通信接口电路具有全双工功能,但仍以半双工为主(简单实用)。;2. 同步通信; ——以字符为单位组成字符帧进行的数据传送。;起始位:位于数据帧开头,占1位,始终为低电平,用于向接收设备表示发送端开始发送1帧数据。 数据位:要传输的数据信息,可以是字符或数据,一般为5~8位,由低位到高位依次传送。 可编程位:位于数据位之后,占1位,用于发送数据的校验,或传送多机串行通信的???络信息。 停止位:位于数据位末尾,占1位,始终为高电平,用于向接收端表示1帧数据已发送完毕。 ;异步通信特点: 对收发双方的时钟精度要求较低(收发双方不同步时,能依靠在每帧开始时的不断对齐,自行纠正偏差); 传送速度较低(每个字节都要建立一次同步)。;波特率:每秒发送二进制数码的位数,即bps(bit per second) (位/秒);5.串行数据缓冲器,SBUF;(1) 串口控制寄存器,SCON(98H);SM0和SM1:串行工作方式定义位。 通过SM0和SM1不同的取值,可定义4种串行通信工作方式。;(2) 电源控制寄存器,PCON(87H);(3)波特率的计算 在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。 串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。 方式0的波特率 = fosc/12 方式2的波特率 =(2SMOD/64)· fosc 方式1的波特率 =(2SMOD/32)·(T1溢出率) 方式3的波特率 =(2SMOD/32)·(T1溢出率);; 串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下: 确定T1的工作方式(编程TMOD寄存器); 计算T1的初值,装载TH1、TL1; 启动T1(编程TCON中的TR1位); 确定串行口控制(编程SCON寄存器); 串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。;; 单片机与单片机之间交换信息,常称为双机通信。对于双机通信常采用查询方式和中断方式设计应用程序。中断方式实现接收数据提高了单片机的工作效率。;动手做——画出硬件电路图 ; 单片机A的P1口的P1.0和P1.7连接按键开关K1和K2,按键开关控制了P1口的输入数据,该数据通过串行口送到B单片机的P1口,控制了D1和D2二个红色LED灯的亮暗。 同样,单片机B的P2口的P2.0和P2.3连接按键开关K3和K4,按键开关控制了P2口的输入数据,该数据通过串行口送到B单片机的P2口,控制了D3和D4二个红色LED灯的亮暗。;单片机与单片机的串口通信项目可以采用查询方式和中断方式二种。 1. 查询方式串口程序设计 单片机A的程序设计如下。 #include reg51.h /*************主程序***************/ void main() { TMOD=0x20; //定时器1 工作方式2 TL1=0xfd; TH1=0xfd; //初值,波特率9600 SCON=0xd0; PCON=0x00; //串口方式3,接收允许,发送数据 TR1=1; //开定时器1 while(1) { SBUF=P1; //将单片机A按键形成的P1口数据送串口 while(!TI); //等待数据送完 TI=0; //数据送完,软件清零 while(!RI); //等待接收单片机B的数据 RI=0; //数据接收完,软件清零 P2=SBUF;

文档评论(0)

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

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

版权声明书
用户编号:5342120324000033

1亿VIP精品文档

相关文档