《单片机技术及应用项目化教程》课件第4章_第1页
《单片机技术及应用项目化教程》课件第4章_第2页
《单片机技术及应用项目化教程》课件第4章_第3页
《单片机技术及应用项目化教程》课件第4章_第4页
《单片机技术及应用项目化教程》课件第4章_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

项目四串行通信接口及应用

任务1两个单片机之间的沟通任务任务2单片机与计算机的沟通

——交通灯远程控制系统扩展任务实时发送动态密码

——银行动态密码的获取

任务1两个单片机之间的沟通任务

知识目标:掌握单片机P3口的TXD和RXD特殊功能的作用及其特征,以及如何用定时器1作为波特率发生器的方法。

能力目标:能正确设定通信方式及波特率等,能编写串行通信程序。

1.任务要求

要求单片机的串行口工作于方式1下,使甲机和乙机实现通信。

当甲机按钮按下后向乙机发送数字“2”,乙机收到后在数码管上显示出来,并回复数字“1”给甲机,甲机收到后也在数码管上显示出来;当乙机按钮按下后向甲机发送数字“3”,甲机收到后并在数码管上显示出来,甲机回复数字“4”给乙机,乙机收到后并在数码管上显示出来。

2.串行口通信的基本知识

1)概述

计算机与外界的信息交换称为通信。通信的基本方式可分为并行通信和串行通信两种。并行通信是指数据的各位同时在多根数据线上发送或接收。串行通信是指计算机与外设之间以及主机系统与主机系统之间数据的串行传送。串行通信示意图如图4-1所示,使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度,其只需要少数的几条线就可以在系统间交换信息。

目前串行通信在单片机双机、多机以及单片机与PC之间的通信等方面得到了广泛应用。图4-1串行通信示意图

2)串行口的结构

8051单片机有两个物理上独立的接收、发送缓冲器SBUF,两个缓冲器共用一个地址(99H)。通过对SBUF的读、写语句来区分是对接收缓冲器还是发送缓冲器进行操作。CPU在写SBUF时,操作的是发送缓冲器;在读SBUF时,操作的是接收缓冲器。

串行口控制寄存器SCON是一个特殊功能的寄存器,用以设定串行口的工作方式、接收/发送控制,以及设置状态标志。

SCON的各位定义如下:

SM0、SM1:串行口工作方式选择位,其状态组合所对应的工作方式如表4-1所示。表4-1SM0、SM1状态组合所对应的工作方式

SM2:多机通信控制器位。在方式0中,SM2必须设置为0。在方式1中,当处于接收状态时,若SM2 = 1,则只有接收到有效的停止位“1”时,RI才能被激活成“1”(产生中断请求)。在方式2和方式3中,若SM2 = 0,串行口以单机发送或接收方式工作,TI和RI以正常方式被激活并产生中断请求;若SM2 = 1,RB8 = 1,RI被激活并产生中断请求。

REN:串行接收允许控制位。该位由软件置位或复位。当REN = 1时,允许接收;当REN = 0时,禁止接收。

TB8:在方式2和方式3中,TB8是发送的第9位数据。该位由软件置位或复位。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=1表示地址,TB8=0表示数据。TB8还可用作奇偶校验位。

RB8:在方式2和方式3中,RB8存放接收到的第9位数据。RB8也可用作奇偶校验位。在方式1中,若SM2 = 0,则RB8是接收到的停止位。在方式0中,该位未用。

TI:发送中断标志位。TI = 1,表示已结束一帧数据发送。可由软件查询TI位标志,也可以向CPU申请中断。

注意:TI在任何工作方式下都必须由软件清0。

RI:接收中断标志位。RI = 1,表示一帧数据接收结束。可由软件查询RI位标志,也可以向CPU申请中断。

注意:RI在任何工作方式下都必须由软件清0。

在AT89C51中,串行发送中断TI和接收中断RI的中断入口地址都是0023H,因此在中断程序中必须由软件查询TI和RI的状态才能确定究竟是接收还是发送中断,进而作出相应的处理。单片机复位时,SCON所有位均清0。

3)电源控制寄存器PCON

PCON的各位定义如下:

SMOD:串行口波特率倍增位。在方式1~方式3中,若SMOD = 1,则串行口波特率增加一倍;若SMOD = 0,波特率不加倍。系统复位时,SMOD = 0。

