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

下载本文档

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

文档简介

1、第六讲第六讲 串行口应用串行口应用 一、串口组成及工作原理一、串口组成及工作原理异步接收异步接收/发送器发送器UART(Universal Asynchronous Receiver/Transmitter)用于串行全双工异步用于串行全双工异步通信,也可作同步寄存器使用。通信,也可作同步寄存器使用。TXD端发送数端发送数据,据,RXD端接收数据;两个发送缓冲器端接收数据;两个发送缓冲器SBUF(Serial Buffer), 用各自的时钟源控制发送、用各自的时钟源控制发送、接收数据。接收数据。串口基本组成示意图串口基本组成示意图 由所用指令是发送还是接收决定对哪个由所用指令是发送还是接收决定对

2、哪个SBUF操作操作工作原理工作原理 发送(输出):将数据写入发送发送(输出):将数据写入发送SBUFSBUF(只写不读),串口控制器按(只写不读),串口控制器按波特率发生器(定时器波特率发生器(定时器T1T1构成)提供的时钟速率把发送构成)提供的时钟速率把发送SBUFSBUF中的中的并行数据一位一位从并行数据一位一位从TXDTXD端输出。一帧数据结束时,硬件将端输出。一帧数据结束时,硬件将TITI置置”1”1”,TITI必须软件清零。必须软件清零。 发送为主动,只要发送为主动,只要SBUFSBUF中有数据,就发送。中有数据,就发送。 接收(输入):接收(输入):REN=1,RI=0,接收接收

3、SBUFSBUF(只读不写)。(只读不写)。接收接收 器按要求的波特率采样器按要求的波特率采样RXD ,待接收到一个完整的的字节后,待接收到一个完整的的字节后,就就 装入装入SBUFSBUF。 SBUFSBUF具有双缓冲作用,在具有双缓冲作用,在CPUCPU未读入一个接收数据前未读入一个接收数据前 就开始接收下一个数据,就开始接收下一个数据,CPUCPU要在下一个字节接收完毕前读取要在下一个字节接收完毕前读取SBUFSBUF中的数据。中的数据。数据接收完,硬件自动置数据接收完,硬件自动置RI=1,RI必须软件清零。必须软件清零。二、串行口有关的寄存器二、串行口有关的寄存器1、串行口控制寄存器、

4、串行口控制寄存器SCONSM0SM1=00SM0SM1=00,方式,方式0 0,移位寄存器输入,移位寄存器输入/ /输出方式。输出方式。SM0SM1=01SM0SM1=01,方式,方式1 1, 1010位异步通信方式。位异步通信方式。SM0SM1=10SM0SM1=10、1111,方式,方式2 2、3 3,1111位异步通信方式。位异步通信方式。RENREN串口允许接收位串口允许接收位:”1”:”1”允许接收允许接收,“0”,“0”禁止接收禁止接收, ,软件控制软件控制TB8:TB8:方式方式2 2、3 3时发送的第九个数据,可由软件置位或清零。时发送的第九个数据,可由软件置位或清零。RB8:

5、RB8:方式方式2 2、3 3时接收的第九个数据,方式时接收的第九个数据,方式1 1时接收的停止位。时接收的停止位。TITI接收中断标志,接收中断标志,RIRI发送中断标志发送中断标志SM0 SM1 SM2 REN TB8RB8TIRI2、电源控制寄存器、电源控制寄存器PCONSMOD GF1 GF0 PD IDL SMOD:波特率倍增位,:波特率倍增位,“0”原波特率,原波特率,“1”波特率波特率*2GF0、GF1:通用标志位:通用标志位PD:掉电方式位,:掉电方式位,PD=1,掉电方式。当检测到单片机有,掉电方式。当检测到单片机有故障时,置故障时,置PD为为1,单片机停止工作,内部,单片机

6、停止工作,内部RAM单元被保单元被保存。当电源恢复后,硬件复位存。当电源恢复后,硬件复位10ms即退出掉电方式。即退出掉电方式。IDL:待机方式位,:待机方式位,“1”待机方式,此时振荡器仍运行,并待机方式,此时振荡器仍运行,并向中断逻辑、串行口、定时向中断逻辑、串行口、定时/计数提供时钟,计数提供时钟,CPU时钟被阻时钟被阻断,断,CPU不工作,中断功能存在,不工作,中断功能存在,SP、PSW、ACC及通及通用寄存器被用寄存器被“冻结冻结”。采用中断可退出待机方式。采用中断可退出待机方式。三、串行口工作方式介绍三、串行口工作方式介绍串行口有四种工作方式:串行口有四种工作方式: 方式方式0 :

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

8、端引入的数据,8位数据接收完,硬件自动置位数据接收完,硬件自动置RI=1,必须软件清零。,必须软件清零。 方式方式0中中SCON寄存器中的寄存器中的SM2、TB8、RB8均无意义,均无意义,设为设为0。 方式方式1 : 一帧一帧10位异步通信方式,位异步通信方式,1位起始位位起始位 (0),8位数据位位数据位(低位在前低位在前),1位停止位位停止位(1),起,起始位、停止位自动加入,始位、停止位自动加入,TXD发送端,发送端,RXD接收接收端,波特率端,波特率=(2SMOD/32)*N(T1溢出率溢出率)。 发送:将数据写入发送:将数据写入SBUF,即起动发送,数据,即起动发送,数据由由TXD

