找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9941|回复: 20
收起左侧

TJA1020+51单片机实现的LIN总线通讯源程序(master+slave)

  [复制链接]
ID:474099 发表于 2019-1-30 18:49 | 显示全部楼层 |阅读模式
20190130183850.jpg 20190130183903.jpg
LIN mater的51单片机代码
  1. /**************master*****************/
  2. #include <REGX52.H>
  3. #include <intrins.h>
  4. sbit  p31=P3^1;
  5. sbit  k1=P1^0;
  6. sbit  k2=P1^1;
  7. sbit  p20=P2^0;
  8. unsigned char t;
  9. unsigned char sendflag, flag;
  10. void delay(unsigned int i)
  11. {  
  12.    while(i--);
  13. }

  14. void send()
  15. {
  16.                                       //           同步   ID   data1 data2 data3 data4 data5 data6 data7 data8  checksum
  17.             unsigned char code table1[11]={0x55, 0x55, 0x3f, 0x80 ,0x00 ,0x00 ,0xff ,0x64 ,0x10 , 0xfc ,  0x79  };
  18.                                              //           同步   ID   data1 data2 data3 data4 data5 data6 data7 data8  checksum
  19.             unsigned char code table2[11]={0x55, 0x55, 0x3f, 0x80 ,0x00 ,0xff ,0x00 ,0x64 ,0x10 , 0xfc ,  0x79  };
  20.          
  21.           /*  发送一帧报文    */

  22.          unsigned char i ;                 
  23.              p31=0;        //间歇场
  24.              delay(96);        //96
  25.              p31=1;
  26.                 delay(2);
  27.                 //_nop_();         _nop_(); _nop_();
  28.               for(i=0;i<11;i++)      
  29.                   {
  30.                     if(flag==1)
  31.                      SBUF=table1[i];
  32.                     if(flag==2)
  33.                         SBUF=table2[i];
  34.                     while(TI==0);
  35.                     TI=0;
  36.                   }
  37.   }

  38. void delayms(unsigned int x)  //报文间隔发送延时
  39. {
  40.   unsigned int i;
  41. unsigned char j;
  42.   for(i=0;i<x;i++)
  43.     for(j=0;j<122;j++);
  44. }
  45. void init(void)
  46. {        

  47.          /*******19.2k波特率****** */
  48.            
  49.             SCON=0x50;           //串口方式1 8个数据位
  50.          TMOD=0x20;
  51.      PCON=0x80;        //0x80=19.2k/s
  52.          TH1 =TL1 = 0xfd;
  53.         // ES=1;                                                                                                                                                                                             //串行中断允许
  54.          TR1=1; //启动定时器1
  55.      EA= 1;   
  56.             IP=0x10;//串口中断优先        
  57.          
  58. }


  59. void main()
  60. {         

  61.           init();
  62.           flag=1;
  63.           while(1)
  64.          {                                
  65.            
  66.            P2=0xFE;
  67.            P0=0x92;
  68.            send();
  69.          /*  发送完成    */

  70.             delayms(200) ;          //发送间隔周期
  71.                    if(k1==0)
  72.          {
  73.                   while(k1==0);
  74.                   flag=1;
  75.                   }                  
  76.                 if(k2==0)
  77.                  {
  78.                     while(k2==0); //抬键程序才往下执行
  79.                   flag=2;
  80.                  }

  81.    }        

  82. }
复制代码

附加是源代码 ,还包含Slave的

全部资料51hei下载地址:
master&amp;slave.rar (49.9 KB, 下载次数: 312)

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:562268 发表于 2019-6-14 00:11 | 显示全部楼层
谢谢分享,刚好需要一个这样的程序调试下,谢谢楼主
回复

使用道具 举报

ID:33899 发表于 2019-7-18 17:39 | 显示全部楼层
楼主厉害,找了一天,赶紧下载下来学习下
回复

使用道具 举报

ID:33899 发表于 2019-7-18 17:47 | 显示全部楼层
是否可以贴出单片机与TJA1020的接线原理图。。。
回复

使用道具 举报

ID:602450 发表于 2019-8-21 17:58 | 显示全部楼层
csy1991hf 发表于 2019-7-18 17:47
是否可以贴出单片机与TJA1020的接线原理图。。。

刚好,在做这个项目。
回复

使用道具 举报

ID:72658 发表于 2019-9-2 19:03 | 显示全部楼层
这个比较好理解
回复

使用道具 举报

ID:290005 发表于 2019-9-4 21:15 | 显示全部楼层
下載保存
回复

使用道具 举报

ID:290005 发表于 2019-9-5 16:00 | 显示全部楼层
TJA1020 有些貴呀,樓主不如讓51單片機io口直接支持LIN總線通信
如果能實現要省一半的錢
回复

使用道具 举报

ID:527707 发表于 2019-11-21 20:07 | 显示全部楼层
请问TJA1020 INH引脚接什么呀?
回复

使用道具 举报

ID:658029 发表于 2019-12-9 16:41 | 显示全部楼层
楼主能提供原理图吗
回复

使用道具 举报

ID:340281 发表于 2020-1-11 10:00 | 显示全部楼层
感谢分享,正在调试LIN模块,请问一下有没有碰到发送数据时,RXD的引脚上也有信号?
回复

使用道具 举报

ID:34004 发表于 2020-4-23 16:16 | 显示全部楼层
从机怎么发数据?
回复

使用道具 举报

ID:360418 发表于 2020-7-10 11:47 | 显示全部楼层
您好,请教下是如何让单片机连接电脑检测LIN数据的呢?
回复

使用道具 举报

ID:320453 发表于 2020-7-14 11:20 | 显示全部楼层
楼主,LIN发送数据怎么写啊,老是有错误,而且过会通信失败了
这是我的发送部分,该怎么改啊

       data1 = Receive_Data_From_UART0();
        if(data1 == 0x00)//同步间隔段
        {
                data2 = Receive_Data_From_UART0();
        }
        else
        {
                return;
        }

        if(data2 == 0x55)//同步段
        {
                data3 = Receive_Data_From_UART0();
        }
        else
        {
                return;
        }
        if(data3 == 0x73)//接收到从节点的PID
        {
                LinSendMsg();//从机发送数据
        }

通讯结果

通讯结果
回复

使用道具 举报

ID:320453 发表于 2020-7-14 15:31 | 显示全部楼层
luohaiping3 发表于 2020-7-14 11:20
楼主,LIN发送数据怎么写啊,老是有错误,而且过会通信失败了
这是我的发送部分,该怎么改啊

已经测试过了,取消接收00就行
回复

使用道具 举报

ID:830224 发表于 2021-3-17 17:21 | 显示全部楼层
学习看看 。。。。。
回复

使用道具 举报

ID:939456 发表于 2021-6-18 11:11 | 显示全部楼层
正好在做这个项目
回复

使用道具 举报

ID:1014126 发表于 2022-4-12 13:11 | 显示全部楼层

楼主厉害,找了一天,赶紧下载下来学习下
回复

使用道具 举报

ID:1014126 发表于 2022-4-18 09:16 | 显示全部楼层
非常感谢,正在做这个项目
回复

使用道具 举报

ID:276663 发表于 2022-4-23 15:14 | 显示全部楼层
hui223 发表于 2019-9-5 16:00
TJA1020 有些貴呀,樓主不如讓51單片機io口直接支持LIN總線通信
如果能實現要省一半的錢

你不知道lin通讯是13V电吗
回复

使用道具 举报

ID:1045027 发表于 2022-9-17 15:12 | 显示全部楼层
非常感谢,正在学习LIN
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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