第六讲 串行口应用_第1页
第六讲 串行口应用_第2页
第六讲 串行口应用_第3页
第六讲 串行口应用_第4页
第六讲 串行口应用_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

第六讲串行口应用

一、串口组成及工作原理

异步接收/发送器UART(UniversalAsynchronousReceiver/Transmitter)用于串行全双工异步通信,也可作同步寄存器使用。TXD端发送数据,RXD端接收数据;两个发送缓冲器SBUF(SerialBuffer),用各自的时钟源控制发送、接收数据。串口基本组成示意图

由所用指令是发送还是接收决定对哪个SBUF操作工作原理

发送(输出):将数据写入发送SBUF(只写不读),串口控制器按波特率发生器(定时器T1构成)提供的时钟速率把发送SBUF中的并行数据一位一位从TXD端输出。一帧数据结束时,硬件将TI置”1”,TI必须软件清零。发送为主动,只要SBUF中有数据,就发送。

接收(输入):REN=1,RI=0,接收SBUF(只读不写)。接收器按要求的波特率采样RXD,待接收到一个完整的的字节后,就装入SBUF。SBUF具有双缓冲作用,在CPU未读入一个接收数据前就开始接收下一个数据,CPU要在下一个字节接收完毕前读取SBUF中的数据。数据接收完,硬件自动置RI=1,RI必须软件清零。二、串行口有关的寄存器1、串行口控制寄存器SCONSM0SM1=00,方式0,移位寄存器输入/输出方式。SM0SM1=01,方式1,10位异步通信方式。SM0SM1=10、11,方式2、3,11位异步通信方式。REN串口允许接收位:”1”允许接收,“0”禁止接收,软件控制TB8:方式2、3时发送的第九个数据,可由软件置位或清零。RB8:方式2、3时接收的第九个数据,方式1时接收的停止位。TI接收中断标志,RI发送中断标志SM0SM1SM2RENTB8RB8TIRI2、电源控制寄存器PCONSMODGF1GF0PDIDLSMOD:波特率倍增位,“0”原波特率,“1”波特率*2GF0、GF1:通用标志位PD:掉电方式位,PD=1,掉电方式。当检测到单片机有故障时,置PD为1,单片机停止工作,内部RAM单元被保存。当电源恢复后,硬件复位10ms即退出掉电方式。IDL:待机方式位,“1”待机方式,此时振荡器仍运行,并向中断逻辑、串行口、定时/计数提供时钟,CPU时钟被阻断,CPU不工作,中断功能存在,SP、PSW、ACC及通用寄存器被“冻结”。采用中断可退出待机方式。三、串行口工作方式介绍串行口有四种工作方式:

方式0:同步移位寄存器方式,8位数据,波特率为fosc/12,外接串并移位寄存器可将数据通过串/并转换输出。发送(输出):将数据写入发送SBUF,串口将8位数据以波特率为fosc/12从RXD输出,同时TXD端输出同步脉冲,一帧数据8位结束时,硬件将TI置“1”,必须软件清零。接收(输入):REN=1,RI=0,接收器以fosc/12的波特率采样RXD端引入的数据,8位数据接收完,硬件自动置RI=1,必须软件清零。方式0中SCON寄存器中的SM2、TB8、RB8均无意义,设为0。

方式1:一帧10位异步通信方式,1位起始位

(0),8位数据位(低位在前),1位停止位(1),起始位、停止位自动加入,TXD发送端,RXD接收端,波特率=(2SMOD/32)*N(T1溢出率)。发送:将数据写入SBUF,即起动发送,数据由TXD输出,定发送完一帧信息时,硬件将TI置1,必须软件清零。接收:REN=1时,串行口采样RXD端,当检测到“1”到“0”的变化时(即起始位),开始接收,9位全部收齐时,此时若RI=0,停止位为“1”,便将接收的8位数据装入SBUF,停止位送入RB8,置位RI,若不满足上述条件,则接收无效。重新接收。方式2、3:一帧11位异步通信方式。1位起始位(0),8位数据位(低位在前),1位可编程位0或1,1位停止位(1)。方式3:波特率=(2SMOD/32)*N(T1溢出率),

