《单片机串行通信及应用精选PPT.ppt》由会员分享,可在线阅读,更多相关《单片机串行通信及应用精选PPT.ppt(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机串行通信及应用第1页,此课件共42页哦5.1概概述述1、按数据传输方向分类 1)单工方式数据只能向一个方向传输。2)半双工方式允许数据分时两个方向传输。第2页,此课件共42页哦 3)全双工方式数据可以同时往两个相反的方向传输。第3页,此课件共42页哦2)同步方式:每个数据位占用的时间都相等,发送机每一个基本的时间单位发送一位,接收机与发送机的时钟必须严格同步。其格式如图。2、按传输数据格式分类:异步和同步通信方式1)异步方式:用一个起始位表示字符的开始,停止位表示字符的结束。数据位则在起始位之后,停止位之前,这样构成一帧,其格式如图。第4页,此课件共42页哦3常用串行接口标准nRS-23
2、2 RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯.0:+5+15V,1:在-5-15V 传送距离最大为约15米 最高速率为20kb/s 点对点第5页,此课件共42页哦RS-422/485 RS-422、RS-485与RS-232不一样,数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B。1:A、B电压差在+2+6V 0:A、B电压差在-26V 在RS-485中还有一“使能”端,而在RS-422中这是可用可不用的第6页,此课件共
3、42页哦RS-422/485RS-422的最大传输距离为4000英尺(约1219米),最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。RS-485比RS-422有改进,总线上可多32个设备。第7页,此课件共42页哦通用串行总线USBnUSB接口特点接口特点1.接口类型一致 2.速度快目前USB2.0速度达480MbpsM3.接口数量无限 一个设备上如果有USB接口,那其它USB设备接到此口上和接到主机的USB接口上是一样的。USB可连接127个周边设备,所以说是“无限
4、的”。4.提供外设电源 5.具有即插即用的功能 6.具有热插拔功能 USB外设可以带电插拔功能。7.传输距离5m第8页,此课件共42页哦IEEE1394使用方便,支持热插拔,即插即用,无需设置设备ID号,从Win98 SE以上版本的操作系统开始内置IEEE1394支持核心,无需驱动程序。数据传输速度快,IEEE1394a高达400Mbps,后续的IEEE1394b标准可将速度提升到800Mbps、1.6Gbps甚至3.2Gbps。自带供电线路,能提供840V可变电压,允许通过最大电流也达到1.5A左右,因此它能为耗电量要求小的设备进行供电。真正点对点连接(peertopeer),设备间不分主从
5、,可直接实现两台DV间的数据传输或是多台电脑共享一台DV机,而且从理论上讲我们可以直接将IEEE1394接口DV机中的图像数据保存到IEEE1394接口的硬盘中。第9页,此课件共42页哦5.2MCS-51的串行口的串行口第10页,此课件共42页哦第11页,此课件共42页哦5.2MCS-51的串行口的串行口1、数据缓冲器SBUF 发送SBUF和接收SBUF共用一个地址99H。2、串行口控制寄存器SCON 寄存器的字节地址为98H,可位寻址。SCON格式如图。SM0、SM1:控制串行口的工作方式 00 01 10 11 SM2:多机控制位,用于多机通讯。REN:允许接收控制位,REN=1,允许接收
6、;REN=0,禁止接收。TB8:发送的第9位数据位,可用作校验位和地址/数据标识位RB8:接收的第9位数据位或停止位TI:发送中断标志,发送一帧结束,TI=1,必须软件清零RI:接收中断标志,接收一帧结束,RI=1,必须软件清零第12页,此课件共42页哦3特殊功能寄存器PCON其字节地址为87H,没有位寻址功能,其中与串行接口有关的只有D7位。SMOD(PCON.7):波特率倍增位。当SMOD=1时,波特率加倍;当SMOD=0时,波特率不加倍。第13页,此课件共42页哦3、串行口的工作方式(1)方式0:同步移位寄存器方式。用于扩展并行I/O接口。1.一帧8位,无起始位和停止位。2.RXD:数据
7、输入/输出端。TXD:同步脉冲输出端,每个脉冲对应一个数据位。3.波特率B=fosc/12如:fosc=12MHz,B=1MHz,每位数据占1s。4.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。发发送送时时序序写入写入SBUFRXD输出输出TXDTID0D1D2D3D4D5D6D7写写REN=1RI=0RXD输入输入RI 接接收收时时序序(a)(b)第14页,此课件共42页哦(2)方式1:8位数据异步通讯方式。1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。2.RXD:接收数据端。TXD:发送数据端
8、。3.波特率:用T1作为波特率发生器,B=(2SMOD/32)T1溢出率。4.发送:写入SBUF,同时启动发送,一帧发送结束,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页哦方式1串行
9、发送接收时序图写入写入SBUF采样采样(a)发送时序图发送时序图TXD数据输出数据输出TID0D1D2D3D4D5D6D7停止位停止位起始位起始位RXD输入数据输入数据(b)接收时序图接收时序图D0D1D2D3D4D5D6D7停止位停止位起始位起始位RI检测检测负跳变负跳变第16页,此课件共42页哦(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/
10、32)T1溢出率。4.发送:先装入TB8,写入SBUF并启动发送,发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1(或SM2=0),将接收数据装入接收SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据,不置位RI。发发送送时时序序写入写入SBUFTXD输出输出TIRXD输入输入接接收收时时序序RID0D1D2D3D4D5D6TB8停止位停止位起始位起始位D7D0D1D2D3D4D5D6RB8停止位停止位起始位起始位D7检测检测负跳变负跳变第17页,此课件共42页哦(4)计算波特率方式0为固定波特率:BR=fosc/12方式2可选两种波特率:BR=(2SM
11、OD/64)fosc 方式1、3为可变波特率,用T1作波特率发生器。BR=(2SMOD/32)T1溢出率 T1溢出率=fosc/(12 (256-x))串行口方式1、3,根据波特率选择T1工作方式,计算时间常数。T1选方式2:TH1=X=28-(2SMOD fosc)/(1232BR)T1选方式1用于低波特率,需考虑T1重装时间常数时间。第18页,此课件共42页哦简单示例n设波特率为1200bps,求定时器初值X大小并进行初始化(设SMOD=0,fosc=12MHz)1200=(1/32)*(fosc/(12*(256-x))X=E6H MOV TMOD,#20H MOV TH1,#0E6H
12、MOV TL1,#0E6H MOV PCON,#00H MOV SCON,#50H 第19页,此课件共42页哦5.3双机通信双机通信5-3-1主从机间的通信主从机间的通信 1 双机串行异步通信(1)单片机与单片机间的串行异步通信接口设计 两台8031直接通信如图:第20页,此课件共42页哦两台8031采用RS232C总线通信如图:第21页,此课件共42页哦()单片机与PC系列微机间的异步串行通信接口设计 8031单片机与PC系列微机是两种不同类型的机种,它们的硬件结构不同,具有的电气特性也不一样,因此它们之间不能用导线直接连接,而要通过电平转换电路。8031单片机和PC机通过RS232C总线通
13、信接口图如下:第22页,此课件共42页哦双机通信实验n项目1:nA机循环发送0、1、2给B机,B机收到0,对P1.0口线的LED取反,收到1对P1.1口线的LED取反,类推。n项目2:n利用8279的键盘、显示管理功能,A机按下8279管理的5个键,B机通过8279管理的数码管分别显示A、B、C、D、E。第23页,此课件共42页哦项目1:发送机程序;发送机程序 ORG 0000H LJMP MAIN ORG 0010H MAIN:LCALL DELAY LCALL INITSYS MOV 20H,#00H LOOP:LCALL SEND LCALL DELAY INC 20H CJNE 20H
14、,#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,#00H DJNZ R7,$DJNZ R6,LOOP1 RET 第24页,此课件共42页哦项目1:接收机程序 ORG 00
15、00H 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:MOV SCON,#50H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV PCON,#00H ;SMOD=0 SET TR1
16、SETB EA SETB ES RET 第25页,此课件共42页哦项目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 KEYFLAG BIT 20HORG 0000HMAIN :MOV R0,#0FFH DJNZ R0,$;开机延时 LCALL INITSYS ;系统初始化 MOV 40H,#00H ;程序运行初始显示008279 M
17、OV 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页,此课件共42页哦;发送子程序 SEND :PUSH ACC CLR TI MOV A,DISCHAR MOV SBUF,A JNB TI,$POP ACC RET ;系统初始化子程序INITSYS:MOV TMOD,
18、#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:MOV 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左边输入
19、,编码扫描键盘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 ;准备对第0个显示RAM写数据据 MOV A,R0 MOV DPTR,#ZIXING MOVC A,A+DPTR ;取字形码 MOV DPTR,#DAT8279 MOVX DPTR,A ;送字形码 INC R0 ;修改显示缓冲区单元地址 INC 30H ;修改显示RAM地址
20、 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页哦;键值处理子程序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 MO
21、V DPTR,#DAT8279 ;MOVX A,DPTR ;读数据口,取键值 ANL A,#3FH SETB KEYFLAG MOV KEYVALUE,A ;送键值入键值缓冲区KEYBACK:POP ACC POP DPL POP DPH RETn ;键功能处理子程序SOLVEKEY:PUSH 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 SKEYBA
22、CKPKEYC:CJNE A,#KEYC,PKEYD MOV DISCHAR,#0CH MOV 42H,#0CH AJMP SKEYBACKPKEYD:CJNE A,#KEYD,SKEYBACK MOV DISCHAR,#0DH MOV 43H,#0DH AJMP SKEYBACKSKEYBACK:CLR KEYFLAG MOV KEYVALUE,#0FFH POP ACC RET第28页,此课件共42页哦项目2:接收机实验程序,含8279;接收机程序 DISCHAR EQU 3EH COM8279 EQU 4001H DAT8279 EQU 4000H COMFLAG BIT 20H ORG
23、 0000H LJMP MAIN ORG 0023H RECEIVE:CLR RI MOV A,SBUF MOV DISCHAR,A SETB COMFLAG RETIORG 0100HMAIN :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 DISPLAY ;调显示子程序 JNB COMFLAG,LLOOP CLR COMFLAG
24、 MOV 40H,DISCHAR AJMP LLOOP;系统初始化子程序INITSYS:MOV TMOD,#20H ;设定时器工作方式 MOV TH1,#0F3H MOV Tl1,#0F3H ;MOV PCON,#80H ;设置波特率=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,
25、A LOOP0:MOVX A,DPTRJB ACC.7,LOOP0 ;直到DU=0MOV A,#00HMOVX DPTR,A ;8*8左边输入,编码扫描键盘MOV A,#32HMOVX DPTR,A ;分频系数18 RET 第29页,此课件共42页哦;显示子程序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+
26、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,0F8HDB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH第30页,此课件共42页哦5-3-2多机通信接口多机通信接口教学目标n教学要求:掌握多机通信的原理及实现过程,能设计简单的多机通信系统及程序。n本节重点:多机通信原理n本节难
27、点:SM2、TB8、RB8在通信过程中的作用第31页,此课件共42页哦多机通信的应用领域典型应用:校园卡系统、智能楼宇、自动温控蔬菜大棚、大型粮库、工厂自动化;1打卡机 2打卡机 3打卡机 n打卡机第32页,此课件共42页哦1MCS-51多机通信原理多机通信原理 串行口控制寄存器串行口控制寄存器SCONSCON中的中的SM2SM2为多机通信接口控制位。为多机通信接口控制位。串行口工作于方式串行口工作于方式2 2或或3 3。SM2SM2多机通信位;多机通信位;TB8/RB8TB8/RB8地址地址/数据区分位数据区分位;若若SM2SM2为为1 1,则仅当接收到的第,则仅当接收到的第9 9位数据位数
28、据RB8RB8为为1 1时,数据时,数据才装入才装入SBUFSBUF,置位,置位RIRI,请求,请求CPUCPU对数据进行处理;如果接收对数据进行处理;如果接收到的第到的第9 9位数据位数据RB8RB8为为0 0,则不产生中断标志,则不产生中断标志RIRI,信息丢失,信息丢失,CPUCPU不做任何处理。不做任何处理。当当SM2SM2为为0 0时,则接收到一个数据后,不管第时,则接收到一个数据后,不管第9 9位数据位数据RB8RB8是是0 0还是还是1 1,都将数据装入接收缓冲器,都将数据装入接收缓冲器SBUFSBUF并置位中断标志并置位中断标志RIRI,请,请求求CPUCPU处理。处理。关键是
29、SM2与TB8、RB8的关系!第33页,此课件共42页哦SM2、RB8与从机动作关系SM2RB8从 机 动 作10此时不能接收数据11能收到主机发的数据(地址信息)00进入串口中断,对接收的数据进行处理01进入串口中断,对接收的数据进行处理第34页,此课件共42页哦通信过程所有从机的所有从机的SM2=1SM2=1,处于只接收地址帧状态,处于只接收地址帧状态所有同学坐着听讲主机发地址信息,以第主机发地址信息,以第9 9位位TB8=1TB8=1表示发送的是地址表示发送的是地址老师喊同学名字从机接收到地址帧后与本机地址比较从机接收到地址帧后与本机地址比较所有同学听到名字与自己的名字比较被寻址从机被寻
30、址从机SM2=0SM2=0,其作从机,其作从机SM2=1SM2=1不变不变名字相符的同学站起来主机发数据信息,对已被寻址的从机因主机发数据信息,对已被寻址的从机因SM2=0SM2=0,可以接收主机发来的信,可以接收主机发来的信息。其余从机因息。其余从机因SM2=1SM2=1不理睬主机。不理睬主机。老师与站起的同学进行提问回答课堂交流被寻址的从机被寻址的从机SM2SM2置置1.1.主机可另发地址帧与其它从机通信时主机可另发地址帧与其它从机通信时 。回答问题的同学坐下多机通信动画演示第35页,此课件共42页哦2多机通信系统设计多机通信系统设计 设多机通信系统主、从机晶振为6MHz,波特率为2400
31、bps,以方式3进行多机串行通信。每次通信时主机先发送对应的从机地址,然后发一个字节数据。RS-485从机0#主机 RS-485RS-485从机1#RS-485从机n#图1 多机通信系统硬件结构第36页,此课件共42页哦主机软件设计-初始化子程序INIT:MOVTMOD,#20H MOV TH1,#0F9H;波特率为2400bps MOV TL1,#0F9H MOV SCON,#0F0H;方式3,SM2=1,允许接收 SETBTR1 RET第37页,此课件共42页哦主机软件设计-通信子程序流程返回置地址信息标志发地址置数据信息标志发数据开始图2主机通信子程序流程图第38页,此课件共42页哦从机
32、软件设计-初始化程序INIT:MOVTMOD,#20H MOVTH1,#0F9H;设置波特率为2400 MOVTL1,#0F9H MOVSCON,#0F0H;方式3,SM2=1,允许接收 SETBTR1 SETBES;允许串行口中断 SETBEAWAIT:SJMP WAIT;听号 第39页,此课件共42页哦从机软件设计-通信子程序 数据?接收并保存数据YN 清接收数据标志 准备收地址信息接收地址 呼本机?准备接收数据Y清中断标志返回 开始图3 从机通信程序流程图N第40页,此课件共42页哦从机串行中断通信程序SIO:CLRRIPUSHPSW ;现场保护PUSHACC MOVA,SBUF;接收串行数据XRLA,#ADDR;判断是否与本机地址相符JNZBACK;不相符则返回CLRSM2;相符则SM2为0CLR ES ;关串口中断,避免中断嵌套MOVA,SBUF;接收数据WAIT:JNBRI,WAIT CLR RI MOV R0,A ;保存数据 SETB SM2 ;恢复多机通信,SETB ES ;开串口中断BACK:POPACC ;恢复现场POPPSWRETI第41页,此课件共42页哦习题nP140 第6、9题 第42页,此课件共42页哦