第7章-51单片机串行接口课件_第1页
第7章-51单片机串行接口课件_第2页
第7章-51单片机串行接口课件_第3页
第7章-51单片机串行接口课件_第4页
第7章-51单片机串行接口课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

主要章节7.1通信的基本概念7.251单片机串行口的功能与结构7.3串行口的工作方式7.4串行口的应用2023/6/6117.1通信的基本概念7.1.1并行通信和串行通信2023/6/621(a)并行通信(b)串行通信根据信息传送的方向,串行通信可以分为单工、半双工和全双工2023/6/631(a)单工

(b)半双工

(c)全双工7.1.2串行通信的基本过程1.发送过程2023/6/641发送时钟数据线011001102.接收过程2023/6/651接收时钟数据线011001107.1.3串行通信的通信方式1. 串行异步通信方式2023/6/661特点:

一次传送的位数比较少,对发送时钟和接收时钟的同步性要求相对不高,线路简单。

传送速度较慢。2. 串行同步通信方式2023/6/671同步字符1同步字符2数据块校验字符1校验字符2特点:

一次连续传送多个字符,传送的位数多,对发送时钟和接收时钟同步性要求很高,控制线路复杂

传送速度快。7.1.4波特率波特率是指串行通信中,单位时间传送的二进制位数,单位为bps。传输速度往往又可用每秒传送多少个字节来表示(Bps)。它与波特率的关系为:

波特率(bps)=一个字符的二进制位数×字符/秒(Bps)2023/6/6817.251单片机串行口的功能与结构7.2.1串行口的功能51单片机具有一个全双工的串行异步通信接口,可以同时发送和接收数据。有四种工作方式:方式0、方式1、方式2和方式3。方式0为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展I/O接口。方式1为8位的异步通信方式,通常用于双机通信。方式2和方式3为9位的异步通信方式,通常用于多机通信2023/6/6917.2.2串行口的结构2023/6/6101串行口数据寄存器(SBUF),串行口控制寄存器SCON、电源控制寄存器PCON以及定时/计数器和中断系统中的特殊功能寄存器组成。7.2.3串行口控制寄存器SCON2023/6/6111SM0、SM1:串行口工作方式选择位SCOND7D6D5D4D3D2D1D098HSM0SM1SM2RENTB8RB8TIRISM0SM1方式功能波特率00方式0移位寄存器方式fosc/1201方式18位异步通信方式可变10方式29位异步通信方式fosc/32或fosc/6411方式39位异步通信方式可变SM2:多机通信控制位。REN:接收允许控制位。TB8:发送数据的第9位。RB8:接收数据的第9位。TI:发送中断标志位。RI:接收中断标志位。7.2.4电源控制寄存器PCON2023/6/6121PCOND7D6D5D4D3D2D1D087HSMODXXXGF1GF0PDIDLSMOD:波特率加倍位。当SMOD位为1,则串行口方式1、方式2、方式3的波特率加倍。GF1、GF0:通用标志位。由软件置位或复位PD:掉电方式位。当PD=1时,进入掉电方式。IDL:待机方式位。当IDL=1时,进入待机方式。7.3串行口的工作方式7.3.1方式0----移位寄存器方式

方式0通常用来外接移位寄存器,用作扩展I/O口。

RXD:串行数据TXD:同步时钟。数据格式:低位在前,高位在后,长度8位,在SBUF中。波特率:fosc/12。(1)发送条件:TI=0操作:MOVSBUF,A结果:发送完毕,TI置“1”。

条件:RI=0操作:REN(SCON.4)置“1”结果:8位数据接收数据缓冲器SBUF中,同时,RI置“1”,向CPU申请中断。用户处理:MOVA,SBUF(2)接收7.3.2方式1----8位异步通信方式TXD:发送数据端RXD:接收数据端。数据格式:1位起始位(0),SBUF中8位数据位(低位在前)和1位停止位(1)。波特率:2SMOD×(T1的溢出率)/32(1)发送

条件:TI=0操作:MOVSBUF,A结果:发送完毕,TI置“1”。

条件:RI=0,REN(SCON.4)置“1”。结果:8位数据接收数据缓冲器SBUF中,同时,RI置“1”,向CPU申请中断。用户处理:MOVA,SBUF(2)接收7.3.3方式2和方式3TXD:发送数据端RXD:接收数据端数据格式:1位起始位(0),SBUF中8位数据位(低位在前)第9位TB8和1位停止位(1)波特率:2SMOD×(T1的溢出率)/32(1)发送

