(8.1)--项目5:单片机U1与单片机U2进行双向通信.pdfVIP

(8.1)--项目5:单片机U1与单片机U2进行双向通信.pdf

  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文档。上传文档
查看更多
项目5:单片机U1 与单片机U2 进行双向通信 1.项目要求 (1)了解80C51 串行口的通信方式; (2 )掌握单片机串行口RXD (P3.0 引脚)、TXD (P3.1 引脚); (3 )掌握80C51 串行通信的编程方法。 2.项目描述 本项目就是在任务 28-1 基础上完成双向通信扩展,即单片机 U1 按键 S1(P3.7 引脚)按 下,U1 通过串行口TXD (P3.1 引脚)端将开关状态以方式1 发至单片机U2 的RXD (P3.0 引 脚)端,U2 单片机接收后把开关状态送P1 口显示;同理单片机U2 按键S2(P3.6 引脚)按下, U2 通过串行口TXD (P3.1 引脚)端将开关状态以方式1 发至单片机U1 的RXD (P3.0 引脚) 端,U1 单片机接收后把开关状态送P1 口显示,这样就实现了单片机U1 与单片机U2 双向 通信。 3.项目实现 (1)分析 本项目用到了单片机U1 和单片机U2,因此需要对单片机U1 和单片机U2 分别设计两 个程序:单片机 U1 负责完成数据发送、接收显示任务;单片机U2 负责完成数据发送、接 收显示任务。 对单片机 U1 编程时,由于使用方式 1,需要设置串行控制寄存器SCON,使SM0=0 , SM1=1 和REN=1 (允许接收),选波特率为9600b/s ,SMOD=0,计算出TH1=FAH ; 对单片机U2 编程时,需要设置SM0=0 ,SM1=1 和REN=1 (允许接收),选波特率为9600b/s , SMOD=0,计算出TH1=FAH 。 (2 )程序设计 方法1查询方式 单片机U1、U2 发送、接收显示程序(相同) 先建立文件夹“XM28-1-1”,然后建立“send ”工程项目,最后建立源程序文件“send.c ”, 输入如下源程序: #includereg51.h //包含单片机寄存器的头文件 /******** ********************************************* 函数功能:发送一个字节数据 ***************************************************/ void Send(unsigned char dat) { dat=P3; SBUF=P3; //将数据写入发送缓冲器,启动发送 while(TI==0) //若没有发送完毕,等待 ; TI=0; //发送完毕,TI 被置“1”,需将其清0 } /***************************************************** 函数功能:接收一个字节数据 ***************************************************/ unsigned char Receive(void) { unsigned char dat; while(RI==0) // 只要接收中断标志位RI 没有被置“1” ; //等待,直至接收完毕(RI=1) RI=0; //为了接收下一帧数据,需用软件将RI 清0 dat=SBUF; //将接收缓冲器中的数据存于dat return dat;//将接收到的数据返回 } /************************************************************** 函数功能:延时约150ms **************************************************************/ void delay(void) { unsigned char m,n; for(m=0;m200;m++) for(n=0;n250;n++) ; } /******************

文档评论(0)

职教中心 + 关注
实名认证
文档贡献者

学高为师,身正为范!

1亿VIP精品文档

相关文档