方式2:波特率=foscX2SMOD/64。发送:将数据写入SBUF后,即启动发送,发送完一帧信息时,硬件将TI置1,必须软件清零。第九位来自SCON中的TB8(软件置1或清零),作多机通信的标志位或数据的奇偶校验位。接收:REN=1时,采样RXD端,当检测到“1”到“0”的变化时(即起始位),开始接收,在接收到第9位数据后,此时若RI=0或SM2=0时,第九位送入RB8,8位数据装入SBUF,置位RI,若不满足上述条件,则不置位RI,接收无效。接收电路复位,重新检测RXD从“1”到“0”的变化,重新接收数据。四、波特率计算

波特率即数据传送速率,每秒传送二进制数码的位数bit/s。串行口四种工作方式决定三种波特率⑴方式0,波特率为固定值,单片机时钟频率的1/12,即fosc/12;⑵方式2有两种波特率,波特率=(2SMOD/64)fosc,⑶方式1和方式3波特率是可变的,波特率=(2SMOD/32)*N(定时器溢出率)定时器溢出率:1秒溢出的次数N,即定时时间的倒数N=fosc/(12*(2k-初值)

k定时器工作方式,k=13、16、8;可根据要求波特率查表得出定时器初值。五、串口编程1、串口驱动显示单片机串口工作在方式0即移位寄存器方式时,串口外接一个串入/并出的移位寄存器,就可以扩展一个并行输出口。例:编写程序,使LED轮流显示.STB=0,8位并行数据输出端关闭STB=1,8位并行数据输出端输出MOVSCON,#00HMOVA,#01HLOOP:CLRP1.0MOVSBUF,AJNBTI,$CLRTISETBP1.0LCALLDELAYRLAJMPLOOP#include<reg51.h>sbitP1_0=P1^0;Delay();main(){ unsignedcharnIndex=1; SCON=0X00; for(;;) {

if(nIndex==0)nIndex=1; P1_0=0; //在发送数据时关闭74LS164的显示

SBUF=nIndex;

while(!TI); TI=0; P1_0=1; //避免暂态输出,等一个字节数据输出完再在LED上显示

Delay();

nIndex<<=1; }}Delay(){

int

nCounter;

for(nCounter=0;nCounter<3000;nCounter++);}#include<reg51.h>sbitP1_0=P1^0;Delay();unsignedcharnIndex=1;main(){ SCON=0X00; EA=1; ES=1; P1_0=0; SBUF=nIndex; for(;;);} voidSerial()interrupt4using0{ TI=0; P1_0=1; Delay(); P1_0=0;

nIndex<<=1;

if(nIndex==0)nIndex=1; SBUF=nIndex; }Delay(){ int

nCounter;

for(nCounter=0;nCounter<3000;nCounter++);}串口方式1的应用例:f=11.0592M,波特率为2400bps,编程单片机接收一个字节数据后将其发送。#include<reg51.h>main(){unsignedchartemp;PCON=0X00;

SCON=0X50;TMOD=0X20;TH1=0XF4;TL1=0XF4;TR1=1;for(;;){while(!RI);RI=0;temp=SBUF;SBUF=temp;

while(!TI);TI=0;}}六、双机通信介绍

1、双机通信(点对点)原理: 双机通信(点对点)利用单片机串行口实现两个单片机之间的串行异步通信。如果两个单片机相距很近(1.5m),将它们的串行口直接相连,即实现双机通信;如果距离较远,可利用RS232(15m)、RS429、RS423/422、RS485标准总线接口进行通信(1200m)。2、RS232芯片介绍

RS232标准总线接口(DB-9或DB-25插座):单片机工作电平为TTL(0~5V),RS232标准电平(逻辑1:-15V~-5V;逻辑0:+5V~+15V);常用晶体管MC1488、MC1489或MAX232作TTL与RS232的电平转换。

RS-232与RS-485:RS-232的操作方式是单驱动,单接收,误码率较高,最大传输距离为15M,最高数据速率为200KbpS,且不能连接多个外部设备。RS-485,操作方式是差分型的,数据传输更加安全可靠,还可以同时连接32个外部设备,最大传输距离可达120

温馨提示

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

评论

0/150

提交评论