第7章串口通信

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第7章AT89S51单片机的串行口2接收设备发送设备询问应答101011008位同时传送并行通信:传送的数据的各位同时发送,并排传输,同时被接收。控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。引言接收设备发送设备8位顺次传送D0D7串行通信传送数据的各位按分时顺序一位一位地传送(即一位一位的发送和接收)。特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。八个人站成一排一起通过八个人站成一纵队一一通过37.1.1串行通信的基本概念一、异步通信与同步通信1、异步通信异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。以帧作为传送单位,每一帧由起始位、数据位、校验位和停止位组成,结构如图。111001100101001001发送设备接收设备10100100011110011001间隙任意停止位数据位校验位起始位LSBMSB空闲下一字符起始位空闲一个字符帧42.同步方式同步方式仅在开始用若干字符作为同步号令,然后连续发送数据,如图所示。由于没有在每一个字符中,配置起始、停止位,所以结构紧凑,传输效率高、速度快,其组成如下图所示:同步传输方式比异步传输方式速度快,这是它的优势。但同步传输方式也有其缺点,即它必须要用一个时钟来协调收发器的工作,所以它的设备也较复杂。例如IIC通信,SPI通信等5二、串行通信的传输方向1、单工单工是指数据传输仅能沿一个方向,不能实现反向传输。2、半双工半双工是指数据传输可以沿两个方向,但需要分时进行。3、全双工全双工是指数据可以同时进行双向传输。接收发送时间1时间2发送接收发送接收发送接收发送接收单工半双工全双工6四、串行通信的错误校验1、奇偶校验在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。3、循环冗余校验2、代码和校验送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,相符则无差错,否则即认为传送过程中出现了差错。7五、传输速率与传输距离1、传输速率波特率bps(bitpersecond)定义:每秒传输数据的位数,即:1波特=1位/秒(1bps)如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位)10位×240个/秒=2400bps相互通信的甲乙双方必须具有相同的波特率,否则无法成功地完成串行数据通信。87.280C51的串行口有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H;接收器是双缓冲结构;发送缓冲器1个,因为发送时CPU是主动的,不会产生重叠错误。7.2.180C51串行口的结构≥1SBUF发送控制器接收控制器移位寄存器控制门TIRIATXDRXD去串口中断SMOD01TH1TL1÷2÷16SBUFT1溢出率9数据缓冲器SBUF发送数据通过指令MOVSBUF,A将数据写入SBUF,然后串口自动将数据按事先设置的方式及速率从TXD(P3.1)端口输出,数据发送完毕,串口向CPU申请中断,且通过硬件将TI置1,表示发送已经结束,等待写入第二帧数据。接收数据当有数据送给单片机串口时,串口按事先设置的方式及速率自动从端口RXD(P3.0)接收数据,数据校验正确后送SBUF,一帧数据接收完毕RI=1,串口向CPU请求中断且表示接收已经结束。单片机只要通过执行:MOVA,SBUF10串行口的控制寄存器MCS-51的串行口有四种工作方式,用户可以通过对串行控制寄存器SCON编程来设定。此外,还有波特率控制寄存器PCON,必须详细了解这些特殊功能寄存器,才能正确应用串行通信接口。1.串行口控制寄存器SCON特殊功能寄存器SCON的地址为98H,具有位地址,可位寻址,复位时为00H,其格式如下:SM0、SM1:串行口的方式选择位,见表7-1。11SM2:方式2和方式3的多机通信控制位;REN:允许串行接收位。TB8:在方式2和方式3中,发送的第9位数据,需要时由软件置位或复位。RB8:在方式2和方式3中,接收到的第9位数据;在方式1时,RB8是接收到的停止位;在方式0,不使用RB8。TI:发送中断标志。TI必须由软件清“0”RI:接收中断标志,RI必须由软件清“0”。12PCON中只有一位SMOD与串行口工作有关:SMOD(PCON.7)波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。PCON的其他位为掉电方式控制位,详见2.8节136.2.380C51串行口的工作方式一、方式0:串口扩展为并口1)波特率固定为发送—位数据等于一个机器周期。2)不论是发送还是接收,数据都是从RXD(P3.0)端出入。TXD端而作为同步移位脉冲输出端。3)工作于方式0时,可将串行接口扩展为并行接口。1、方式0输出D0D1D2D3D4D5D6D7写入SBUFRXD(数据)TXD(移位脉冲)TI(中断标志)12/oscf142、方式0输入REN=1RXD(数据输入)TXD(移位脉冲)RI=0D0D1D2D3D4D5D6D7方式0接收和发送电路74LS164RXDTXDP1.080C51CLRCLKABGND74LS165RXDTXDP1.080C51S/LCLKQGND15一、方式0必须注意:在接收时,除了设置SCON控制字为方式0外,还应设置允许接收控制位REN为“1”,清除RI中断标志,才能启动接收器工作。方式0工作时,必须使SCON控制字的SM2位(多机通信控制位)为“0”,从而不影响TB8和RB8位。由于波特率固定,故无需用定时器提供。但以中断方式传输数据时,CPU响应中断不会自动清除TI、RI标志,所以在中断服务程序中,必须由指令将TI、RI清“0”。16二、方式1:8位异步通信接口方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位(低位在前),1位停止位。停止位数据位8位起始位LSBMSB空闲空闲D0D71帧共10位1、方式1输出D0D1D2D3D4D5D6D7写入SBUF停止位TXDTI(中断标志)起始172、方式1输入D0D1D2D3D4D5D6D7停止位RXDRI(中断标志)起始位采样脉冲18(1)发送:CPU向发送缓冲器SBUF写入一个数据后,便启动串行口在TXD端输出帧信息,先发送起始位“0”,接着从低位开始依次输出8位数据,最后输出停止位。发送完一帧信息后,发送中断标志TI置“1”,向CPU请求中断。(2)接收:当允许接收位REN置“1”后,接收器便采样RXD端电平,当采样到“1”到“0”的跳变时,启动接收器接收。计数器的16个状态把1位时间等分成16份,并在第7、8、9个计数状态时,采样RXD电平。因此,每一位的数值采样三次,取其中至少有两次相同的值为确认值。启动后,如果三次采样的确认值不是“0”,则起始位无效,复位接收电路重新检测。如果确认值为“0”,起始位有效,则开始按从低位到高位的顺序接收一帧的数据信息。必须注意,在方式1接收中设置有数据辨识功能:只有同时满足以下两个条件时,接收到的数据才有效,才会将数据装入SBUF,并置RI为“1”,向CPU请求中断;否则,所接收的数据帧无效。当SM2=1时,接收到的停止位“1”装入RB8中。①RI=0。②接收到停止位为“1”。19方式1的特点:1)波特率可变串口波特率由定时器T1产生,T1工作于方式2,并决定于T1定时时间,而T1的定时时间决定于装入的时间常数N,因此可根据时间常数N推出波特率,即2)传送数据为8位,连同一位起始位、一位停止位组成一帧,即一帧为10位,发送由TXD输出,接收由RXD输入,可构成全双工的串行通信端口。例:设计波特率为4800b/s,晶振频率为11.0592MHz,定时器T1工作在方式2,SMOD=0,则计数器初值为。12)256(322NfOSCSMOD波特率20三、方式2和方式3方式2或方式3时为11位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚。方式2和方式3时起始位1位,数据9位(含1位附加的第9位,发送时为SCON中的TB8,接收时为RB8),停止位1位,一帧数据为11位。方式2的波特率固定为晶振频率的1/64或1/32,方式3的波特率由定时器T1的溢出率决定。停止位数据位9位起始位LSBMSB空闲空闲D0D71帧共11位RB8/TB8213.方式2、方式3串行口工作在方式2、方式3时,为9位异步通信口,1帧信息由11位组成,即1位起始位、8位数据D0~D7(低位在前)、1位可编程的第9位D8(发送时,第9位为SCON中的TB8;接收时,第9位为SCON中的RB8)及1位停止位,如图7-10所示。图7-10方式2、方式3数据格式(1)发送:当CPU向发送缓冲器SBUF写入一个数据后,便立即启动发送器发送。先发送起始位“0”,接着从低位开始依次输出8位数据,再发送SCON中的TB8,最后输出停止位。发送完一帧信息后,发送中断标志TI置“1”,向CPU请求中断。(2)接收:使用与方式1类似的方法识别起始位。必须注意,方式2、方式3接收中也设置有数据辨识功能:只有同时满足以下两个条件时,接收到的数据才有效,才能将接收到的数据装入SBUF和RB8,并置RI为“1”;否则,所接收的数据帧无效。①RI=0。②接收到的停止位为“1”。方式2、方式3的区别:方式2的波特率为fosc/32或fosc/64,而方式3的波特率可变。22三、串口工作方式2、3方式2、3的工作性能1)方式2波特率固定,并等于。方式3波特率计算方法同方式1,即等于。2)一帧数据为11位,包括1位起始位、8位数据位、1位可编程位、1位停止位。数据位低位在前高位在后,第9位可编程位发送时从SCON中的TB8取出,接收时第9位存SCON中的RB8。OSCSMODf642波特率12)256(322NfOSCSMOD波特率23第四节串口初始化编程一、计算波特率串口方式0串口方式1和串口方式3串口方式212/oscf波特率OSCSMODf642波特率12)256(322NfOSCSMOD波特率2425二、对SCON、PCON、TMOD初始化以设计一8051单片机控制系统为例,设主振频率为12MHz,要求串口发送数据为8位、波特率为1200bps.则初始化步骤为:1.先按波特率要求,计算T1的时间常数N,设SMOD=1。已知主振频率为12MHz,波特率为1200bps.,串口工作于方式1,按式7-2可求得N=203.92≈0CCH2.写出初始化程序MOVSCON,#50H;串行口工作于方式1MOVPCON,#80H;SMOD=1,MOVTMOD,#20H;T1工作方式2定时方式MOVTHl,#0CCH;设置时间常间为NMOVTLl,#0CCH;自动装入时间常数SETBTR1;启动T1返回本章首页26•【例7-1】电路如图所示,试编制程序按下列顺序要求每隔0.5秒循环操作。•①8个发光二极管全部点亮;•②从左向右依次暗灭,每次减少一个,直至全灭;•③从左向右依次点亮,每次亮一个;•④从右向左依次点亮,每次亮一个;•⑤从左向右依次点亮,每次增加一个,直至全部点亮;•⑥返回从②不断循环。7.3单片机串行口应用举例2728LIGHT:MOVSCON,#00H;串行口方式0CLRES;禁止串行中断MOVDPTR,#TAB;置发光二极管亮暗控制字表首址LP1:MOVR7,#0;置顺序编号0LP2:MOVA,R7;读顺序编号MOVCA,@A+DPTR;读控制字CLRP

1 / 41
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功