学习情景五AS串行通信-oweroin_第1页
学习情景五AS串行通信-oweroin_第2页
学习情景五AS串行通信-oweroin_第3页
学习情景五AS串行通信-oweroin_第4页
学习情景五AS串行通信-oweroin_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

学习情景五AT89S52串行通信

学习目标:了解串行通信的基本知识掌握串行口的工作方式掌握波特率的设计掌握串行口工作方式的应用掌握程序调试的基本方法和技巧。技能目标:会对串行口进行初始化。会计算串行口通信波特率。能够实现单片机与单片机之间、单片机和PC机之间的通信。项目一单片机点对点通信第一部分项目要求利用AT89S52实现单片机点对点通信。要求将存放在甲机的数据存储器20H—27H单元中数据,首先在甲机上显示,然后发送到PC机,进而再发送到乙机,以实现单片机与PC机和单片机与单片机之间的通信。

第二部分相关知识

一、串行通信基本知识

(一)串行通信的基本概念单工形式:数据只能单方向从一端向另一端传送;如:有线电视节目。发送端接收端数据线地线半双工形式:数据可以双向传送,但任一时刻只能向一个方向传送。既可分时双向传送数据。如:某些对讲机单工发送端接收端接收端发送端数据线地线半双工全双工形式:同时双向传送数据,因此,全双工配置是一对单向配置,它要求两端的通信设备都具有完整和独立的发送和接收能力。通信效率最高,适合于计算机之间的通信。

发送端接收端接收端发送端数据线地线全双工数据线(二)串行通信基本通信方式通信双方要正确的进行数据传输,需要解决何时开始传输、何时结束传输,以及数据传输速率等问题,这就是数据传输中的同步问题。通常,实现数据同步有两种方式:异步通信和同步通信。

1.异步通信:

数据一帧一帧地传送。发送端和接收端可以由各自的时钟控制数据的发送和接收,两个时钟源彼此独立,互不同步。数据的一帧:由一个字符代码组成。帧格式:一个字符由四部分组成:起始位、数据位、奇偶校验位和停止位。起始位(0):位于字符帧的开头,占用一位,用来通知接收设备一个待接收的字符开始到达。数据位:紧跟起始位后,5~8位数据(规定低位在前,高位在后)奇偶校验位(可省略),占一位,用于对字符传送作正确性检查,因此奇偶校验位是可选择的,共有三种可能,即奇偶校验、偶校验和无校验,由用户根据需要选定。停止位(1)停止位用来表征字符的结束。停止位可以是1位、1.5位或2位。接收端收到停止位后,知道上一字符已传送完毕2.同步通信

