单片机第五讲_第1页
单片机第五讲_第2页
单片机第五讲_第3页
单片机第五讲_第4页
单片机第五讲_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、湖南理工学院机械与电气工程系湖南理工学院机械与电气工程系单片机原理 及应用教程第六章 单片机串口及应用 计算机与外部设备的基本通信方式有两种: 并行通信、串行通信。一、串行通信的基本概念(1)、异步通信1、串行通信有两种基本通信方式:异步通信、同步通信。在停止位后不接着传送下一个字符在停止位后接着传送下一个字符并行通信:以字(字节)为单位,数据的各个位同时进行传送。串行通信:以数据位为单位,一位一位顺序进行传送。发送方将数据怎样分割成位,接收方将接收的位流还原成数据。这就牵涉到通信格式。0/1D0 D1 D2 D3 D4 D5 D6 D7 0/11D0 D10D71第n-1个字符第n+1个字符

2、第n个字符帧8位数据位0停止位起始位停止位起始位在停止位后不接着传送下一个字符在停止位后接着传送下一个字符注意这几个概念:起始位、数据位、校验位、停止位。0/1D0 D1 D2 D3 D4 D5 D6 D7 0/11111D71第n-1个字符第n+1个字符第n个字符帧8位数据位0空闲位起始位D01空闲位0(2)、同步通信数据1数据2同步字符1同步字符2数据1数据2同步字符数据3数据4异步通信以数据帧的格式来组织,一帧数据包含起始位和停止位,不要求发收方的时钟精确同步。EB90HSYN=16H2、数据传送的方式全双工方式全双工方式单工方式单工方式发发 送送 器器接接 收收 器器A站点站点B站点站

3、点(a)单工数据传送单工数据传送半双工方式半双工方式发送器发送器接收器接收器发送器发送器接收器接收器A站点站点B站点站点(b)(b)半双工数据传送半双工数据传送发送器发送器发送器发送器接收器接收器接收器接收器A站点站点B站点站点(c)全双工数据传送全双工数据传送3、波特率和发送/接收时钟时钟数据时钟数据每位传送时间Td与发送/接收时钟Tc的关系为:Td =n Tcn取1, 16, 32 ,64波特率发送时钟/接收时钟4、奇偶校验二、MCS-51串行口的基本结构:SBUF(发送)发送控制发送端口接收控制SBUF(接收)波特率控制写SBUF接收端口接收移位寄存器TxD(P3.1)RxD(P3.0)

4、读SBUFDBDB内部数据总线1串行中断TIRI发送过程发送过程:执行一条写执行一条写SBUF指令启动一帧数据的发送指令启动一帧数据的发送.(MOV SBUF , A)要预先设置好波特率要预先设置好波特率.一帧数据发送一帧数据发送完毕完毕,置位置位TI申请中断申请中断.接收过程接收过程:当检测到期当检测到期RxD引脚上的起始位后引脚上的起始位后 ,便一位一位便一位一位的移入到移位寄存器的移入到移位寄存器,接收完一帧后送接收完一帧后送SBUF,并置位并置位RI ,向向CPU申请中断。申请中断。CPU响应中断后,执行一条读响应中断后,执行一条读SBUF指令指令,将数据保存到某一单元。将数据保存到某

5、一单元。(MOV A , SBUF)串行口控制串行口控制:1.串行口控制寄存器串行口控制寄存器SCONSM0 SM1 SM2 REN TB8 RB8TIRID7 D6 D5 D4 D3 D2 D1 D0工作方式控制位工作方式控制位多机通信位多机通信位串行口接收使能串行口接收使能发送的第发送的第9位数据位数据接收中断接收中断发送中断发送中断接收的第接收的第9位位数据数据SM0 SM1工作方式工作方式功能功能波特率波特率0 0方式方式0同步移位寄存器同步移位寄存器fosc/120 1方式方式110位异步收发位异步收发定时器定时器T1的溢出率的溢出率1 0方式方式211位异步收发位异步收发fosc/

6、32,fosc/641 1方式方式311位异步收发位异步收发定时器定时器T1的溢出率的溢出率串行口的工作方式串行口的工作方式:2.电源管理寄存器PCON:SMODGF1GF0PDIDLPCON.7PCON.0空闲方式的控制位掉电方式控制位通用标志串行口波特率控制1、方式0:同步移位寄存器输入/输出方式. 串行数据通过RxD输入或输出, TxD输出同步脉冲。数据帧格式:D0D1D2D3D4D5. . . . .D6D7串行口的工作方式和波特率设置发送过程怎样启动一帧数据的发送?怎么检测一帧数据发送结束?单片机CPU怎么与串行口协调工作?怎么与外部接收设备同步?写SBUFD 17位0检测有效?NO

