单片机-串行口通信2.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
安徽文达信息工程学院学生实验报告 学年第 学期 课程名称《 单片机原理与应用 》 实验日期: 院部 班级 姓名 学号 实验项目名称:实验十 串行口通信实验指导老师: 实验类型:编程仿真成绩:一、【实验目的】掌握MCS-51单片机的串行口工作原理。??2.学习编程实现MCS-51的UART通讯。?3.掌握CPU利用串口通讯的方法?二、【实验原理及内容】串行口控制寄存器与串行通信有关的控制寄存器主要是串行通信控制寄存器SCON。SCON是8051的一个可以位寻址的专用寄存器,用于串行数据通信的控制。SCON的单元地址98H,位地址9FH—98H。寄存器内容及位地址表示如下:电源控制寄存器PCON中SMOD位可影响串行口的波特率。SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。系统复位默认为SMOD=0。实验中我们一般了不设置电源控制寄存器。 PCON四种工作方式1.串行工作方式0??串行口为同步移位寄存器方式,波特率固定为f晶振/12。该方式主要用于I/O口扩展等,方式0传送数据时,串行数据由RXD(P3.0)端输入或输出,而TXD(P3.1)此时仅作为同步移位脉冲发生器发出移位脉冲。2.串行工作方式1?(1)?方式1传送的数据格式?方式1传送一帧为10位的串行数据,包括1位起始位,8位数据位和1位停止位。数据发送由一条写入单片机发送寄存器SBUF指令启动。8位数据在串行口由硬件自动加入起始位和停止位组成完整的帧格式。在内部移位脉冲作用下,由TXD端串行输出。发送完一帧数据后,使TXD输出端维持”1”状态并置使TI标志位置1以通知CPU发送下一个字符。接收数据由接收单片机SCON中的REN置1开始,随后串行口不断采样RXD端电平,当采样到RXD端电平从1向0跳变时,就认定是接收信号并开始接收从RXD端输入的数据,并送入内部接收寄存器SBUF中,直到停止位到来之后,并使RI位置1,通知CPU从SBUF中取走接收到的一帧字符。?方式1传送数据时发送前应先清TI,接收前应先清RI。3.串行工作方式2?方式2是11位为一帧的串行通信方式,即1位始位,9位数据位和1位停止位。其中第9位数据既可作奇偶校验位,也可作控制位使用。其帧格式为:4.串行工作方式3?方式3通信过程与方式2完全相同。区别仅在于方式3的波特率可通过设置定时的工作方式和初值来设定(与串行工作方式1波特率设定方法相同)。顺便指出,由于方式1和方式3的波特率设置较为灵活,在单片机串行通信中得到广泛应用。三、【实验器材】PC机、Proteus仿真软件、Keil c51仿真软件四、【实验步骤】1、基础实验:发送方单片机将串行口设置为工作方式3,TB8作为奇偶位。待发送数据位于片内40H~4FH单元中。数据写入发送缓冲器之前,先将数据的奇偶位写入TB8中,使第九位数据作为校验位。接收方单片机也将串行口设置为工作方式3,并允许接收,每接收到一个数据都要进行校验,根据结果决定接收是否正确。接收正确则向发送方回送标志数据00H,同时将收到的数据送往P1口显示;接收错误则向发送方回送标志数据FFH,同时将数据FFH送往P1口显示。2、扩展实验实现数据0~F字符的循环显示。五、【实验过程原始记录】(可附页)基础实验:发送方源程序:#includereg52.h#define uchar unsigned char#define uint unsigned intuchar i=0;uchar Dat[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}; void delay(){ uint j; for(j=0;j31000;j++);}void main(){ TMOD=0x20;TH1=TL1=0xf3;PCON=0x80; TR1=1;SCON=0xd0;ES=1;EA=1;ACC=Dat[i];CY=P;TB8=CY;P1=ACC;SBUF=ACC; delay(); while(1);}void trs() interrupt 4 using 1 {uchar Dat1;while(RI!=1);RI=0;Dat1=SBUF; if(Dat1==0) { i++;ACC=Dat[i-1];CY=P;TB8=CY;P1=ACC;SBUF=ACC; delay();if(i==0x0f) ES=0; }else{ ACC=Dat[i]; CY=P;TB8=CY;P1=ACC;SBUF=ACC; delay();} TI=0;}接收方源程序:#includereg52.h#include intrins.h#define uc

文档评论(0)

js1180 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档