9、输出,定发送完一帧信息时,硬件将输出,定发送完一帧信息时,硬件将TI置置1,必须软件清零。,必须软件清零。 接收:接收: REN=1时,串行口采样时,串行口采样RXD端,当检测端,当检测到到“1”到到“0”的变化时(即起始位),开始接的变化时(即起始位),开始接收,收,9位全部收齐时,此时若位全部收齐时,此时若RI=0,停止位为,停止位为“1”,便将接收的,便将接收的8位数据装入位数据装入SBUF,停止位,停止位送入送入RB8,置位,置位RI,若不满足上述条件,则接收,若不满足上述条件,则接收无效。重新接收无效。重新接收。 方式方式2、3: 一帧一帧11位异步通信方式。位异步通信方式。1位起始

10、位位起始位(0),8位位数据位数据位(低位在前低位在前),1位可编程位位可编程位0或或1,1位停止位位停止位(1)。 方式方式3:波特率波特率=(2SMOD/32)*N(T1溢出率溢出率), 方式方式2:波特率波特率=foscX2SMOD/64。 发送:将数据写入发送:将数据写入SBUF后,即启动发送后,即启动发送,发送完一帧信息发送完一帧信息时,硬件将时,硬件将TI置置1,必须软件清零。第九位来自,必须软件清零。第九位来自SCON中的中的TB8(软件置软件置1或清零或清零),作多机通信的标志位或数据的奇偶,作多机通信的标志位或数据的奇偶校验位。校验位。 接收:接收:REN=1时,采样时,采样

11、RXD端,当检测到端,当检测到“1”到到“0”的的变化时(即起始位),开始接收,在接收到第变化时(即起始位),开始接收,在接收到第9位数据后,位数据后,此时若此时若RI=0或或SM2=0时,第九位送入时,第九位送入RB8 ,8位数据装入位数据装入SBUF,置位,置位RI,若不满足上述条件,则不置位,若不满足上述条件,则不置位RI,接收无,接收无效。接收电路复位,重新检测效。接收电路复位,重新检测RXD从从“1”到到“0”的变化,的变化,重新接收数据。重新接收数据。四、波特率计算四、波特率计算 波特率即数据传送速率,每秒传送二进制数码的位数波特率即数据传送速率,每秒传送二进制数码的位数bit/s

12、。 串行口四种工作方式决定三种波特率串行口四种工作方式决定三种波特率 方式方式0,波特率为固定值,单片机时钟频率的,波特率为固定值,单片机时钟频率的1/12,即即fosc/12; 方式方式2有两种波特率,波特率有两种波特率,波特率=(2SMOD/64)fosc, 方式方式1和方式和方式3波特率是可变的,波特率是可变的, 波特率波特率=(2SMOD/32)*N(定时器溢出率定时器溢出率) 定时器溢出率定时器溢出率:1秒溢出的次数秒溢出的次数N,即定时时间的倒数,即定时时间的倒数N= fosc/(12*(2k-初值)初值) k定时器工作方式,定时器工作方式,=13、16、8;可根据要求波特率查表得

13、出定时器初值。可根据要求波特率查表得出定时器初值。五、串口编程五、串口编程1、串口驱动显示、串口驱动显示 单片机串口工作在方式单片机串口工作在方式0即移位寄存器方式时,串即移位寄存器方式时,串口外接一个串入口外接一个串入/并出的移并出的移位寄存器,就可以扩展一位寄存器,就可以扩展一个并行输出口。个并行输出口。例例:编写程序编写程序,使使LED轮流显轮流显示示.STB=0,8位并行数据输出端位并行数据输出端关闭关闭STB=1,8位并行数据输出端位并行数据输出端输出输出 MOV SCON,#00H MOV A,#01H LOOP:CLR P1.0 MOV SBUF,A JNB TI,$ CLR T

14、I SETB P1.0 LCALL DELAY RL A JMP LOOP#include sbit P1_0=P10;Delay();main()unsigned char nIndex=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;nCounter3000;nCounter+);#i

15、nclude sbit P1_0=P10;Delay();unsigned char nIndex=1;main()SCON=0X00;EA=1;ES=1;P1_0=0;SBUF=nIndex;for(;);void Serial() interrupt 4 using 0TI=0;P1_0=1;Delay();P1_0=0;nIndex=1;if(nIndex=0) nIndex=1;SBUF=nIndex;Delay()int nCounter;for(nCounter=0;nCounter3000;nCounter+);串口方式串口方式1的应用的应用例:例:f=11.0592M,波特率为

16、波特率为2400bps,编程单片机接收一个字节数据后将其,编程单片机接收一个字节数据后将其发送。发送。#include main() unsigned char temp; 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、双机通信(点对点)原理:、双机通信(点对点)原理:双机通信(点对点)利用单片机串行口实现两个单片双机通信(点对点)利用单片机串行口实现两个

17、单片机之间的串行异步通信。如果两个单片机相距很近机之间的串行异步通信。如果两个单片机相距很近(1.5m) ,将它们的串行口直接相连,即实现双机通,将它们的串行口直接相连,即实现双机通信;如果距离较远,可利用信;如果距离较远,可利用RS232(15m)、)、RS429、RS423/422、RS485标准总线接口进行通信标准总线接口进行通信(1200m)。)。2、RS232芯片介绍芯片介绍 RS232标准总线接口(标准总线接口(DB-9或或DB-25插座):单片插座):单片机工作电平为机工作电平为TTL(05V),),RS232标准电平(逻辑标准电平(逻辑1:-15V-5V;逻辑;逻辑0:+5V+15V);常用晶体管);常用晶体管MC1488、MC1489或或MAX232作作TTL与与RS232的电平的电平转换。转换。 RS-232 与与RS-485: RS-232 的操作方式是单驱动,的操作方式是单驱动,单接收,误码率较高,最大传输距离为单接收,误码率较高,最大传输距离为15M,最高数,最高数

温馨提示

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

评论

0/150

提交评论