• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

c51单片机串行通信展示代码单片机--单片机通信附带proteus线路图

武飞扬头像
geniusNMRobot
帮助1

学新通

 学新通

  1.  
    //这个发送端代码
  2.  
    #include "reg51.h"
  3.  
    #include "myheader.h"
  4.  
    #define uchar unsigned char
  5.  
    long int sleep_i=0;
  6.  
    long int main_i=0;
  7.  
    void main()
  8.  
    {
  9.  
    uchar sendx[6]={2,0,2,3,8,1};
  10.  
    sleep(2000);
  11.  
    TMOD=0x20;
  12.  
    TH1=0XF4;//根据波特率计算公式这里需要设置为这么多才能够在串行数据传输模式1的状况下实现波特率2400B/S
  13.  
    TL1=0XF4;
  14.  
    TR1=1;
  15.  
    SCON=0X40;
  16.  
    while(1)
  17.  
    {
  18.  
    for(main_i=0;main_i<6;main_i )
  19.  
    {
  20.  
    SBUF=sendx[main_i];
  21.  
    while(TI==0);//这个是清除发送的中断,不是清除闹钟中断
  22.  
    TI=0;
  23.  
    }
  24.  
    }
  25.  
    }
  26.  
     
  27.  
    void sleep(long int a)
  28.  
    {
  29.  
    for(sleep_i=0;sleep_i<a;sleep_i )
  30.  
    {
  31.  
    ;
  32.  
    }
  33.  
    }
学新通

后面这个是接收端代码

  1.  
    #include "reg51.h"
  2.  
    #include "myheader.h"
  3.  
    #define uchar unsigned char
  4.  
    int szc[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  5.  
    int bufferc[6]={0};
  6.  
    int sza[6]={0x01,0x02,0x04,0x08,0x10,0x20};
  7.  
    void display()
  8.  
    {
  9.  
    uchar i=0;
  10.  
    uchar num=0;
  11.  
    for(i=0;i<6;i )
  12.  
    {
  13.  
    num=bufferc[i];
  14.  
    P2=szc[num];
  15.  
    P1=sza[i];
  16.  
    sleep(50);
  17.  
    P2=0xff;
  18.  
    }
  19.  
    }
  20.  
     
  21.  
    void main()
  22.  
    {
  23.  
    uchar i=0;
  24.  
    TMOD=0x20;
  25.  
    TH1=0XF4;//根据波特率计算公式这里需要设置为这么多才能够在串行数据传输模式1的状况下实现波特率2400B/S
  26.  
    TL1=0XF4;
  27.  
    TR1=1;
  28.  
    SCON=0x40;//串口工作与方式1,定义了传送数据的格式
  29.  
    REN=1;
  30.  
    for(i=0;i<6;i )
  31.  
    {
  32.  
    while(RI==0)
  33.  
    {
  34.  
    ;
  35.  
    }
  36.  
    bufferc[i]=SBUF;
  37.  
    RI=0;
  38.  
    }
  39.  
    while(1)
  40.  
    {
  41.  
    display();
  42.  
    }
  43.  
    }
  44.  
     
  45.  
    void sleep(long int a)
  46.  
    {
  47.  
    uchar i=0;
  48.  
    for(i=0;i<a;i )
  49.  
    {
  50.  
    ;
  51.  
    }
  52.  
    }
学新通

 另外发现一个奇怪的现象:如果把T1口改为T0口没有办法正常模拟

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhigfhec
系列文章
更多 icon
同类精品
更多 icon
继续加载