《单片机原理与应用》-6_第1页
《单片机原理与应用》-6_第2页
《单片机原理与应用》-6_第3页
《单片机原理与应用》-6_第4页
《单片机原理与应用》-6_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.1单片机串行通信简介6.1.1串行通信的几个基本概念通信:计算机的CPU与外部设备之间,计算机与计算机之间的信息交换,称为数据通信。换言之:两个不同对象之间的信息交换,称为通信。数据通信的传输方式:并行通信,数据的各位同时送出;串行通信:数据的各位逐位送出。计算机通信的工作方式:单工方式,数据仅按一个固定方向传送;半双工方式:数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收/发开关转换;全双工方式,允许双方同时进行数据双向传送,但一般全双工传输方式的线路和设备较复杂。下一页返回6.1单片机串行通信简介串行通信的两种形式:异步通信,在这种通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,紧接着是若干个数据位;同步通信,发送器和接收器由同一个时钟源控制,同步传输方式去掉了起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志即可。串行数据通信的传输速率:串行数据传输速率有两个概念,即每秒转送的位数b/s(bitpersecond)和每秒符号数———波特率(Bandrate),在具有调制解调器的通信中,波特率与调制速率有关。例如:设有一帧信息,1个起始位、8个数据位、1个停止位,传输速率为每秒240个字符,求波特率上一页下一页返回6.1单片机串行通信简介分析:(1+8+1)×240=2400b/s=2400波特。串行数据通信的校验:通常采用的校验方式有奇偶校验和和校验(1)奇偶校验:奇偶检验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。奇检验:8位有效数据连同1位附加位共9位数据,二进制“1”的个数为奇数。偶检验:8位有效数据连同1位附加位共9位数据,二进制“1”的个数为偶。上一页下一页返回6.1单片机串行通信简介(2)和校验:所谓和校验是发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据,同时对数据块(除检验字节外)求和(或个字节异或),将所得的结果与发送方的“校验和”进行比较,相符则无差错,否则即认为传送过程中出现了差。上一页下一页返回6.1单片机串行通信简介6.1.2MCS-51单片机的串行接口一、单片机的串行口结构MCS-51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。单片机串行口的结构见图6-1。SBUF寄存器的内部结构见图6-2。上一页下一页返回6.1单片机串行通信简介二、串行口缓冲器在物理结构上,有一个串行口接收缓冲器SBUF、一个发送缓冲器SBUF,因为接收缓冲器只能接收数据,而发送缓冲器只负责向外发送数据,为了简化指令,MCS-51单片机的这两个寄存器具有同一地址(99H)。串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的。当向SBUF发“写”命令时,发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。上一页下一页返回6.1单片机串行通信简介指令“MOVSBUF,A”启动一次数据发送,可使SBUF再发送下一个数。在接收数据时,一帧数据从RXD端经接收端口进入SBUF之后,串行口发出中断请求,通知CPU接收这一数据。CPU执行一条读指令,就能将接收的数据送入累加器中,与此同时,接收端口接收下一帧数据。指令“MOVA,SBUF”完成一次数据接收,SBUF可再接收下一个数。三、串行口控制寄存器与串行通信有关的控制寄存器有串行控制寄存器SCON、电源控制寄存器PCON及中断允许控制寄存器IE。上一页下一页返回6.1单片机串行通信简介(1)串行口控制寄存器。SCON寄存器的字节地址为98H,可位寻址。SCON用于设定串行口工作方式、接收发送控制及设置状态标志。其格式见表6-1。SM2:多机通信控制位。在方式2或方式3中:SM2=0,RB8=X,将接收的数据装入SBUF中。SM2=1:RB8=0,将接收到的数据放弃。SM2=1:RB8=1,激活RI向CPU申请中断。在方式1中:SM2=1:接收到有效停止位激活RI,向CPU申请中断。在方式0中:SM2=0(人为设定)。上一页下一页返回6.1单片机串行通信简介REN:接收控制位。REN=1,允许接收;REN=0,禁止接收。TB8:发送的第九位数(在方式2或方式3中)。在许多通信协议中,该位作奇偶校验位使用。在MCS-51多机通信中用以表示地址(1),表示数据(0)。RB8:接收的第九位数。在方式2或方式3中:存放接收的第九位数(TB8)。在方式0中:RB8未使用。在方式1中:SM2=0,RB8存放接收到的停止位。在多机通信中用以表示地址(1),表示数据(0)。TI:发送中断请求标志位。TI=1,向CPU申请中断。RI:接收中断请求标志位。RI=1,向CPU申请中断SM0、SM1:工作方式选择位,见表6-2。上一页返回6.2单片机串行口的工作方式6.2.1串行工作方式0该方式不用于单片机之间的通信,主要用于串行口的扩展。功能:8位同步移位寄存器输入/输出口,波特率固定为:fosc/12。低位在前,高位在后。发送:RXD逐位移出数据,TXD输出移位脉冲,每发送一帧(8位)数据,TI=1,向CPU申请中断,TI需用软件清零。波特率:模式0的波特率等于单片机晶振频率的1/12,即每个机器周期接收或发送一位数据。方式0的发送时序如图6-3

