单片机串行通信及应用_第1页
单片机串行通信及应用_第2页
单片机串行通信及应用_第3页
单片机串行通信及应用_第4页
单片机串行通信及应用_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机串行通信及应用第1页,共42页,2022年,5月20日,2点33分,星期二5.1 概 述1、按数据传输方向分类 1)单工方式数据只能向一个方向传输。 2)半双工方式允许数据分时两个方向传输。 第2页,共42页,2022年,5月20日,2点33分,星期二 3)全双工方式数据可以同时往两个相反的方向传输。第3页,共42页,2022年,5月20日,2点33分,星期二2)同步方式:每个数据位占用的时间都相等,发送机每一个基本的时间单位发送一位,接收机与发送机的时钟必须严格同步。其格式如图。2、按传输数据格式分类:异步和同步通信方式1)异步方式:用一个起始位表示字符的开始,停止位表示字符的结束。数

2、据位则在起始位之后,停止位之前,这样构成一帧,其格式如图。第4页,共42页,2022年,5月20日,2点33分,星期二3常用串行接口标准RS-232 RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯. 0:+5+15V, 1:在-5-15V 传送距离最大为约15米 最高速率为20kb/s 点对点第5页,共42页,2022年,5月20日,2点33分,星期二RS-422/485 RS-422、RS-485与RS-232不一样,数据信号采用差分传输方式,也称作平衡传输,它使用一对

3、双绞线,将其中一线定义为A,另一线定义为B。 1:A、B电压差在+2+6V 0:A、B电压差在-26V 在RS-485中还有一“使能”端,而在RS-422中这是可用可不用的第6页,共42页,2022年,5月20日,2点33分,星期二RS-422/485RS-422的最大传输距离为4000英尺(约1219米),最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。 RS-485比RS-422有改进, 总线上可多32个设备。第7页,共42页,2022年,5月20日,2点33分,

4、星期二通用串行总线USBUSB接口特点1. 接口类型一致 2. 速度快目前USB2.0速度达480MbpsM3. 接口数量无限 一个设备上如果有USB接口,那其它USB设备接到此口上和接到主机的USB接口上是一样的。USB可连接127个周边设备,所以说是“无限的”。4. 提供外设电源 5. 具有即插即用的功能 6. 具有热插拔功能 USB外设可以带电插拔功能。7. 传输距离5m第8页,共42页,2022年,5月20日,2点33分,星期二IEEE1394使用方便,支持热插拔,即插即用,无需设置设备ID号,从Win98 SE以上版本的操作系统开始内置IEEE1394支持核心,无需驱动程序。数据传输

5、速度快,IEEE1394a高达400Mbps,后续的IEEE1394b标准可将速度提升到800Mbps、1.6Gbps甚至3.2Gbps。自带供电线路,能提供840V可变电压,允许通过最大电流也达到1.5A左右,因此它能为耗电量要求小的设备进行供电。真正点对点连接(peertopeer),设备间不分主从,可直接实现两台DV间的数据传输或是多台电脑共享一台DV机,而且从理论上讲我们可以直接将IEEE1394接口DV机中的图像数据保存到IEEE1394接口的硬盘中。第9页,共42页,2022年,5月20日,2点33分,星期二5.2MCS-51的串行口第10页,共42页,2022年,5月20日,2点

6、33分,星期二第11页,共42页,2022年,5月20日,2点33分,星期二5.2MCS-51的串行口1、数据缓冲器SBUF 发送SBUF和接收SBUF共用一个地址99H。2、串行口控制寄存器SCON 寄存器的字节地址为98H,可位寻址。SCON格式如图。 SM0、SM1:控制串行口的工作方式 00 01 10 11 SM2:多机控制位,用于多机通讯。 REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。 TB8:发送的第9位数据位,可用作校验位和地址/数据标识位RB8:接收的第9位数据位或停止位TI: 发送中断标志,发送一帧结束,TI=1,必须软件清零RI: 接收中断标志,接

