找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1888|回复: 1
收起左侧

单片机双机串行口主从机通讯仿真+接受与发送代码

[复制链接]
ID:435699 发表于 2018-11-29 14:09 | 显示全部楼层 |阅读模式
单片机双机通讯,就是直接单片机的串口RX和TX直接连接,然后通过串口命令完成通讯
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png 0.png

单片机源程序如下:
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. sbit key0=P1^0;
  4. sbit key1=P1^1;
  5. sbit key2=P1^2;


  6. uchar i;
  7. uchar code tb[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

  8. void delay(int z)                        //延时子函数
  9. {
  10.         int i,j;
  11.         for(i=0;i<z;i++)
  12.         for(j=0;j<500;j++);
  13. }
  14. void init()                                        //串口初始化
  15. {
  16.         SCON=0x50;
  17.         TMOD=0x20;
  18.         TH1=0xFD;
  19.         TL1=0xFD;
  20.         TR1=1;
  21. }
  22. void main()
  23. {
  24.         i = 0;

  25.         init();
  26.         P1=0xff;
  27.         P2=0xff;

  28.         while(1)
  29.         {


  30.            if(key0==0)
  31.            {
  32.                 i++;
  33.                 //if(i>=10)
  34.                 //  i=0;                               

  35.                 SBUF=~tb[i%10];                        //送缓冲区
  36.                 P0=~tb[i%10];                        //数据送P0口

  37.                 while(TI==0);                        //判断是否发送完成
  38.                 TI=0;       
  39.             delay(200);
  40.            }

  41.            if(key1==0)
  42.            {
  43.                 i--;
  44.         //        if(i<=0)
  45.         //          i=9;                               

  46.                 SBUF=~tb[i%10];                        //送缓冲区
  47.                 P0=~tb[i%10];                        //数据送P0口

  48.                 while(TI==0);                        //判断是否发送完成
  49.                 TI=0;       
  50.             delay(200);
  51.            }


  52. /*                for(i=7;i<10;i++)                //连续发送数组数据
  53.                 {       
  54.                 SBUF=~tb[i];                        //送缓冲区
  55.                 P0=~tb[i];                                //数据送P0口
  56.                 while(TI==0);                        //判断是否发送完成
  57.                 TI=0;                                       
  58.             delay(50);
  59.                 }       
  60. */

  61.         }
  62. }
复制代码

所有资料51hei提供下载:
双机串行.zip (56.79 KB, 下载次数: 49)
回复

使用道具 举报

ID:435699 发表于 2018-11-29 14:34 | 显示全部楼层
可以的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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