7、YES移位发送置TIDSBUF0写SBUF1DB接收过程接收条件(REN=1) and (RI=0)怎样启动一帧数据的接收过程?怎么知道一帧数据接收结束?单片机CPU怎么与外部发送设协调工作?条件成立?置RI接收最后1位YESYESNO移位寄存器移位寄存器最左一位为0?移位寄存器左移NO11111110串行口方式串行口方式0应用实例应用实例:1.方式方式0 下的下的串入串入并出或并入并出或并入-串出串出的使用.例.通过串行口扩展并行口依次循环点亮8 个发光二极管8051RXDTXDP1.0Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8STBCD4094SICLKCD4094工作模式:串行输入模

8、式:STB=0。 并行输出模式:STB=1。源程序如下源程序如下:按中断方式工作按中断方式工作. ORG 0000H LJMP START ORG 0023H LJMP SBI ORG 0050HSTART: MOV SCON , #00H MOV A , #01H MOV IE , #90H CLR P1.0 MOV SBUF , A SJMP $SBI : SETB P1.0 ACALL DELY CLR TI RL A CLR P1.0 MOV SBUF , A RETI END 按查询方式工作按查询方式工作: ORG 0000H LJMP START ;ORG 0023H ; LJMP

9、 SBI ORG 0050HSTART: MOV SCON , #00H MOV A , #01HLP: CLR P1.0 MOV SBUF , A JNB TI , $ CLR TI SETB P1.0 ACALL DELY RL A SJMP LP END 例. 串行口扩展,外接一片CD4014扩展 为8位并行口,输入8路开关信息,设有一开关提供联络, S=0请求输入。试编程将8位开关量存入片内30H单元.8051RXDTXDP1.0P1.1D1 D2 D3 D4 D5 D6 D7 D8P/SCD4014SICLKSP/S为控制端:P/S=0,则CD4014工作在 串行输出模式,P/S=1

10、,则CD4014工作并行输入模式。;程序如下程序如下: ORG 2000HWAT1: JB P1.1 , WAT1 SETB P1.0 ;并行输入开关信息;并行输入开关信息 CLR P1.0 ;串行输出到单片机;串行输出到单片机 MOV SCON , #10H;串口方式;串口方式0,接收允许。,接收允许。WAT2:JNB RI ,WAT2 CLR RI MOV A , SBUF MOV 30H , A SJMP $2.方式1:波特率可变的10位异步通信方式。由TxD端发送数据,RxD接收数据,一帧数据由1位起始位8位数据位和1位停止位组成。数据帧格式数据帧格式:D0 D1 D2 D3 D4 D

11、5 D6 D7 起始起始停止停止在发送和接收数据之前设置好发送方和接收方的波特率。在发送和接收数据之前设置好发送方和接收方的波特率。DSBUF0写SBUF1DB写SBUFD 8 17位0检测有效?NOYES最后移位1次输出停止位移位发送置TI怎样启动一帧数据的发送?怎么检测一帧数据发送结束?单片机CPU怎么与串口协调工作?怎么与外部接收设备协调?发送过程发送过程:DSBUF0写SBUF1DBc.接收过程:软件使REN=1.怎样启动一帧数据的接收过程?怎么知道一帧数据的 接收结束?单片机CPU怎么与串口协调工作?是起始位?移位接收接收最后一位置位RI起始位已移到最左?NOYESYESNORI&a

12、mp;SM2=0?或或RI=0&SM2=1&停停止位止位=1装入SBUFRB8 停止位移位寄存器1FFH2.方式2和方式3:这二种方式都是11异步通信方式,只是波特率不同,适合多机通信.在这两种方式下,数据由TxD 发送,RxD接收,一帧数据由1位起始位9位数据位和1位停止位组成.第9位保存在TB8中,可由软件设定为1或0,既可作为校验位,也可作为地址数据帧标识.(1)、数据帧格式:D0 D1 D2 D3 D4 D5 D6 D7 起始起始停止停止D8*发送过程写SBUF D触发器 TB87位0检测有效?NOYES最后移位1次输出停止位移位发送置TI是起始位?移位接收接收最后一位

13、置位RI起始位已移到最左?NOYESYESNORI=0与SM2=0?或SM2=1与接收的第九位=1装入SBUFRB8 第九位移位寄存器 1FFHc.接收过程接收过程:二二.波特率设定方法波特率设定方法:1.方式0的波特率: 波特率=fosc/122.方式2波特率:波特率=2SMOD32T1的溢出率3.方式1和方式3的波特率:波特率=2SMOD64fosc4.T1溢出率的计算:设Tc为定时器T1的溢出周期.(2n-X)12/foscTc=T1的溢出率=fsoc(2n-X)12即:波特率=2SMOD32fsoc(2n-X)12由此式可求出X,书中常用波特率一览表可供使用.单片机几种工作方式的比较:

14、发送数据: 执行一条写SBUF指令启动一帧数据的发送过程,一帧数据 发送完毕,串口置位中断请求标志TI,通知单片机。(1)方式0:写SCON使REN=1、RI=0,启动一帧数据的接收,一帧数据接收完毕,装载SBUF并置接收中断请求标志RI=1,通知单片机(SM2=0)。(2)方式1:写SCON使REN=1,启动串口工作,串口先测试当前数据是否为起始位,检查到起始位后逐位移入移位寄存器,若RI=SM2=0,装载SBUF,置位RI,且停止位送RB8,通知单片机。或RI=0 、SM2=1且接收的停止位为1时,装载SBUF,置位RI。接收数据:(3)方式2和方式3:写SCON使REN=1,启动串口工作

15、,串口先测试当前数据是否为起始位,检查到起始位后逐位移入移位寄存器,若RI=SM2=0,装载SBUF,且第九位数据送RB8,置位RI。若RI=0&SM2=1只有接收的第九位数据为1时方可装载SBUF,且第九位数据送RB8,置位RI,通知单片机。单片机串口发送程序的一般结构:单片机串口发送程序的一般结构:开始定时计数器T1方式2按波特率设定时初值启动T1按要求初始化SCON初始化SMOD开中断启动串口发送等待串口中断初始化数据地址指针初始化数据长度个数TI=1?清TI=0指向下一个数据数据发送完否?启动串口发送返回NOYESYESNO例:编一个数据发送程序,将片内RAM中20H2FH的数

16、据串行发送。串行口设定为方式2,TB8作校验位。 ORG 0000H LJMP SEND ORG 0023H LJMP SBI ORG 0030HSEND:MOV SCON , #80H MOV PCON ,#00H MOV R0 ,#20H MOV R2 , #10H SETB EA SETB ES MOV A ,R0 MOV C , P MOV TB8 , C MOV SBUF , A SJMP $ 主程序中断服务程序:SBI: PUSH PSW PUSH ACC JBC TI ,NEXT1 SJMP EXTURNNEXT1:DJNZ R2, NEXT SJMP RETURNNEXT:IN

17、C R0 MOV A ,R0 MOV C , P MOV TB8 , C MOV SBUF , ARETURN:POP ACC POP PSW RETI上题查询方式编程:上题查询方式编程: ORG 0000H LJMP SEND ORG 0030HSEND:MOV SCON , #80H MOV PCON ,#00H MOV R0 ,#20H MOV R2 , #10HLOOP:MOV A ,R0 MOV C , P MOV TB8 , C MOV SBUF , AWAIT:JBC TI , NEXT SJMP WAITNEXT:INC R0 DJNZ R2 , LOOP SJMP $2、80

18、51点对点串行通信应用举例:利用8051串行口可以进行两个8051单片机之间的串行异步通信.例:甲,乙两机双机通信,甲以查询方式发送数据,乙以中断方式接收数据,编写通信子程序.通信协议:*约定波特率:2400b/s(fosc=6MHz);约定工作方式1. *通信开始,甲机先发通信呼叫信号06H询问乙机可否 接收数据,乙机收到了呼叫后若同意接收,则发回00H 作答, 否则,发15H作答. *甲机只有在收到了乙机的应答00H后才发送数据.否则 继续呼叫.发送数据的格式:字节数n 数据1 数据2 数据3 数据n 校验和*乙机根据接收的校验和,判断接收数据的正确性,若正确,向甲机0FH,否则发F0H,

19、甲机收到了乙机的0FH信后发送结束,否则甲机重发直到乙机正确接收.甲机查询方式发送子程序:地址指针DPTR,长度计数器R7,校验计数器R6置初值开始定时器,串行口初始化 发呼叫信号06H等待乙机回答是00H?NOY发送字节长度数据发送数据发送完否?NY发送校验和等待乙机回答传送正确吗?Y返回求校验和求校验和NO资源安排:31H,30H为待发送数据块首地址的高低8位,2FH单元为待发送数据块的长度.R6为累加和寄存器,R7为数据块长度计数器.程序清单:FMT_T_S: MOV TMOD , #20H ;定时器1工作在方式2 MOV TH1 , #0FAH ;设置波特率 MOV TL1 , #0F

20、AH STEB TR1 MOV SCON , #50H ;串行口方式1启动接收 MOV PCON , #00H ;波特率为2400b/s;FMT_RAM: MOV DPH , 31H ;初始化DPTR MOV DPL ,30H MOV R6 , #00H ; 清累加和寄存器 MOV R7 , 2FH ;送字节数TX_ACK: MOV A , #06H ;发呼叫信号 MOV SBUF , AWAIT1: JBC TI , RX_YES ;等待发送完1个字节 SJMP WAIT1RX_YES: JBC RI , NEXT1 ;接收乙机应答 SJMP RX_YESNEXT1: MOV A, SBUF