7、收一帧结束,RI=1,必须软件清零第12页,共42页,2022年,5月20日,2点33分,星期二3特殊功能寄存器PCON其字节地址为87H,没有位寻址功能,其中与串行接口有关的只有D7位。SMOD (PCON.7) :波特率倍增位。当SMOD=1时,波特率加倍;当SMOD=0时,波特率不加倍。第13页,共42页,2022年,5月20日,2点33分,星期二3、串行口的工作方式(1) 方式0:同步移位寄存器方式。用于扩展并行I/O接口。1.一帧8位,无起始位和停止位。2.RXD:数据输入/输出端。 TXD:同步脉冲输出端,每个脉冲对应一个数据位。3.波特率B = fosc/12如: fosc=12

8、MHz,B=1MHz,每位数据占1s。4.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。 接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。 发送时序写入SBUFRXD输出TXDTID0D1D2D3D4D5D6D7写REN=1RI=0RXD输入RI 接收时序(a)(b)第14页,共42页,2022年,5月20日,2点33分,星期二(2) 方式1:8位数据异步通讯方式。1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。 2.RXD:接收数据端。 TXD:发送数据端。3.波特率:用T1作为波特率发生器,B=(2SMOD/32)T1溢出率。4.发送:写入SB

9、UF,同时启动发送,一帧发送结束,TI=1。 接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1 (或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否则丢弃接收数据,不置位RI。当REN=1,CPU开始采样RXD引脚负跳变信号,若出现负跳变,才进入数据接收状态,先检测起始位,若第一位为0,继续接收其余位;否则,停止接收,重新采样负跳变。数据采样速率为波特率16倍频,在数据位中间,用第7、8、9个脉冲采样3次数据位,并3中取2保留采样值。第15页,共42页,2022年,5月20日,2点33分,星期二方式1串行发送接收时序图写入SBUF采样(a) 发送时序图TX

10、D数据输出TID0D1D2D3D4D5D6D7停止位起始位RXD输入数据(b) 接收时序图D0D1D2D3D4D5D6D7停止位起始位RI检测负跳变第16页,共42页,2022年,5月20日,2点33分,星期二(3) 方式2和方式3 9位数据异步通讯方式。1.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。2.RXD:接收数据端,TXD:发送数据端。3.波特率:方式2:BR=(2SMOD/64)fosc 。 方式3:BR=(2SMOD/32)T1溢出率 。4.发送:先装入TB8,写入SBUF并启动发送,发送结束,TI=

11、1。 接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1 (或SM2=0),将接收数据装入接收SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据,不置位RI。发送时序写入SBUFTXD输出TIRXD输入接收时序RID0D1D2D3D4D5D6TB8停止位起始位D7D0D1D2D3D4D5D6RB8停止位起始位D7检测负跳变第17页,共42页,2022年,5月20日,2点33分,星期二(4)计算波特率方式0为固定波特率:BR=fosc/12方式2可选两种波特率: BR=(2SMOD /64)fosc 方式1、3为可变波特率,用T1作波特率发生器。BR=(2SMOD/32)T1溢

12、出率 T1溢出率= fosc/(12 (256-x))串行口方式1、3,根据波特率选择T1工作方式,计算时间常数。T1选方式2: TH1=X= 28-(2SMOD fosc)/(1232BR)T1选方式1用于低波特率,需考虑T1重装时间常数时间。第18页,共42页,2022年,5月20日,2点33分,星期二简单示例设波特率为1200bps,求定时器初值X大小并进行初始化(设SMOD=0,fosc=12MHz) 1200=(1/32)*(fosc/(12*(256-x)) X=E6H MOV TMOD,#20H MOV TH1,#0E6H MOV TL1,#0E6H MOV PCON,#00H

13、MOV SCON,#50H 第19页,共42页,2022年,5月20日,2点33分,星期二5.3 双机通信5-3-1 主从机间的通信 1 双机串行异步通信(1)单片机与单片机间的串行异步通信接口设计 两台8031直接通信如图: 第20页,共42页,2022年,5月20日,2点33分,星期二两台8031采用RS232C总线通信如图: 第21页,共42页,2022年,5月20日,2点33分,星期二()单片机与PC系列微机间的异步串行通信接口设计 8031单片机与PC系列微机是两种不同类型的机种,它们的硬件结构不同,具有的电气特性也不一样,因此它们之间不能用导线直接连接,而要通过电平转换电路。 80

14、31单片机和PC机通过RS232C总线通信接口图如下: 第22页,共42页,2022年,5月20日,2点33分,星期二双机通信实验项目1:A机循环发送0、1、2给B机,B机收到0,对P1.0口线的LED取反,收到1对P1.1口线的LED取反,类推。项目2:利用8279的键盘、显示管理功能,A机按下8279管理的5个键,B机通过8279管理的数码管分别显示A、B、C、D、E。第23页,共42页,2022年,5月20日,2点33分,星期二项目1:发送机程序;发送机程序 ORG 0000H LJMP MAIN ORG 0010H MAIN: LCALL DELAY LCALL INITSYS MOV

15、 20H,#00H LOOP: LCALL SEND LCALL DELAY INC 20H CJNE 20H,#03H,LOOP MOV 20H,#00H AJMP LOOP SJMP $;发送子程序 SEND:MOV A,20H CLR TI MOV SBUF,A JNB TI,$ RET; 串口初始化程序INITSYS:MOV SCON,#50H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV PCON,#00H ;SMOD=0 SETB TR1 CLR EA RET ;延时子程序DELAY: MOV R6,#00HLOOP1: MOV R7,

16、#00H DJNZ R7,$ DJNZ R6,LOOP1 RET 第24页,共42页,2022年,5月20日,2点33分,星期二项目1:接收机程序 ORG 0000H LJMP MAIN ORG 0023HRECEIVE:CLR RI MOV A,SBUF P10: CJNE A,#00H,P11 CPL P1.0 AJMP BACK P11: CJNE A,#01H,P12 CPL P1.1 AJMP BACK P12: CPL P1.2 BACK:RETI ORG 0200H MAIN:MOV R0,#0FFH DJNZ R0,$ LCALL INITSYS SJMP $INITSYS:M

17、OV SCON,#50H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV PCON,#00H ;SMOD=0 SET TR1 SETB EA SETB ES RET 第25页,共42页,2022年,5月20日,2点33分,星期二项目2:发送机实验程序,含8279 ;发送机程序 DISCHAR EQU 3EH KEYVALUE EQU 3FH KEYA EQU 00H KEYB EQU 01H KEYC EQU 02H KEYD EQU 03H KEYE EQU 04H COM8279 EQU 4001H DAT8279 EQU 4000H KEYFL

18、AG BIT 20HORG 0000HMAIN :MOV R0,#0FFH DJNZ R0,$ ;开机延时 LCALL INITSYS ; 系统初始化 MOV 40H,#00H ;程序运行初始显示008279 MOV 41H,#00H ; MOV 42H,#08H MOV 43H,#02H MOV 44H,#07H MOV 45H,#09H LLOOP:LCALL KEY ;调键处理子程序 LCALL DISPLAY ;调显示子程序 JNB KEYFLAG ,LLOOP CLR KEYFLAG LCALL SOLVEKEY LCALL SEND ;调用发送子程序 AJMP LLOOP第26页,

19、共42页,2022年,5月20日,2点33分,星期二 ;发送子程序 SEND :PUSH ACC CLR TI MOV A,DISCHAR MOV SBUF ,A JNB TI ,$ POP ACC RET ;系统初始化子程序INITSYS:MOV TMOD,#20H ;设定时器工作方式 MOV TH1 ,#0F3H MOV Tl1 ,#0F3H ; MOV PCON,#80H ;设置波特率=2.4Kbps MOV SCON,#50h ;允许接收,10位异步通讯 CLR EA SETB TR1 LCALL INIT8279 ;8279初始化 RET ;8279初始化子程序INIT8279: M

20、OV DPTR,#COM8279 ;8279控制口MOV A,#0DFH ;清除显示RAM及FIFO RAMMOVX DPTR,ALOOP0:MOVX A,DPTRJB ACC.7,LOOP0 ;直到DU=0MOV A,#00HMOVX DPTR,A ;8*8左边输入,编码扫描键盘MOV A,#32HMOVX DPTR,A ;分频系数18 RET ;显示子程序DISPLAY:PUSH DPH PUSH DPL PUSH ACC MOV 30H,#80H MOV R7,#06H MOV R0,#40HDIS1 : MOV DPTR,#COM8279 MOV A,30H MOVX DPTR,A ;

21、准备对第0个显示RAM写数据据 MOV A,R0 MOV DPTR,#ZIXING MOVC A,A+DPTR ;取字形码 MOV DPTR,#DAT8279 MOVX DPTR,A ;送字形码 INC R0 ;修改显示缓冲区单元地址 INC 30H ;修改显示RAM地址 DJNZ R7,DIS1 POP ACC POP DPL POP DPH RETZIXING: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH第27页,共42页,2022年,5月20日,2点33分,星期二 ;键

22、值处理子程序KEY:PUSH DPH PUSH DPL PUSH ACC MOV DPTR,#COM8279 ;MOVX A,DPTR ;ANL A,#07H ;检查FIFO中有无键值JZ KEYBACK ;无键值,转KEYBACKMOV A,#40HMOVX DPTR,A ;写指令,要读FIFO RAM MOV DPTR,#DAT8279 ; MOVX A,DPTR ;读数据口,取键值 ANL A,#3FH SETB KEYFLAG MOV KEYVALUE,A ;送键值入键值缓冲区KEYBACK:POP ACC POP DPL POP DPH RET ;键功能处理子程序SOLVEKEY:P

23、USH ACC MOV A,KEYVALUEPKEYA: CJNE A,#KEYA,PKEYB MOV DISCHAR,#0AH MOV 40H,#0AH AJMP SKEYBACKPKEYB: CJNE A,#KEYB,PKEYC MOV DISCHAR,#0BH MOV 41H,#0BH AJMP SKEYBACKPKEYC: CJNE A,#KEYC,PKEYD MOV DISCHAR,#0CH MOV 42H,#0CH AJMP SKEYBACKPKEYD: CJNE A,#KEYD,SKEYBACK MOV DISCHAR,#0DH MOV 43H,#0DH AJMP SKEYBAC

24、KSKEYBACK: CLR KEYFLAG MOV KEYVALUE,#0FFH POP ACC RET第28页,共42页,2022年,5月20日,2点33分,星期二项目2:接收机实验程序,含8279 ;接收机程序 DISCHAR EQU 3EH COM8279 EQU 4001H DAT8279 EQU 4000H COMFLAG BIT 20H ORG 0000H LJMP MAIN ORG 0023H RECEIVE:CLR RI MOV A,SBUF MOV DISCHAR,A SETB COMFLAG RETIORG 0100HMAIN :MOV R0,#0FFH DJNZ R0,

25、$ ;开机延时 LCALL INITSYS ; 系统初始化 MOV 40H,#00H ;程序运行初始显示008279 MOV 41H,#00H ; MOV 42H,#08H MOV 43H,#02H MOV 44H,#07H MOV 45H,#09H LLOOP:LCALL DISPLAY ;调显示子程序 JNB COMFLAG,LLOOP CLR COMFLAG MOV 40H,DISCHAR AJMP LLOOP ;系统初始化子程序INITSYS:MOV TMOD,#20H ;设定时器工作方式 MOV TH1 ,#0F3H MOV Tl1 ,#0F3H ; MOV PCON,#80H ;设

26、置波特率=2.4Kbps MOV SCON,#50h ;允许接收,10位异步通讯 SETB EA SETB ES ;允许串口中断 SETB TR1 LCALL INIT8279 ;8279初始化 RET ;8279初始化子程序INIT8279: MOV DPTR,#COM8279 ;8279控制口MOV A,#0DFH ;清除显示RAM及FIFO RAMMOVX DPTR,A LOOP0:MOVX A,DPTRJB ACC.7,LOOP0 ;直到DU=0MOV A,#00HMOVX DPTR,A ;8*8左边输入,编码扫描键盘MOV A,#32HMOVX DPTR,A ;分频系数18 RET

27、第29页,共42页,2022年,5月20日,2点33分,星期二;显示子程序DISPLAY:PUSH DPH PUSH DPL PUSH ACC MOV 30H,#80H MOV R7,#06H MOV R0,#40HDIS1 : MOV DPTR,#COM8279 MOV A,30H MOVX DPTR,A ;准备对第0个显示RAM写数据据 MOV A,R0 MOV DPTR,#ZIXING MOVC A,A+DPTR ;取字形码 MOV DPTR,#DAT8279 MOVX DPTR,A ;送字形码 INC R0 ;修改显示缓冲区单元地址 INC 30H ;修改显示RAM地址 DJNZ R7

28、,DIS1 POP ACC POP DPL POP DPH RETZIXING: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH第30页,共42页,2022年,5月20日,2点33分,星期二5-3-2 多机通信接口教学目标教学要求:掌握多机通信的原理及实现过程,能设计简单的多机通信系统及程序。本节重点:多机通信原理本节难点:SM2、TB8、RB8在通信过程中的作用第31页,共42页,2022年,5月20日,2点33分,星期二多机通信的应用领域典型应用:校园卡系统、智能楼宇、自动温控

29、蔬菜大棚、大型粮库、工厂自动化;1打卡机 2打卡机 3打卡机 n打卡机第32页,共42页,2022年,5月20日,2点33分,星期二1MCS-51多机通信原理 串行口控制寄存器SCON中的SM2为多机通信接口控制位。串行口工作于方式2或3。 SM2多机通信位;TB8/RB8地址/数据区分位;若SM2为1,则仅当接收到的第9位数据RB8为1时,数据才装入SBUF,置位RI,请求CPU对数据进行处理;如果接收到的第9位数据RB8为0,则不产生中断标志RI,信息丢失,CPU不做任何处理。 当SM2为0时,则接收到一个数据后,不管第9位数据RB8是0还是1,都将数据装入接收缓冲器SBUF并置位中断标志

30、RI,请求CPU处理。关键是SM2与TB8、RB8的关系!第33页,共42页,2022年,5月20日,2点33分,星期二SM2、RB8与从机动作关系SM2RB8从 机 动 作10此时不能接收数据11能收到主机发的数据(地址信息)00进入串口中断,对接收的数据进行处理01进入串口中断, 对接收的数据进行处理第34页,共42页,2022年,5月20日,2点33分,星期二通信过程所有从机的SM2=1,处于只接收地址帧状态所有同学坐着听讲主机发地址信息,以第9位TB8=1表示发送的是地址老师喊同学名字从机接收到地址帧后与本机地址比较所有同学听到名字与自己的名字比较被寻址从机SM2=0,其作从机SM2=1不变名字相符的同学站起来主机发数据信息,对已被寻址的从机因SM2=0,可以接收主机发来的信息。其余从机因SM2=1不理睬主机。老师与站起的同学进行提问回答课堂交流被寻址的从机SM2置1.主机可另发地址帧与其它从机通信时 。回答问题的同学坐下多机通信动画演示第35页,共42页,

温馨提示

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

评论

0/150

提交评论