所示。下一页返回6.2单片机串行口的工作方式接收:RXD逐位移入SBUF中,TXD输出移位脉冲,每接收一帧(8位)数据,RI=1,向CPU申请中断,RI需用软件清零方式0的接收时序如图6-4

所示【例6-1】用8051串行口外接74LS165移位寄存器扩展8位输入口,输入数据由8个开关提供,另有一个开关K提供联络信号。电路示意如图6-5

所示。当开关K合上时,表示要求输入数据。输入8位开关量,处理不同的程序。上一页下一页返回6.2单片机串行口的工作方式分析:74LS165为并行输入串行输出器件,利用它的并入串出功能可方便地与51单片机的串行口进行连接,实现将并行数据进行串行输出,节省单片机的端口。例题中使用P11作为并入串出的控制端,高电平的时候并行输入,低点电平时串行输出。参考程序如下:START:JBP10,$;开关K未合上,等待SETBP11;74LS165并行输入数据CLRP11;开始串行移位MOVSCON,#10H;串行口模式0并启动接收上一页下一页返回6.2单片机串行口的工作方式JNBRI,$;查询RICLRRI;查询结束,清RIMOVA,SBUF;输入数据根据A处理不同任务SJMPSTART;准备下一次接收。【例6-2】使用CD4094的输出端接8只发光二极管,利用它的串入并出功能,把发光二极管从左向右依次点亮,并反复循环。按此要求所做的电路连接如图6-6所示。分析:CD4094为串行输入串行输出器件,利用串行通信方式0,通过该器件,只需3位端口便可实现我们比较熟悉的流水灯实验。例题中使用P10作为串入并出的控制端,高电平的时候并行输出,低电平时关闭并行输出。上一页下一页返回6.2单片机串行口的工作方式参考程序如下:MOVSCON,#00H;串行口方式0工作CLRES;禁止串行中断MOVA,#80H;发光管从左边亮起DELR:CLRP10;关闭并行输出MOVSBUF,A;串行输出JNBTI,!;状态查询上一页下一页返回6.2单片机串行口的工作方式SETBP10;开启并行输出ACALLDELAY;状态维持时间CLRTI;清发送中断标志RRA;发光组合右移AJMPDELR;继续上一页下一页返回6.2单片机串行口的工作方式6.2.2串行工作方式1功能:10位异步串行通信方式,波特率可变,TXD发送,RXD接收,低位在前,高位在后,其帧格式如图6-7

所示。发送:CPU执行一条写入SBUF的指令,自动启动TXD逐位移出数据,每发送一帧(8位)数据,TI=1,向CPU申请中断,TI需用软件清零。波特率:方式1和方式3的波特率算法相同,公式如下上一页下一页返回6.2单片机串行口的工作方式模式1或3的波特率=发送时序:方式1的发送时序如图6-8

所示接收:每接收一帧(10位)有效数据,自动装载SBUF,停止位进入RB8,RI=1,向CPU申请中断,RI需用软件清零。接收时序:接收时序如下图6-9

所示上一页下一页返回6.2单片机串行口的工作方式6.2.3串行工作方式2、3功能:方式2、3均为11位异步串行通信方式,区别是方式2波特率固定,而方式3波特率可变。TXD发送,RXD接收,低位在前,高位在后,第9位为可编程位,其帧格式如图6-10