21、 CJNE A ,#00H, TX_ACK;继续呼叫 MOV A , R7 ;向乙机发送要传送字节数 MOV SBUF , A ADD A , R6 ;求累加和 MOV R6 , AWAIT2: JBC TI , TX_NEWS SJMP WAIT2TX_NEWS: MOVX A, DPTR ;发送数据 MOV SBUF ,A ADD A , R6 ;求累加和 MOV R6 ,A INC DPTR ;修改地址WAIT3: JBC TI , NEXT2 ;等待发送完毕1字节 SJMP WAIT3NEXT2: DJNZ R7 ,TX_NEWS ;判断发送结束否TX_SUM: MOV A, R6 ;

22、发送累加和 MOV SBUF ,R6WAIT4: JBC TI , RX_0FH SJMP WAIT4RX_0FH: JBC RI , IF_0FH ;等待乙机回答 SJMP RX_0FH IF_0FH: MOV A ,SBUF CJNE A , #0FH , FMT_RAM ;判断传送是否正确 RET乙机中断方式接收子程序:中断服务程序关中断保护现场呼叫信号帧?Y是06H?向甲机发送00H清呼叫标志向甲机发送15HN送32H单元保存数据块长度帧?清长度发送标志数据帧?存数据到片外RAM形成累加和,地址指针加1是最后1位?Y清数据发送标志YNNY接收校验和传送正确?YN向甲机发回0FH清呼叫,

23、发送,数据标志.清累加和初始化数据地址30H,31H发F0H恢复现场,开中断返回YN资源安排:31H和30H待存放数据RAM地址的高低8位,32H数据块长度寄存器,33H累加校验和寄存.标志位:7F,7E,7D分别为呼叫标志,数据发送标志,校验和发送标志.;主程序主程序 ORG 00000H LJMP FMT_T_S ORG 0023H LJMP SERVE ORG 0050HFMT_T_S: MOV TMOD ,#20H ;初始化定时器T1的工作方式 MOV TH1, #0FAH ;波特率为2400b/s MOV TL1 , #0FAH MOV SCON , #50H ;方式2接收允许 MO

24、V PCON, #00H SETB TR1 ;启动定时器 SETB 7FH ;标志位初始化 SETB 7EH SETB 7DH MOV 31H ,#10H ;初始化数据地址 MOV 30H ,#00H MOV 33H ,#00H ;清累加和 SETB EA ;开中断 SETB ES ;转主程序 . . . . . . ;中断服务程序中断服务程序SERVE: CLR EA ;关中断 CLR RI ;清接收中断标志 PUSH DPH ;保护现场 PUSH DPL PUSH ACC JB 7FH , RX_ACK ;是呼叫信号吗? JB 7EH , RX_BYTES ;是数据块长度信号吗? JB 7

25、DH , RX_DATA ;是数据吗?RX_SUM: MOV A , SUBF ;接收校验和 CJNE A , 33H , TX_ERR ;判断是否正确,正确回发0FH, ;否则回发F0H TX_RIGHT: MOV A ,#0FH ;正确时应答 MOV SBUF , A WAIT1: JNB TI , WAIT1 CLR TI SJMP AGAINTX_ERR: MOV A , #0F0H ;错误时应答 MOV SBUF , AWAIT2: JNB TI , WAIT2 CLR TI SJMP AGAINRX_ACK: MOV A , SBUF ;判断是否是甲机的呼叫信号 XRL A , #

26、06H JZ TX_AGRRETX_NACK: MOV A , #15H MOV SBUF , A WAIT3: JNB TI , WAIT3 CLR TI SJMP RETURNTX_AGREE: MOV A , #00H ;向甲机发同意接收(00H)信号 MOV SBUF , AWAIT4: JNB TI , WAIT4 CLR TI CLR 7FH SJMP RETURNRX_BYTES: MOV A , SBUF ;接收数据块长度存32H单元 MOV 32H , A ADD A , 33H ;形成累加和 MOV 33H , A CLR 7EH ;清数据块长度标志 SJMP RETURN

27、RX_DATA: MOV DPH , 31H MOV DPL , 30H MOV A , SBUF ;接收数据 MOVX DPTR , A INC DPTR MOV 31H , DPH MOV 30H , DPL ADD A ,33H ;形成累加和 MOV 33H , A DJNZ 32H , RETURN ;数据没接收完中断返回, ;等待下次继续接收. CLR 7DH ;接收完,清数据接收标志 SJMP RETURNAGAIN: SETB 7FH SETB 7EH SETB 7DH. MOV 33H , #00H MOV 31H , #10H MOV 30H , #00H RETURN: POP ACC POP DPL POP DPH SETB

温馨提示

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

评论

0/150

提交评论