实验五串口通信_第1页
实验五串口通信_第2页
实验五串口通信_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、实验五串口通信1. 一、实验目的掌握MCS-5佯L片机的串行口工作原理。2. 学习编程实现MCS-51的UARH讯。3. 掌握CPUJ用串口通讯的方法。二、实验设备(仪器)PC微机一台三、实验原理1、申行通讯基本概念计算机与外界的信息交换称为通信。常用通信方式有两种:并行通信与申行通信,简称并行传送和申行传送。并行传送具有传送速度快,效率高等优点,但传送多少数据位就需要多少根数据线,传送成本高;申行传送是按位顺序进行数据传送,最少仅需要一根传输线即可完成,传送距离远,但传送速度慢。申行通信乂分同步和异步两种方式。这两种通信方式的区别在丁发送设备时钟与接收设备时钟是否严格一致。同步通信中,在数据

2、传送开始时先用同步字符来指示(常约定1-2个),并由同时传送的时钟信号来实现发送端和接收端同步,即检测到规定的同步字符后,接着就连续按顺序传送数据。这种传送方式对硬件结构要求较高。异步通信中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,仅接着是若干个数据位,下图中传输45H的数据格式。时钟时钟同步通信方式异步通信方式起!蛤I8位数据位,异步通信数据超式innnjiiiiiiiiiii川iiiiI同步1同步I数据I-*N*'字符L*字符2#同步通信数据格式2、MCS-51单片机的申行接口MCS-51单片机申行口寄存器结构如下图所

