任务六串行通信接口.

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

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

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

资源描述

任务六串行通信接口任务分析:单片机与单片机之间的串口通信硬件单片机串行通信接口的结构串口的工作方式软件串口应用程序的编写编译、下载、调试编译软件:keil或者Wave概述通信:单片机与外界进行信息交换通信方式:并行通信:数据的各位同时发送或接收;速度快,传输线多,价格贵,近距离串行通信:数据一位一位顺序发送或接收速度慢,传输线少,较经济,远距离概述通信:并行,串行通信;串行通信:同步通信:按数据块传输,对硬件要求高异步通信:按字符传输,硬件结构简单同步字符1同步字符2起始数据块(若干字节)校验符1校验符2结束帧异步串行通信的字符格式起始位数据位[0~(n1)位]奇偶位停止位起始位位时间概述⑶奇偶效验位—用于对字符的传送作正确性检查,奇偶效验位是可选择的,有3种可能:奇效验、偶效验和无效验,由用户选定。⑴起始位—开始一个字符的传送的标志位。起始位使数据线处于“0”状态。⑵数据位—起始位之后传送的数据信号位。在数据位中,低位在前(左)高位在后(右)。字符编码方式的不同,数据位可以是5、6、7或8位。⑷停止位—用以标志一个字符的结束,它对应于“1”状态。停止位在一帧的最后,它可能是1、1.5或2位,在实际中根据需要确定。概述⑸位时间—一个格式位的时间宽度。⑹帧(frame)—从起始位开始到停止位结束的全部内容。帧是一个字符的完整通信格式,因此也就把串行通信的字符格式称之为帧格式。半双工制式:发送、接收不能同时进行。串行通信的制式全双工制式:发送、接收同时进行。甲机乙机甲机乙机概述信号的调制和解调通信距离15m,可直接通信。通信距离15m,信号发生畸变,采用调制解调器寄存器串行接口TTL电平寄存器串行接口TTL电平计算机A计算机BRS-232电平标准近程串行通信概述数字信号计算机MODEM计算机电话线MODEM远程串行通信模拟信号数字信号概述串行通信的数据传输速率波特率:异步通信中,每秒钟传送的二进制数的位数。bps(位/秒)通信协议:通信方式、波特率、命令码的约定MCS-51单片机串行口可编程的全双工串行通信接口可用作UART(通用异步接收和发送器)也可用作同步移位寄存器数据缓冲寄存器SBUF输入移位寄存器串行控制寄存器SCONT1作为波特率发生器CPU波特率发生器+SBUF门TXDRXD串行口中断接收控制器发送控制器移位寄存器TIRISBUFT1MCS-51单片机串行口接收方式:串行数据通过引脚RXD(P3.0)进入。接收寄存器之间还有移位寄存器,从而构成了双缓冲结构,避免出现帧重叠错误,即在下一帧数据来时,前一帧数据还没有读走。发送方式:串行数据通过TXD(P3.1)送出。发送数据时,由于CPU是主动的,不会发生帧重叠错误,发送电路不需双缓冲结构,可以提高数据发送速度。MCS-51单片机串行口串行通信控制寄存器串行控制寄存器SCON(98H)SM0SM1SM2RENTB8RB8TIRISM0,SM1:工作方式定义位(定义4种方式):SM0SM1工作方式功能描述波特率0008位同步移位寄存器fosc/1201110位UART可变10211位UARTfosc/64和fosc/3211311位UART可变MCS-51单片机串行口SM2:多机通信控制位。REN:允许串行接收位。由软件置1或清0。=1允许接收;=0禁止接收SM0SM1SM2RENTB8RB8TIRITB8:发送数据的第9位(D8)。由软件置位或复位。=1地址帧;=0数据帧RB8:接收数据的第9位(D8)。功能同TB8。TI:发送中断标志位。硬件置位,软件复位。TI=1时,可申请中断或软件查询。RI:接收中断标志位。硬件置位,软件复位。RI=1时,可申请中断或软件查询。MCS-51单片机串行口电源控制寄存器PCON位序D7D6D5D4D3D2D1D0位符SMOD///GF1GF0PDIDSMOD:是串行口波特率的倍增位。当SMOD=1时,串行口波特率加倍。系统复位时,SMOD=0。中断允许寄存器IEES=0禁止串行中断ES=1允许串行中断串口工作方式0串行数据由RXD(P3.0)输入/出,低位在前高位在后;同步移位脉冲由TXD(P3.1)输出方式0:同步移位寄存器8位数据为1帧,每个机器周期收(发)1位,波特率固定为fosc/12。用于扩展I/O口串口工作方式1方式1:10位UART,波特率可调。接收:•使REN=1允许从RXD接收数据。•当接收完1帧数据后,RI=1,申请中断,通知CPU从SBUF取走数据。发送:•数据从TXD输出,数据写入SBUF,启动发送。•当发送完1帧数据后,TI=1,申请中断,通知CPU发送下一帧数据。串口工作方式1溢出率波特率1322SMODTT1作波特率发生器时,用定时方式2(自动加载功能)可以避免通过程序反复装入初值所引起的定时误差,使波特率更加稳定。假定计数初值为X,则T1溢出周期为:12fosc*(256-X)串口工作方式1)256(12322SMODXfosc波特率溢出率为溢出周期的倒数。波特率计算公式为:先确定波特率,再计算T1的计数初值,然后进行T1的初始化。计数初值的计算公式为:X=2SMOD×fosc32×12×波特率256-上网找串口波特率与定时器初值的计算软件串口工作方式1方式1应用:只能用于双机通信,不能用于多机通信。例3、编程实现单片机A与单片机B的串口通信。要求单片机采用方式1中断发送和接收,T1方式2作波特率发生器,波特率为4800bps,fosc=6MHz。(单片机A发送数据FFH给单片机B,同时接收单片机B发送的数据55H,并都在P1口所连的LED上显示。分析:(1)根据波特率计算T1初值;(2)初始化T1:TMOD、TH1、TL1、TR1(3)初始化串口:SCON、PCON、EA、ES、REN串口工作方式1单片机A程序:#includereg51.hunsignedcharsenddata,rcvdata;voidmain(){TMOD=0x20;TL1=0xfd;TH1=0xfd;TR1=1;//初始化T1SCON=0x50;PCON=0x00;//初始化串口EA=1;ES=1;//开串口中断senddata=0xff;SBUF=senddata;//串口发送数据while(1){P1=rcvdata;//P1口显示接收数据}}串口工作方式1voidser_int()interrupt4//串口中断服务子程序{if(RI)//是接收中断{rcvdata=SBUF;//读取SBUF数据RI=0;//清接收中断标志位}elseif(TI)//是发送中断{TI=0;//清发送中断标志位SBUF=senddata;//串口发送数据}}串口工作方式1单片机B程序:#includereg51.hunsignedcharsenddata,rcvdata;voidmain(){TMOD=0x20;TL1=0xfd;TH1=0xfd;TR1=1;//初始化T1SCON=0x50;PCON=0x00;//初始化串口EA=1;ES=1;//开串口中断senddata=0x55;SBUF=senddata;//串口发送数据while(1){P1=rcvdata;//P1口显示接收数据}}串口工作方式1voidser_int()interrupt4//串口中断服务子程序{if(RI)//是接收中断{rcvdata=SBUF;//读取SBUF数据RI=0;//清接收中断标志位}elseif(TI)//是发送中断{TI=0;//清发送中断标志位SBUF=senddata;//串口发送数据}}作业题1.单片机A定时发送数据单片机B;单片机B接收到数据后送到P1口所连的LED显示。(注:发送的数据每1s逐渐加1,用定时计数器T0)2.单片机B发送数据给单片机A;单片机A接收到数据后送到P1口所连的LED显示。(注:发送的数据通过单脉冲逐渐加1,用外部0或者外部1中断)串口工作方式2、3方式2:11位UART,波特率与SMOD有关。1个起始位0+8位数据位+1个可编程位D8+1个停止位1。方式3:11位UART,波特率可调。除波特率外,同方式2。发送前根据通信协议,软件设置TB8,再将数据写入SBUF,启动发送。当发送完1帧数据后,TI=1,申请中断,通知CPU发送下一个数据。接收时使REN=1允许接收数据,同时将RI=0。再根据SM2和RB8的值决定是否将RI=1,申请中断,接收数据。

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

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

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

×
保存成功