条件:TI=0操作:先准备第9位TB8,执行MOVSBUF,A结果:发送完毕,TI置“1”。条件:RI=0,REN(SCON.4)置“1”。结果:SM2=0,接收的前8位数据送SBUF,第9位送RB8,RI置“1”,向CPU申请中断。SM2=1,若接收的第9位为1,则前8位数据送SBUF,第9位送RB8,RI置“1”,向CPU申请中断。用户处理:MOVA,SBUF(2)接收7.4串行口的应用7.4.1利用方式0扩展并行I/O接口【例7-1】用8051单片机的串行口外接串入并出的芯片74HC164扩展并行输出口控制一组发光二极管,使发光二极管从右至左延时轮流显示。74HC164是一块8位的串入并出的芯片,共14个引脚,

除了电源和地信号外,A、B:串行数据输入端;CLK:串行时钟信号输入端;Q0~Q7:8位数据并行输出端;

:清零端,输入低电平时74HC164输出端清0;

在CLK=0、=1时,74HC164保持原来数据。2023/6/61912023/6/6201设串行口采用查询方式,显示的延时依靠调用延时子程序来实现2023/6/6211汇编语言程序:

ORG0000H LJMPMAIN ORG0100HMAIN: MOVSCON,#00H ;串口初始化方式0 MOVA,#0FEHSTART: MOVSBUF,A ;51单片机串口发送 LOOP: JNBTI,LOOP ;等待发送

ACALLDELAY ;延时

CLRTI RLA ;循环移位改变显示内容

SJMPSTARTDELAY: MOVR7,#80H ;延时子程序LOOP2: MOVR6,#0FFHLOOP1: DJNZR6,LOOP1 DJNZR7,LOOP2 RET END2023/6/6221#include<reg51.h> //包含特殊功能寄存器库#include<intrins.h>//包含内部函数voidmain(){unsignedchari;unsignedintj;SCON=0x00; //串口初始化方式0i=0xFE;for(;;) { SBUF=i; //51单片机串口发送 while(!TI){;} //等待发送 TI=0; for(j=0;j<=20000;j++){_nop_();} //延时 i=_crol_(i,1); //改变显示内容 }}C语言程序:【例7-2】用8051单片机的串行口外接并入串出的芯片74HC165扩展8位并行输入口,输入一组开关的状态,并通过二极管显示出来。74HC165是一块8位的并入串出的芯片,共16个引脚,除了电源和地信号外,P7~P0:8位并行输入端;SIN:串行数据输入端;QH、:串行数据同相、反相输出端;CLK:串行时钟信号输入端;CLKINH:串行时钟允许输入端,当它为低电平时,允许CLK时钟输入;S/:串出/并入方式控制输入端,S/=1,允许串行输出,S/=0允许并行置入。74HC165的工作过程一般如下:(1)使控制端S/=0,8位并行数据置入到内部的寄存器;(2)使控制端S/=1,在时钟信号CLK的控制下,内部寄存器的内容按从P0~P7的顺序从串行输出端依次输出。2023/6/62312023/6/6241P0口接的8个发光二极管串行口方式0数据的接收,用SCON寄存器中的REN位来控制,采用查询RI的方式来判断数据是否输入,汇编语言程序:2023/6/6251 ORG0000H LJMPMAIN

ORG0100HMAIN: CLRP1.0 ;74HC165并入

NOP NOP NOP SETBP1.0 ;74HC165串出

NOP NOP NOP MOVSCON,#10H ;串口初始化方式0,允许接收LOOP: JNBRI,LOOP ;接收

CLRRI MOVA,SBUF MOVP0,A ;送P0口显示

SJMPMAIN ENDC语言程序:2023/6/6261#include<reg51.h>//包含特殊功能寄存器库#include<intrins.h>//包含内部函数库sbitP1_0=P1^0;voidmain(){ unsignedchari; while(1) { P1_0=0;_nop_();_nop_();_nop_();//74HC165并入

P1_0=1;_nop_();_nop_();_nop_();//74HC165串出

SCON=0x10; //串口初始化方式0,允许接收

while(!RI){;} //接收

RI=0;

i=SBUF; P0=i; //送P0口显示

}}7.4.2利用方式1实现点对点的双机通信【例7-3】用汇编语言编程通过串行实现将甲机的片内RAM中30H~3FH单元的内容传送到乙机的片内RAM的40H~4FH单元中。2023/6/6271

甲、乙两机都选择方式1即8位异步通信方式,最高位用作奇偶校验,波特率为1200bps,甲机发送,乙机接收,因此甲机的串口控制字为40H,乙机的串口控制字为50H。由于选择的是方式1,波特率由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定,则需对定时/计数器T1初始化。设SMOD=0,甲、乙两机的振荡频率为12MHz,由于波特率为1200bps。定时/计数器T1选择为方式2,则初值如下。

初值=256-fosc×2SMOD/(12×波特率×32)=256-12000000/(12×1200

温馨提示

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

评论

0/150

提交评论