(1)方式0:在方式0中,串行口作为同步移位寄存器使用。此时,SM2、RB8、TB8均应设置为0。发送:当TI = 0时,执行“MOVSBUF,A”,启动发送,8位数据由低位到高位从RXD引脚送出,TXD发送同步脉冲。发送完后,由硬件置位TI。

接收:当RI = 0、REN = 1时,启动接收,数据从RXD输入,TXD输出同步脉冲。8位数据接收完后,由硬件置位RI。可通过“MOVA,SBUF”读取数据。

方式0的波特率为fosc/12,即一个机器周期发送或接收一位数据。方式0并非是同步通信方式。它的主要用途是外接同步移位寄存器,以扩展并行I/O口。

(2)方式1:一帧10位的异步串行通信方式,包括1个起始位(0)、8个数据位和1个停止位(1),其帧格式如图4-2所示。图4-2帧格式示意图方式1输出如图4-3所示。

方式1输入如图4-4所示。

当TI = 0时,执行“MOVSBUF,A”指令后开始发送,由硬件自动加入起始位和停止位,构成一帧数据,然后由TXD端串行输出。发送完后,TXD输出线维持在“1”状态下,并将SCON中的TI置1,表示一帧数据发送完毕。

当RI = 0、REN = 1时,接收电路以波特率的16倍速度采样RXD引脚,如出现由“1”到“0”的跳变,则认为有数据正在发送。图4-3方式1输出图图4-4方式1输入图在接收到第9位数据(即停止位)时,必须同时满足以下两个条件:RI = 0和SM2 = 0或接收到的停止位为“1”,才把接收到的数据存入SBUF中,停止位送RB8,同时置位RI。若上述条件不满足,则接收到的数据不装入SBUF,被舍弃。在方式1下,SM2应设定为0。

方式1:

(3)方式2和方式3:这两种工作方式都是11位异步收发串行通信方式,两者仅在波特率上有所不同。

方式2:

方式3:

3.两个单片机之间通信的电路连接图

两个单片机之间通信的电路连接图如图4-5所示。图4-5两个单片机之间通信的电路连接图

4.两个单片机之间通信的软件设计

要求单片机的串行口工作于方式1下,使甲机和乙机实现通信。当甲机按钮按下后向乙机发送数字“2”,乙机收到后在数码管上显示出来,并回复数字“1”给甲机,甲机收到后也在数码管上显示出来;当乙机按钮按下后向甲机发送数字“3”,甲机收到后并在数码管上显示出来,甲机回复数字“4”给乙机,乙机收到后并在数码管上显示出来。方式1输出数据比较简单。当向SBUF写入一个字节后(TI = 0),从引脚TXD先发出起始位,然后是8个数据位,最后是停止位。发出停止位后,置位发送中断标志TI=1,完成一帧数据的发送。接收数据时,先将RI清0。当RI = 1时,说明已经接收到数据,此时可以从SBUF读取数据。

定时器T1作为波特率发生器时,工作在自动再装入的8位定时器方式2,这时溢出率取决于TH1中的值,即

表4-2所示为常用波特率与定时器的参数关系。表4-2常用波特率与定时器1的参数关系

1)甲机的软件设计

甲机的软件设计如下:

ORG 0000H

LJMP MAIN

ORG 0050H

MAIN: MOV SCON,#50H

MOV TMOD,#20H

MOV TL1,#0FDH ;时钟频率11.0592MHz

MOV TH1,#0FDH ;波特率9600b/s

SETB TCON.6

SETB TR1=1

CLR RI

LOOP0: JB P1.0,LOOP1

MOV SBUF,#2

LOOP2: JNB TI,LOOP2

CLR TI

LOOP1: JNB RI,LOOP0

MOV A,SBUF

CLR RI

MOV DPTR,#SEG

MOVC A,@A+DPTR

MOV P2,A

MOV SBUF,#4

LOOP3: JNB TI,LOOP3

CLR TI

LJMP LOOP0

SEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END

2)乙机的软件设计

乙机的软件设计如下:

ORG 0000H

LJMP MAIN

ORG 0050H

MAIN: MOV SCON,#50H

MOV TMOD,#20H

MOV TL1,#0FDH ;时钟频率11.0592MHz