所示。发送:CPU执行一条写入SBUF的指令,自动启动TXD逐位移出数据,第9位数据为SCON中的TB8,每发送一帧(8位)数据,TI=1,向CPU申请中断,TI需用软件清零。波特率:方式2的波特率是固定的,为fosc/32或fosc/64,方式3的波特率计算公式与方式1相同。上一页下一页返回6.2单片机串行口的工作方式发送时序:方式2、3的发送时序如图6-11

所示。接收:每接收一帧(11位)有效数据,自动装载SBUF,第9位进入RB8,RI=1,向CPU申请中断,RI需用软件清零。接收时序:方式2、3的接收时序如图6-12

所示上一页返回6.3串行通信程序设计步骤及应用举例串口程序的编制和定时、计数器以及中断程序编制一样,首先也应该初始化。(1)先设定SCON,设定好串口工作方式。如:MOVSCON,#40H;设定串口工作方式一。(2)如果用到中断的,还必须设定IE或IP。如:……ORG0023HLJMPPSTORG0030H……SETBEA下一页返回6.3串行通信程序设计步骤及应用举例SETBESPST:CLRR……RETI(3)然后设定波特率,即根据工作方式设置定时计数器T1,以及PCON寄存器。注意串行通信的单片机波特率应一致,否则数据传输将出现错误。如:MOVPCON,#80H;波特率加倍MOVTMOD,#20H;定时器1工作在方式2MOVTH1,#FDH;设置波特率为9600上一页下一页返回6.3串行通信程序设计步骤及应用举例值得注意的是:由于串行发送、接收标志不能硬件自动清除,所以不管是中断方式还是查询方式编程时都必须用软件方式清除TI、RI。为了简化设计过程,我们通常将常用的波特率及T1的初始值制成一张表格,根据表格可以方便地查询到相应的波特率对应的T1初始值,它们之间的关系见表6-3。【例6-3】用串行口工作方式2进行1号(发送)、2号(接收)两机的异步通信。双机通信连接如图6-13

所示,串行通信波特率为1200。用定时器T1工作方式2作为波特率发生器,定时器T1的初值为E6H、单片机晶振频率选择为6.000MHz,波特率为1200。上一页下一页返回6.3串行通信程序设计步骤及应用举例(1)号机发送:将(1)号机的按键值信息发送到(2)号机。(2)号机接收:接收来自(1)号机的数据,并且将数据通过数码管显示出来,以便观察串行通信数据传输的正确与否。分析:(1)号单片机扫描矩阵键盘,当检测到有键按下时,启动串行发送程序,将按键的序号值发送给(2)号单片机;(2)号单片机平时处于显示扫描状态,直到收到按键值,则更显数据显示。电路图如图6-13所示,流程图如图6-14、图6-15