在一个数据块的开头使用同步字符。数据传送时使用同一频率的脉冲来实现发送端与接收端的严格时间同步。二、串行通信总线标准及其接口传输距离不同,可以选择不同的总线标准。89S5289S5289S5289S52如果是长距离传送,可采用RS-485标准。短距离传送,只需要TX、RX和GND三根线。距离在15米左右,采用RS-232标准接口。(一一))RS-232标标准准RS-232C标准准是是美美国国EIA((电电子子工工业业联联合合会会))与与BELL等等公公司司一一起起开开发发的的于于1969年年公1.RS-232C的的电电气气特特性性数据据线线上上的的信信号号电电平平mark(逻逻辑辑1)=-3~~-15Vspace(逻逻辑辑0)=+3~~+15V(2)控控制制和和状状态态ON(逻辑0)=+3~+15V(接通)OFF(逻辑1)=-3~-15V(断开)电平平转转换换RS-232C接口口采采用用双双极极性性信信号号、、公公共共地地线线和和负负逻逻辑辑;;不能和TTL电电平直直接相相连,,使用用时必必须进进行电电平转转换,,否则则将使使TTL电电路烧烧坏,,实际际应用用时必必须注注意!!在实实际应应用时时,必必须通通过专专用电电平转转换芯芯片进进行电电平转转换。。电平转转换芯芯片MC1488、、MC1489、MAX232MC1488可可实现现TTL→→RS-232的电电平转转换;;MC1489可可实现现RS-232→TTL的电电平转转换。。MAX232芯芯片可可完成成TTL到到EIA双双向电电平的的转换换89S5289S52通过MAX232实现RS-232C电平转换TTL到EIMAX232管管脚说说明如如下::①C1+、、C1-、、C2+、、C2-是是外外接接电电容容端端;;②R1IN、、R2IN则则是是2路路RS-232C电电平平信信号号接接收收输输入入端端;;③R1OUT、、R2OUT是是2路路转转换换后后的的TTL电电平平接接收收信信号号输输出出端端,,送送80④T1IN、T2IN是2路TTL电平发送输入端,接80S52的TxD发送端;⑤T1OUT、T2OUT是2路转换后的发送RS-232C电平信号输出端,接传输线;⑥V+经电容接电源十5V;⑦V-经电容接地。PC机机与与AT89S52单单片片机机串串行行通通信信电电路路图中外接电电解电容C1、C2、C3、、C4用于于电源电压压变换,提提高抗干扰扰能力,它它们可以取取相同数值值电容1.0μF/16V。电容容C5用于于对+5V电源的的噪声干扰扰进行滤波波,其值一一般为0.1μFAT89S52TXDRXDGNDC1+C1-C2+C2-++C1C2T1inT1outR1inR1outV­GNDVCCV+MAX232++C3C5C4+5VGNDTXDRS232RXDIBM-PC2.信号号接口引脚信号名功能1DCD载波检测2RXD接收数据3TXD发送数据4DTR数据终端准备就绪5GND信号地线6DSR数据准备完成7RTS发送请求8CTS发送清除9RI振铃指示(二)AT89S52串行口口结构与控控制1.串行行口的结构构SM0、SM1:串行口工作作方式控制制位,两位位对应四四种工作方方式,如下下表所示((fosc是晶振频频率)。2.串行行口控制(1)串SM2:多机通信控控制位,主主要用于方方式2和方方式3当串行口以以方式2或或方式3接接收时,如如SM2=1,则只只有当接收收到的第9位数据((RB8))为1,才才将接收到到的前8位位数据送入入SBUF,并置位位RI产生生中断请求求,否则将将接收到的的前8位数数据丢弃。。SM2=0,不论第第9位数据据为0还是是为1,都都将前8位位数据装入入SBUF中,并产产生中断申申请。在方式0时时,SM2=0。REN:REN=1,允许接收;REN=0,禁止接收。TB8:发送数据第第9位方式0,方式1,此位未使用方式2和方式3:TB8=1,说明该发送帧为地址帧。TB8=0,说明该发送帧为数据帧RB8:接收数据第9位方式2和方式3:RB8存放接收到的第9位数据,代表接收数据的某种特征。若SM2=1,RB8=1,说明收到帧为地址帧。TI:发送中断标标志在一帧数据据发送完时时置位。RI:接收中断标志在接收到一帧有效数据后,由硬件置位。RI=1,申请中断。RI不能自动清零,必须由软件清零。(2)电源源控制寄存存器PCONSMOD—串行口波特率的倍增位当SMOD=1时,串行口波特率加倍。系统复位时,SMOD=0。三、AT89S52串行口工工作方式(一)串行行口波特率率设计1.波特特率波特率的定定义是每秒钟传传送二进制制数码的位位数(亦称称比特数),单位是是b/s。。假设数据传传送速率是是120字符/s,而每个字字符格式包包含10个个代码(1个起始位位、1个终终止位、8个数据位位)。这时时,传送的的波特率为为(10b//字符符)××120字字符//s=1200b/s每一位位代码的的传送送时间间Td为波特率率的倒倒数。2.波波特特率设设计方式0波特率率方式0波特率率=fosc/12方式2波特率率方式2波特率率=(2SMOD/64)××foscSMOD为0时,波波特率率等于于振荡荡器频频率的的1/64SMOD为1时,波波特率率等于于振荡荡器频频率的的1/32。方式1和方式式3的波特特率串行口口方式式1和方式式3的波波特率=2smod/32×(定时器1溢出率)

例如振荡频频率fosc=11.0596MHZ,若若SMOD=0,通通信波波特率率为9600波波特,,则X=256-[11.0596××106×(1+0)]/(9600××384)=253=FDH初始化化程序序如下下:MOVTMOD,#20H;;设T1为为定时时方式式2MOVTHl,,#0FDH;;设定定波特特率为为9600bit//sMOVTLl,,#0FDHSETBTRl;;启启动定定时器器MOVPCON,#00H;;SMOD=0MOVSCON,#50H;;串串行口口工作作在方方式1(二))串行行口工工作方方式1.工工作作方式式0当SM0SMl=00时,串串行接接口选选择工工作方方式0,为同同步移移位寄寄存器器输入发送完置中断标志TI为1,请求中断。在再次发送数据之前,必须由软件清TI为0。接收前前置REN=1和RI=0,,当8位数数据接接收结结束,,RI被置置“1”,,可通通过指指令MOVA,SBUF将将数据据读入入。下图采采用一一个串串入并并出移移位寄寄存器器,TXD连接接串行行口输输出移移位寄寄存器器164的的时钟钟端,,RXD连连接164的输输入端端,P1.0连连接164的CLR选通通端。。89S5274LS164根据硬硬件连连接,,方式式0发发送数数据程程序如如下::SETBPMOVSCON,#00H;串口工作在方式0MOVA,#DATAMOVSBUF,A;发送数据JNBTI,$ ;等待发送完?CLRTI ;清除TI中断标志CLRP1.0 ;关闭74LS1642.工工作作方式式1工作方方式1,SM0SMl=01,为可可变波波特率率的8位异步步通信信方式式。发送数数据由由TXD端输出出,接接收数数据由由RXD端输入入。方式1以10位为一一帧传传输,,设有有1个起始始位(0),8个数据据位和和1个停止位位(1)。其帧格格式起始始位(0),8个数据位位和1个停止位位(1)。发送时,,数据从从TXD端输出,,当数据据写入发发送缓冲冲器SBUF后,启动动发送器器发送。。当发送送完一帧帧数据后后,置中中断标志志TI为1。方式1所传送的的波特率率取决于于定时器器1的溢出率率和PCON中的SMOD位。接收时,,由REN置1,允许接【例5.1】89S52串行行口按双双工方式式收发ASCII字符符,甲机机发送的的字符从从外部RAM的的1000H开开始,检检测到结结束字符符0AH就结束束发送,,乙机将将接收的的字符放放在内部部RAM的30H开始始的空间间。要求求通信的的波特率率为9600波波特,用用中断方方式编写写通信程程序。主程序::MOVTMOD,#20H;;定时时器1设设为工作作方式2MOVTLl,,#0FDH;;定时器器初值MOVTHl,,#0FDH;;8位重重装值SETBTRl;;启启动定时时器1MOVSCON,#50H;;将串串行口设设置为方方式1,,REN=lMOVDPTR,#DPTRMOVR0,#30H;接收数据区首址送R0SETBESSETB EA;开中断ACALL SEND;先发送一个字符L00P:SJMP$;等待中断发送子程程序SEND:CLRTIMOVA,@DPTR;;取发发送数据据到AINCDPTR;;修改发发送数据据指针MOVSBUF,A;;发发送ASCII码CJNEA,,#0AH,SEN1;是否是是结束字字符CLRES;;关闭串串口中断断SEN1:RET;;返回回中断服务务程序ORG0023H;;串串行口中中断入口口AJMPRSI;;转至中中断服务务程序ORG0100HRSI::JNBRI,SEN;;TI=1,为为发送中中断ACALLREV;;RI=1,,为接收收中断SJMPNEXT;;转至至统一的的出口SEN::ACALLSEND;;调用发发送子程程序NEXT:RETI;;中断返返回接收子程程序REV::CLRRIMOVA,SBUF;读出接接收缓冲冲区内容容MOV@R0,A;读读入接收收缓冲区区INCR0;;修改改接收数数据指针针CJNEA,#0AH,RES;;是否是是结束字字符CLRES;;关闭闭串口中中断RES::RET;;返回3.工工作方式式2SM1SM0=10,串行接接口选择择工作方方式2。方式2是是11位位异步通通信方式式,每帧帧数据由由1个起起始位““0”、、9个数数据位和和1个停停止位““1”共共11构构成。其其中发送送的第9位由SCON的TB8提供供,接收收的第9位存在在SCON的RB8位位。其波波特率是是固定的的为fosc/32或或fosc/64。方式2发发送:CPU执执行一条条写入SBUF的指令令就启动动串行口口的发送送,并把把TB8的内容容装入发发送寄存存器的第第9位。。首先发发送起始始位0,,此后每每经过一一个时钟钟周期产产生一个个移位脉脉冲,并并且由TXD输输出一个个数据位位,当11位数数据全部部发送后后,使TI置1。方式2接接收:接接收过程程和方式式1类似似,当REN=1时,,允许串串行口接接收数据据。数据据由RXD端输输入,接接收11位数据据。在方方式2的的接收中中,若RI=0,SM2=0或接接收到的的第9位位数据为为1,成成立则RI=1,8位位数据进进入SBUF,,第九位位进入RB8。。若不满足足上述两两个条件件则接收收到的信信息将丢丢失,不不再恢复复,也不不置位RI。【例5.2】设设计一个个发送程程序,将将片内RAM30H~3FH中的数数据串行行发送,,串行口口设定为为方式2状态,,TB8作奇偶偶校验位位。在数数据写入入发送缓缓冲器之之前,先先将数据据的奇偶偶位P写写入TB8,这这时第9位数据据作奇偶偶校验用用。程序清单单如下::TRT::MOVSCON,##80H;;方方式2设设定MOVPCON,##80H;;取波特特率为fosc/32MOVR0,,#30HMOVR7,,#10H;;数据长长度10HLOOP:MOVA,@R0;;取数据据送AMOVC,,PSW.0;;MOVTB8,CMOVSBUF,,A;;数据据送SBUF,,启动发发送WAIT:JBCTI,CONT;;判断断发送结结束否SJMPWAITCONT:INCR0DJNZR7,LOOPRET四、串行行口通信信应用举举例(一)双双机通信信应用举举例1.通通信双方方的协议议(1)通通信双方方的波特特率均为为9600波特特,均工工作在串串口方式式1。甲甲机发送送,乙机机接收。。(2)甲机机开始发送送时,先发发一个呼叫叫信号“0FH”,,乙机接收收后,若同同意接收数数据就发一一个应答信信号“01H”。(3)当甲甲机接到““01H””后,开始始发送数据据。假设发发送的数据据块首地址址是片内RAM40H,数数据块长度度64H。。数据块发发送结束后后,发送累累加校验和和。累加校校验和是指指数据块中中每个字节节的算术累累加和。(4)乙机机接收数据据并存在数数据缓冲区区。假设数数据缓冲区区的首地址址是片内RAM40H。乙乙机在接收收过程中对对接收的数数据块也作作算术累加加和,并与与甲机发送送的累加和和作比较,,若相等则则表示接收收正确,给给甲机发““00H””;若不等等则表示接接收不正确确,给甲机机发“FFH”,请请求重发。。(5)甲甲机收到到“00H”后后,结束束发送,,否则将将数据重重发一次次。2.查询询方式下下的通信信程序甲机发送送子程序序:ATX::MOVTMOD,,#20H;;设设T1为为定时方方式2MOVTHl,#0FDH;;设定波波特率为为9600bit/sMOVTLl,#0FDHMOVPCON,,#00HSETBTRl;;启启动定时时器T1MOVSCON,,#50H;;串串行口初初始化ATXl:MOVA,#0FH;;发送呼呼叫信号号MOVSUBF,,AATWl:JBCTI,ATRlSJMPATWl;;等等待发送送出去ATR1:JBCRI,,ATR2;;等待乙乙机应答答SJMPATRlATR2:MOVA,SBUF;;接收应应答信号号XRLA,#01HJNZATX1;乙机机未准备备好,继继续呼叫叫ATX2:MOVR0,#40H;数数据块首首地址送送R0MOVR2,#64H;;数数据块长长度送R2MOVR3,,#00H;;清清校验和和寄存器器ATX3:MOVA,@R0;;发送送一个数数据字节节MOVSBUF,AMOVA,R3ADDA,@R0;;求求校验和和MOVR3,AINCR0;;修改改地址指指针ATW2:JBCTI,,ATX4SJMPATW2ATX4:DJNZR2,ATX3;判数数据块发发送完否否MOVA,R3;;发发送校验验和MOVSBUF,AATW3:JBCTI,ATR3SJMPATW3ATR3:JBCRI,ATR4;等等待乙机机应答SJMPATR3ATR4:MOVA,SBUFJNZATX2;;若乙乙机回答答出错,,则重发发RET接收子程程序:BRXD:MOVTMOD,#20H;;设T1为定定时方式式2MOVTHl,#0FDH;;设设定波特特率为9600bit/sMOVTLl,#0FDHMOVPCON,,#00HSETBTRl;;启动定定时器T1MOVSCON,,#50H;;串串行行口口设设为为方方式式1BRXl::JBCRI,,BRX2;;等等待待甲甲机机呼呼叫叫信信号号SJMPBRXlBRX2::MOVA,,SBUFXRLA,,#0FHJNZBRXl;;判呼呼叫信信号是是否正正确BTXl::MOVA,,#01H;;发应应答信信号MOVSBUF,ABWl:JBCTI,,BRX3SJMPBWlBRX3::MOVR0,,#40H;;R0指向向接收收数据据缓冲冲区首首址MOVR2,#64H;;数数据块块长度度送R2MOVR3,#00H;;校验验和单单元清清零BRX4::JBCRI,,BRX5SJMPBRX4BRX5::MOVA,SBUFMOV@R0,,A;;接收收的数数据转转存INCR0ADDA,,R3;;求校校验和和MOVR3,ADJNZR2,,BRX4;;判判数据据块接接收完完否BW2:JBCRI,,BRX6;;接接收甲甲机校校验和和SJMPBW2BRX6::MOVA,SBUFXRLA,,R3;;比比较校校验和和JZBENDMOVA,,#0FFH;;校校验和和不等等,发发错误误标志志MOVSBUF,ABW3:JBCTI,,AGAIN;;转重重

温馨提示

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

评论

0/150

提交评论