MOV TH1,#0FDH ;波特率9600b/s

SETB TCON.6

SETB TR1=1

CLR RI

LOOP0: JB P1.0,LOOP1

MOV SBUF,#3

LOOP2: JNB TI,LOOP2

CLR TI

LOOP1: JNB RI,LOOP0

MOV A,SBUF

CLR RI

MOV DPTR,#SEG

MOVC A,@A+DPTR

MOV P2,A

MOV SBUF,#1

LOOP3: JNB TI,LOOP3

CLR TI

LJMP LOOP0

SEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END任务2单片机与计算机的沟通——交通灯远程控制系统

知识目标:掌握单片机P3口的TXD和RXD串行口与PC串行口的连接方法,学会正确接收PC的数据。

能力目标:能正确接收PC的数据指令,并执行该数据指令。

1.任务要求

单片机根据PC发出的数据指令,点亮/熄灭相应的交通灯。要求单片机的串行口工作于方式1下,波特率为9600b/s。

数据指令格式:一个字节,高6位的值分别对应单片机的P1.7~P1.2位的值,即

2.电路连接图

交通灯远程控制系统的电路连接图如图4-6所示。

注:PC串行口采用USB转TTL电平串行接口。图4-6交通灯远程控制系统的电路连接图

3.软件设计

软件设计如下:

ORG 0000H

LJMP MAIN

ORG 0050H

MAIN: MOV SCON,#50H

MOV TMOD,#20H

MOV TL1,#0FDH ;时钟频率11.0592MHz

MOV TH1,#0FDH ;波特率9600b/s

SETB TCON.6

SETB TR1=1

CLR RI

LOOP: JNB RI,LOOP

MOV A,SBUF

CLR RI

JNB ACC.0,LOOP

JNB ACC.1,LOOP

MOV P1,A

LJMP LOOP

END扩展任务实时发送动态密码——银行动态密码的获取

知识目标:掌握单片机P3口的TXD和RXD串行口与PC串行口的连接方法;学会正确接收PC的数据。

能力目标:能正确接收PC的数据指令,并执行该数据指令。

1.任务要求

单片机根据PC发出的4位实时动态密码,在液晶显示屏上显示。要求单片机的串行口工作于方式1下,波特率为9600b/s。

数据指令协议格式(5个字节)如下:

2.电路连接图

实时发送到达密码的电路连接图如图4-7所示。

注:PC串行口采用USB转TTL电平串行接口。图4-7实时发送动态密码的电路连接图

3.软件设计

软件设计如下:

ORG 0000H

LJMP MAIN

ORG 0050H

MAIN: MOV A,#30H;液晶显示初始化

LCALL SPD

DJNZ R0,INIT1

INIT2: MOV A,#38H

LCALL SPD

MOV A,#08H

LCALL SPD

MOV A,#01H

LCALL SPD

MOV A,#06H

LCALL SPD

MOV A,#0FH

LCALL SPD

MOV SCON,#50H ;串行口设置

MOV TMOD,#20H

MOV TL1,#0FDH ;时钟频率11.0592MHz

MOV TH1,#0FDH ;波特率9600b/s

SETB TCON.6

SETB TR1=1

CLR RI

LOOP: JNB RI,LOOP

MOV A,SBUF

CLR RI

CJNE A,#0F5H,LOOP ;判别帧头

LOOP1: JNB RI,LOOP1

MOV A,SBUF

CLR RI

MOV R0,A ;接收密码位1(ASCII字符)

LOOP2: JNB RI,LOOP2

MOV A,SBUF

CLR RI

MOV R1,A ;接收密码位2(ASCII字符)

LOOP3: JNB RI,LOOP3

MOV A,SBUF

CLR RI

MOV R2,A ;接收密码位3(ASCII字符)

LOOP4: JNB RI,LOOP4

MOV A,SBUF

CLR RI

MOV R3,A ;接收密码位4(ASCII字符)

MOV A,#01H ;液晶清屏

LCALL SPD

MOV A,R1 ;显示密码

LCALL DPD

MOV A,R1 ;显示密码

LCALL DPD

MOV A,R1 ;显示密码

LCALL DPD

MOV A,R1 ;显示密码

LCALL DPD

LJMP LOOP

CE: SETB P2.2

NOP

NO

温馨提示

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

评论

0/150

提交评论