所示。参考程序如下:(1)号单片机程序(发送):上一页下一页返回6.3串行通信程序设计步骤及应用举例按键扫描子程序,扫描的键值存放在R3中,可组成44键盘。PTKEYEQUP0;扫描的端口,其中低位接列线,高位接行线ORG0000HAJMPMAINORG0030HMAIN:MOVTMOD,#20H;设置串行通参数MOVTH1,#0E6H;波特率为2400b/sMOVTL1,#0E6HMOVPCON,#80H上一页下一页返回6.3串行通信程序设计步骤及应用举例MOVSCON,#40H;串行工作方式1,10位串行数据SETBTR1MAIN_LOOP:LCALLKEY1MOVA,R3MOVSBUF,AJNBTI,$CLRTISJMPMAIN_LOOPKEY1:LCALLKS1;调用按键总扫描程序,无按键则继续查询上一页下一页返回6.3串行通信程序设计步骤及应用举例JNZLK1;用按键则去判断所按键值ACALLY6MSAJMPKEY1LK1:ACALLY6MS;有按键延时12msACALLY6MSACALLKS1;继续判断有无按键,这样处理可防止按键干扰。JNZLK2ACALLY6MS;有按键延时6ms。AJMPKEY1上一页下一页返回6.3串行通信程序设计步骤及应用举例LK2:MOVR2,#0FEH;送扫描的首列。MOVR4,#00H;列号送初值。LK4:MOVA,R2MOVPTKEY,AMOVA,PTKEYJBACC4,LONE;第0行无按键则转第一行。MOVA,#00HAJMPLKPLONE:上一页下一页返回6.3串行通信程序设计步骤及应用举例JBACC5,LTWO;第1行无按键则转第2行MOVA,#04HAJMPLKPLTWO:JBACC6,LTHREE;第2行无按键则转第3行。MOVA,#08HLTHREE:JBACC7,NEXT;第2行无按键则转下一次扫描。MOVA,#0BHLKP:ADDA,R4;将按键值的行和列相加送R3上一页下一页返回6.3串行通信程序设计步骤及应用举例MOVR3,ALK3:ACALLY6MS;等待按键的释放。ACALLKS1JNZLK3RETNEXT:;进行下一列的扫描。INCR4MOVA,R2JNBACC3,KNDRLA上一页下一页返回6.3串行通信程序设计步骤及应用举例MOVR2,AAJMPLK4KND:AJMPKEY1KS1:ANLPTKEY,#0F0H;给低4位送低电平MOVA,PTKEYXRLA,#11110000B;读取高4位,若高4位不全;表示有按键。RET上一页下一页返回6.3串行通信程序设计步骤及应用举例Y6MS:;延时6ms子程序MOVR7,#30Y6MS1:MOVR6,#48Y6MS2:DJNZR6,Y6MS2NOPDJNZR7,Y6MS1MOVR6,#07Y6MS3:DJNZR6,Y6MS3上一页下一页返回6.3串行通信程序设计步骤及应用举例RET(2)号单片机程序(接收):DIS_SHIEQU50H;显示十位缓冲区DIS_GEEQU51H;显示个位缓冲区ORG0000HAJMPSTARTORG0023HMOVA,SBUFCLRRI上一页下一页返回6.3串行通信程序设计步骤及应用举例RETIORG0030HSTART:MOVDIS_SHI,#0AH;初始化数码管灭MOVDIS_GE,#0AHLCALLDISPLAYMOVTMOD,#20H;设置串行通信参数MOVTH1,#0E6H;波特率为2400b/sMOVTL1,#0E6HMOVPCON,#00H;串行工作方式1,10位串行数据,允上一页下一页返回6.3串行通信程序设计步骤及应用举例MOVSCON,#50H;许接收数据SETBTR1SETBEASETBESMAIN:MOVB,#10DIVABMOVDIS_SHI,AMOVDIS_GE,BLCALLDISPLAYSJMPMAIN上一页下一页返回6.3串行通信程序设计步骤及应用举例DISPLAY:;显示子程序MOVDPTR,#SHUMAMOVA,DIS_SHIMOVCA,@A+DPTRMOVP1,ASETBP20ACALLY3MSCLRP20MOVA,DIS_GEMOVCA,@A+DPTRMOVP1,A上一页下一页返回6.3串行通信程序设计步骤及应用举例SETBP21ACALLY3MSCLRP21RETY3MS:;延时3ms子程序MOVR7,#15Y3MS1:MOVR6,#48Y3MS2:DJNZR6,Y3MS2上一页下一页返回6.3串行通信程序设计步骤及应用举例NOPDJNZR7,Y3MS1MOVR6,#07Y3MS3:DJNZR6,Y3MS3RETSHUMA:;共阳数码代码。DB0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0FFH;0~9,灭上一页下一页返回思考与练习题1填空题(1)异步串行数据通信的帧格式由位,位,位和位组成。(2)串行口控制寄存器为,发送中断标志位是,接收中断标志位为。(3)使用T1作波特率发生器时,应把定时器T1设定为工作模式。(4)若10s内传递了4000个字符,每个字符8位,则波特率为。(5)被称为多机通信控制位的是。(6)51单片机共有种串行工作模式,其中模式为11位数据格式,并且波特率可变。上一页下一页返回思考与练习题2简答题(1)串行数据传送的主要优点和用途是什么?(2)简述串行口接收和发送数据的过程。(3)串行口有几种工作方式,几种帧格式?各种工作方式的波特率如何确定?(4)异步通信和同步通信的主要区别是什么?MCS-51串行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论