找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10041|回复: 10
打印 上一主题 下一主题
收起左侧

单片机双机通信(握手)PC与串口通信的几个proteus仿真及源程序

  [复制链接]
跳转到指定楼层
楼主
ID:137190 发表于 2016-10-10 13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

仿真工程文件及所有完整程序等资料下载地址(压缩包一共有45个单片机仿真,全部下载后找到这个项目即可):
http://www.51hei.com/bbs/dpj-56298-1.html


程序说明:
  甲发送,乙接收 甲先发送AA给乙 ,乙接收AA后,向甲回答BB。甲收到BB后(甲乙两机握手)就把P1口的状态发送给乙机,之后向乙机发送结束符FF。乙收到FF后,根据甲机P1口的状态点亮LED。同时向甲机返回结束符FF,甲机收到结束符FF后停止发送。


甲机程序:
  1. /********************************************************************
  2.                             汇诚科技
  3. *********************************************************************/

  4. 程序说明:
  5.   甲发送,乙接收 甲先发送AA给乙 ,乙接收AA后,向甲回答BB。甲收到BB后(甲乙两机握手)就把P1口的状态发送给乙机,之后向乙机发送结束符FF。乙收到FF后,根据甲机P1口的状态点亮LED。同时向甲机返回结束符FF,甲机收到结束符FF后停止发送。
  6. *********************************************************************/
  7. #include<reg52.h>                 //库文件
  8. #define uchar unsigned char//宏定义无符号字符型
  9. #define uint unsigned int  //宏定义无符号整型
  10. /********************************************************************
  11.                             延时函数
  12. *********************************************************************/

  13. void delayms(uchar n)
  14. {
  15. uchar m,s;
  16. for(m=n;m>0;m--)
  17. for(n=20;n>0;n--)
  18. for(s=248;s>0;s--);
  19. }

  20. /********************************************************************
  21.                 功能:串口初始化,波特率9600,方式1
  22. *********************************************************************/

  23. void Init_Com(void)
  24. {
  25. TMOD = 0x20;
  26. PCON = 0x00;
  27. SCON = 0x50;
  28. TH1 = 0xFd;
  29. TL1 = 0xFd;
  30. TR1 = 1;
  31. }
  32. /********************************************************************
  33.                             主函数
  34. *********************************************************************/
  35. void main()
  36. {
  37. Init_Com();         //初始化
  38. delayms(40); //延时等待

  39. while(1)
  40.   {

  41.   do{
  42.      SBUF=0Xaa;          //发送AAH
  43.            while(!TI);
  44.          TI=0;
  45.          while(!RI);
  46.          RI=0;
  47.      }
  48.    
  49.         while((SBUF^0XBB)!=0);/*此句可以改为while(SBUF!=0XBB);*/ //等待接收乙发送的BBH
  50.                  
  51.    do{                           //发送P1口状态
  52.      SBUF=P1;
  53.            while(!TI);
  54.          TI=0;
  55.          SBUF=0XFF;
  56.          while(!TI);
  57.          TI=0;
  58.          while(!RI);
  59.          RI=0;
  60.      }
  61.     while((SBUF^0XFF)!=0);/*此句可以改为while(SBUF!=0XFF);*/
  62.   }
  63. }
  64.         
  65. /********************************************************************
  66.                               结束
  67. *********************************************************************/
复制代码

乙机程序:
  1. /********************************************************************
  2.                             天马电子
  3. *********************************************************************/
  4. /程序说明:
  5.   甲发送,乙接收 甲先发送AA给乙 ,乙接收AA后,向甲回答BB。甲收到BB后(甲乙两机握手)就把P1口的状态发送给乙机,之后向乙机发送结束符FF。乙收到FF后,根据甲机P2口的状态点亮LED。同时向甲机返回结束符FF,甲机收到结束符FF后停止发送。
  6. *********************************************************************/
  7. #include<reg52.h>                 //库文件
  8. #define uchar unsigned char//宏定义无符号字符型
  9. #define uint unsigned int  //宏定义无符号整型
  10. /********************************************************************
  11.                             延时函数
  12. *********************************************************************/

  13. void delayms(uchar n)
  14. {
  15. uchar m,s;
  16. for(m=n;m>0;m--)
  17. for(n=20;n>0;n--)
  18. for(s=248;s>0;s--);
  19. }

  20. /********************************************************************
  21.                 功能:串口初始化,波特率9600,方式1
  22. *********************************************************************/

  23. void Init_Com(void)
  24. {
  25. TMOD = 0x20;
  26. PCON = 0x00;
  27. SCON = 0x50;
  28. TH1 = 0xFd;
  29. TL1 = 0xFd;
  30. TR1 = 1;
  31. }
  32. /********************************************************************
  33.                             主函数
  34. *********************************************************************/
  35. void main()
  36. {
  37. Init_Com();         //初始化
  38. delayms(40); //延时等待

  39. while(1)
  40.   {

  41.   do{
  42.      while(!RI);//等待接收中断置位
  43.          RI=0;                //中断清零
  44.      }
  45.    
  46.         while((SBUF^0XAA)!=0);/*此句可以改为while(SBUF!=0XAA);*/ //等待接收甲发送的AAH

  47.         do{                          
  48.          SBUF=0XBB;        //向甲发送BBH
  49.            while(!TI);
  50.          TI=0;
  51.          while(!RI);
  52.          RI=0;
  53.          P2=SBUF;
  54.          while(!RI);
  55.          RI=0;
  56.      }
  57.     while((SBUF^0XFF)!=0);/*此句可以改为while(SBUF!=0XFF);*/
  58.                  
  59.      SBUF=0xFF;
  60.            while(!TI);
  61.          TI=0;
  62.          }
  63. }
  64.         
  65. /********************************************************************
  66.                               结束
  67. *********************************************************************/
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:94642 发表于 2016-10-10 13:49 | 只看该作者
51黑有你更精彩!!
回复

使用道具 举报

板凳
ID:94642 发表于 2016-10-13 13:18 | 只看该作者
厉害,学习了
回复

使用道具 举报

地板
ID:184228 发表于 2017-3-28 20:18 | 只看该作者
好资料  收藏
回复

使用道具 举报

5#
ID:213546 发表于 2017-7-12 20:57 | 只看该作者
学习了
回复

使用道具 举报

6#
ID:196311 发表于 2017-7-13 18:49 | 只看该作者
收藏备用,谢谢楼主分享资料
回复

使用道具 举报

7#
ID:257286 发表于 2017-12-4 20:49 | 只看该作者
厉害,受教了
回复

使用道具 举报

8#
ID:325667 发表于 2019-1-4 10:15 | 只看该作者
你好  为什么运行程序后没有现象呢
回复

使用道具 举报

9#
ID:403593 发表于 2019-1-4 12:53 | 只看该作者
感谢楼主分享~~~
回复

使用道具 举报

10#
ID:526332 发表于 2019-5-3 11:05 | 只看该作者
附件1

main.docx

17.41 KB, 下载次数: 5, 下载积分: 黑币 -5

回复

使用道具 举报

11#
ID:561236 发表于 2019-6-12 20:27 | 只看该作者
谢谢楼主的资料
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表