3、示SBUF%申行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发送器寄存器,可以实现全双工通信。但这两个寄存器具有同一地址(99用。MCS-51的申行数据传输很简单,只要向发送缓冲器写入数据即可发送数据。而从接收缓冲器读出数据即可接收数据。移位时钟2.1、申行通信控制寄存器控制MCS-51单片机申行口控制寄存器共有三个:特殊功能寄存器SCON和PCON和中断允许寄存器IE。SCONOPCON地址分别为98H和87H,SCON用于控制和监视申行口的工作状态,8可以位寻址,PCON没有位寻址功能。与申行通信有关的控制寄存器主要是申行通信控制寄存器SCONSCON8051的一个可以位

4、寻址的专用寄存器,用丁申行数据通信的控制。SCON勺单元地址98H,位地址9F98Ho寄存器内容及位地址表示如下:SCON位地址9F9E9D9C9B9A9998位符号SM0SM1SM2RENTB8RB8TIRI各位功能说明如下:位符号功能说明SM0SM1SM0SM1申行口工作方式选择位:SM0SM1工作方式功能0008位数码传送,波特率固定,为f晶振/12。01110位数码传送,波特率可变。10211位数码传送,波特率固定,为f晶振/64或f晶振/32。11311位数码传送,波特率可变。SM2SM2多机通信控制位:当申行口以方式2或方式3接收时,如SM若1,则只有当接收到的第九位数据(RB8为

5、1,才将接收到的前8位数据送入接收SBUF并使RI位置1,产生中断请求信号;否则将接收到的前8位数据丢弃。而当SM若0时,则不论第九位数据为0还是为1,都将前8位数据装入接收SBU叫,并产生中断请求信号。对方式0,SM2必须为0,对方式1,当SM2=1只有接收到有效停止位后才使RI位置1。RENREIN允许接收位,用丁对申行数据的接收进行控制:REN=0,禁止接收;RE1,允许接收。该位由软件置1或活零。TB8TB发送数据位8:在方式2和方式3时,TB8是要发送的第9位数据。RB8RB接收数据位8:在方式2和方式3中,RB8位存放接收到的第9位数据TITI发送中断标志:当方式0时,发送完第8位

6、数据后,该位由硬件置位。在其它方式下,丁发送停止位之前由硬件置位。因此TI=1,表示帧发送结束。其状态y供软件查询使用,也可请求中断。TI位由软件活0。RIRI接收中断标志:当方式0时,接收完第8位数据后,该位由硬件置1。在其它方式下,当接收到停止位时,该位由硬件置位。因此RI=1,表小帧接收结束。其状态既可供软件查询使用,也可以请求中断。RI位由软件活0。PCOND7D6D5D4D3D2D1D0SMOD-GF1GF0PDIDL电源控制寄存器PCO阡SMOm可影响申行口的波特率。SMOD是申行口波特率倍增位,当SMOD=1时,申行口波特率加倍。系统复位默认为SMOD=Q实验中我们一般了不设置电

7、源控制寄存器。IED7D6D5D4D3D2D1D0EA-ESET1EX1ET0EX0中断允许寄存器IE中的ES位可选择申行口中断允许或禁止。ES=0,禁止申行口中断;ES=1,允许申行口中断。2.2、申行通信的四种工作方式8051单片机的申行通信共有四种工作方式:1.申行工作方式0申行口为同步移位寄存器方式,波特率固定为f晶振/12。该方式主要用丁I/O口扩展等,方式0传送数据时,申行数据由RXD(P3.0)端输入或输出,而TXD(P3.1)此时仅作为同步移位脉冲发生器发出移位脉冲。申行数据的发送和接收以8位为一帧,不设起始位和停止位,其格式如下:D0D1D2D3D4D5D6D72.申行工作方

8、式1(1)方式1传送的数据格式方式1传送一帧为10位的申行数据,包括1位起始位,8位数据位和1位停止位。其帧格式为:起始D0D1D2D3D4D5D6D7停止方式1的波特率的确定方式1的波特率是可变的,计算公式为:波特率=(2sm°732)X(T1溢出率)其中SMOD;PCONJ存器最高位的值。(2) 方式1数据的发送和接收方式1的数据发送由一条写入单片机发送寄存器SBUF指令启动。8位数据在申行口由硬件自动加入起始位和停止位组成完整的帧格式。在内部移位脉冲作用下,由TXD端申行输出。发送完一帧数据后,使TXD俞出端维持”1”状态并置使TI标志位置1以通知CPU®送下一个字符

9、。接收数据由接收单片机SCO时的REN置1开始,随后申行口不断采样RXD端电平,当采样到RXD电平从1向0跳变时,就认定是接收信号并开始接收从RXD端输入的数据,并送入内部接收寄存器SBUF中,直到停止位到来之后,并使RI位置1,通知CP皿SBU呻取走接收到的一帧字符。方式1传送数据时发送前应先活TI,接收前应先活RI。3.申行工作方式2方式2是11位为一帧的申行通信方式,即1位始位,9位数据位和1位停止位。其中第9位数据既可作奇偶校验位,也可作控制位使用。其帧格式为:起始D0D1D2D3D4D5D6D7D8停止附加第9位(D8)由软件置1或活零。方式2发送时单片机自动将SBUF8位数据加上S

10、COTB8作为第9位数据进行发送。接收时,单片机将接收到的前8位数据送入SBUF而在SCO町RB8位中存放第9位数据。方式2波特率只有两种,用公式表示:波特率=(2SMO/64)Xf晶振当SMOD=0波特率为f晶振/64当SMOD=1波特率为f晶振/324.申行工作方式3方式3通信过程与方式2完全相同。区别仅在丁方式3的波特率可通过设置定时的工作方式和初值来设定(与申行工作方式1波特率设定方法相同)。顺便指出,由丁方式1和方式3的波特率设置较为灵活,在单片机申行通信中得到广泛应用。2.3、申行口的通信波特率MCS-51单片机申行通讯的波特率随申行口工作方式选择不同而不同,它除了与系统的震荡频率

11、fosc,电源控制寄存器PCON勺SMO眩有关外,还与定时器T1的设置有关。申行口的通信波特率反映了申行传输数据的速率。通信波特率的选用,不仅和所选通信设备、传输距离和MODEM号有关,还受传输线状况所制约。用户应根据实际需要加以正确选用。1、方式0的波特率在方式0下,申行口的通信波特率是固定不变的,仅与系统震荡频率fosc有关,其值为fosc/12(fosc为主机频率)。2、方式2的波特率在方式2下,波特率也只有两种:fosc/32或fosc/64。用户可以根据PCON中SMOD:状态来驱使申行口在那个波特率下工作。选定公式为:qsmod波特率=飞厂上这就是说:若SMODM则所选波特率为fo

12、sc/64;若SMOD亍1则波特率为fosc/32。3、方式1或方式3的波特率在这两种方式下,申行口波特率是由定时器Ti或T2(仅8052有)的溢出率和SMO缺定的,因此要确定波特率,关键是要计算定时器Ti或T2的溢出率,Ti或T2是可编程的,可选的波特率的范围很大,因此,这是很常用的工作方式。8051系列单片机没有定时器T2,因此波特率只能由Ti产生。8052系列单片机,当专用寄存器T2CON勺RCLK位为0时,接收波特率由T1产生,当RCLK=1时,由T2产生;当T2CON勺TCLK=0寸发送波特率由T1产生,当TCLK=1时,由T2产生。以下只讨论由定时器T1产生波特率的情况。定时器T1

13、用作波特率发生器时,应禁止T1中断。通常T1工作丁定时方式(专用寄存器TMOD勺D6=0),T1的计数脉冲为震荡频率的12分频信号。这两种方式下,波特率的相应公式为:今SMOD波特率=定时器T,溢出率公式132定时器T1溢出率可定义为:定时器T1溢出率=定时器T1溢出次数/秒定时器T1溢出率与定时器的操作模式有关,可通过改变片内特殊功能寄存器TMO%定时器T1字段的M、M0两位,即TMOD.哗日TMOD.砒,可以使定时器T1工作在四种工作方式(定时器处丁方式3时,相当丁TR1=0停止计数,故T1实际上只有0、1、2这三种方式)。以下只讨论定时器T1处丁方式2(MM)=10,计数初值自动重装8位

14、计数)时溢出率的计算。定时器Ti由两个8位计数器TH和TLi构成,当Ti处丁方式2时,Ti为8位自动装载定时器,它使用TLi计数,溢出后自动将TLi加1,当TLi增至FFH时,再增加i的话TLi就产生溢出。可见,定时器Ti的溢出率不仅与系统时钟频率fosc有关,还与每次溢出后TLi的重装初值N有关,N越大,定时器Ti的溢出率也就越大。一种极限情况是:若N=FFH那么每隔i2时钟周期,定时器Ti就溢出一次。对丁一般情况,定时器Ti溢出一次所需的时间为:i一.(2-N)xi2时钟周期=(2-N)xi2x(秒)公式2fosc丁是,定时器每秒所溢出的次数为公式2所示,式中K=&在实际计算时定时

15、器Ti的溢出率的计算公式为:定时器Ti溢出率=题顷i初值)公式3因此,把式公式2代人公式i,便可得到方式i或方式3的波特率计算公式:波特率=-SMOD2fosc/i.(32i2(2k-初值式中:K为定时器Ti的位数,它和定时器Ti的设定方式有关。即:若定时器Ti设为方式0,则K=i3若定时器Ti设为方式i,则K=i6若定时器Ti设为方式2或3,则K=8常用波特率和定时器Ti的初值关系表波特率foscSMOD定时器Tic斤所选方式相应初值申行口方式00.5M6MHzxXxX申行口方式2i87.5K6MHziXxX方式i或3i9.2K6MHzi02FEH9.6K6MHzi02FDH4.8K6MHz

16、002FDH2.4K6MHz002FAHi.2K6MHz002F4H0.6K6MHz002E8Hii06MHz00272H556MHz00iFEEBH其实,定时器Ti通常采用方式2,因为定时器Ti在方式2下工作时,当TLi从全“1”变为全“0”时,TH自动重装TLi。这种方式,不仅可使操作方便,也可避免因重装初值(时间常数初值)而带来的定时误差。应当注意两点:一是表中定时器Ti的时间常数初值和相应波特率之间有一定误差(例如:FDH勺对应波特率的理论值是i04i6波特,与这个表中给出的9699波特相差8i6波特),消除误差可以通过调整单片机的主频fosc实现,二是在定时器Ti的方式i时的初值应考

17、虑到它的重装时间(例如表中55波特下的情况)。另外,我们通常在开发时使用ii.0592M晶体是为了得到标准的无误差的波特率,那么为何呢?计算一下就知道了。如我们要得到9600的波特率,晶振为ii.0592M和i2M定时器i为模式2,SMO殴为i,分别看看那所要求的THi为何值。代入公式:ii.0592M晶振时:由9600=(2司2)X(ii.0592M/i2)/(256-THi)得TH仁250i2M晶振时:由9600=(2司2)X(i2M/i2)/(256-THi)得THi249.49上面的计算可以看出使用i2M晶体的时候计算出来的THi不为整数,而THi的值只能取整数,这样它就会有一定的误差

18、存在不能产生精确的9600波特率。当然一定的误差是可以在使用中被接受的,就算使用ii.0592M的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。四、实验内容及步骤编写两块单片机的申口通讯程序,每块单片机都有2位LED数码管显示其数值,其中一块单片机为发送端,另一块为接收端。通信成功时两数码管显示相同。i、用Protues设计两块单片机的申口通讯电路原理图,单片机选用AT89C5!P1口接LED字段ah,P2.0与P2.1口接位选,发送单片机的TXD(P3.0)与接收单片机的RXD(P3.1)端口相连。2、打开KeiluVision2仿真软件,首先建立本实验的项目

温馨提示

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

评论

0/150

提交评论