標(biāo)題: TJA1020+51單片機(jī)實(shí)現(xiàn)的LIN總線通訊源程序(master+slave) [打印本頁(yè)]

作者: xingshixue    時(shí)間: 2019-1-30 18:49
標(biāo)題: TJA1020+51單片機(jī)實(shí)現(xiàn)的LIN總線通訊源程序(master+slave)

LIN mater的51單片機(jī)代碼
  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.           /*  發(fā)送一幀報(bào)文    */

  22.          unsigned char i ;                 
  23.              p31=0;        //間歇場(chǎng)
  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)  //報(bào)文間隔發(fā)送延時(shí)
  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個(gè)數(shù)據(jù)位
  50.          TMOD=0x20;
  51.      PCON=0x80;        //0x80=19.2k/s
  52.          TH1 =TL1 = 0xfd;
  53.         // ES=1;                                                                                                                                                                                             //串行中斷允許
  54.          TR1=1; //啟動(dòng)定時(shí)器1
  55.      EA= 1;   
  56.             IP=0x10;//串口中斷優(yōu)先        
  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.          /*  發(fā)送完成    */

  70.             delayms(200) ;          //發(fā)送間隔周期
  71.                    if(k1==0)
  72.          {
  73.                   while(k1==0);
  74.                   flag=1;
  75.                   }                  
  76.                 if(k2==0)
  77.                  {
  78.                     while(k2==0); //抬鍵程序才往下執(zhí)行
  79.                   flag=2;
  80.                  }

  81.    }        

  82. }
復(fù)制代碼

附加是源代碼 ,還包含Slave的

全部資料51hei下載地址:
master&amp;slave.rar (49.9 KB, 下載次數(shù): 328)

作者: redheart5    時(shí)間: 2019-6-14 00:11
謝謝分享,剛好需要一個(gè)這樣的程序調(diào)試下,謝謝樓主
作者: csy1991hf    時(shí)間: 2019-7-18 17:39
樓主厲害,找了一天,趕緊下載下來(lái)學(xué)習(xí)下
作者: csy1991hf    時(shí)間: 2019-7-18 17:47
是否可以貼出單片機(jī)與TJA1020的接線原理圖。。。
作者: liwi163    時(shí)間: 2019-8-21 17:58
csy1991hf 發(fā)表于 2019-7-18 17:47
是否可以貼出單片機(jī)與TJA1020的接線原理圖。。。

剛好,在做這個(gè)項(xiàng)目。
作者: hjf1002    時(shí)間: 2019-9-2 19:03
這個(gè)比較好理解
作者: hui223    時(shí)間: 2019-9-4 21:15
下載保存
作者: hui223    時(shí)間: 2019-9-5 16:00
TJA1020 有些貴呀,樓主不如讓51單片機(jī)io口直接支持LIN總線通信
如果能實(shí)現(xiàn)要省一半的錢(qián)
作者: 廖呆呆    時(shí)間: 2019-11-21 20:07
請(qǐng)問(wèn)TJA1020 INH引腳接什么呀?

作者: peng666    時(shí)間: 2019-12-9 16:41
樓主能提供原理圖嗎
作者: 冬雪    時(shí)間: 2020-1-11 10:00
感謝分享,正在調(diào)試LIN模塊,請(qǐng)問(wèn)一下有沒(méi)有碰到發(fā)送數(shù)據(jù)時(shí),RXD的引腳上也有信號(hào)?
作者: Apo    時(shí)間: 2020-4-23 16:16
從機(jī)怎么發(fā)數(shù)據(jù)?
作者: 猥瑣De麥兜    時(shí)間: 2020-7-10 11:47
您好,請(qǐng)教下是如何讓單片機(jī)連接電腦檢測(cè)LIN數(shù)據(jù)的呢?
作者: luohaiping3    時(shí)間: 2020-7-14 11:20
樓主,LIN發(fā)送數(shù)據(jù)怎么寫(xiě)啊,老是有錯(cuò)誤,而且過(guò)會(huì)通信失敗了
這是我的發(fā)送部分,該怎么改啊

       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)//接收到從節(jié)點(diǎn)的PID
        {
                LinSendMsg();//從機(jī)發(fā)送數(shù)據(jù)
        }

1594696481(1).jpg (14.44 KB, 下載次數(shù): 110)

通訊結(jié)果

通訊結(jié)果

作者: luohaiping3    時(shí)間: 2020-7-14 15:31
luohaiping3 發(fā)表于 2020-7-14 11:20
樓主,LIN發(fā)送數(shù)據(jù)怎么寫(xiě)啊,老是有錯(cuò)誤,而且過(guò)會(huì)通信失敗了
這是我的發(fā)送部分,該怎么改啊

已經(jīng)測(cè)試過(guò)了,取消接收00就行
作者: larry401    時(shí)間: 2021-3-17 17:21
學(xué)習(xí)看看 。。。。。
作者: ciro2021    時(shí)間: 2021-6-18 11:11
正好在做這個(gè)項(xiàng)目

作者: dzq2022    時(shí)間: 2022-4-12 13:11

樓主厲害,找了一天,趕緊下載下來(lái)學(xué)習(xí)下
作者: dzq2022    時(shí)間: 2022-4-18 09:16
非常感謝,正在做這個(gè)項(xiàng)目
作者: IdeaMing    時(shí)間: 2022-4-23 15:14
hui223 發(fā)表于 2019-9-5 16:00
TJA1020 有些貴呀,樓主不如讓51單片機(jī)io口直接支持LIN總線通信
如果能實(shí)現(xiàn)要省一半的錢(qián)

你不知道lin通訊是13V電嗎
作者: qy19880419    時(shí)間: 2022-9-17 15:12
非常感謝,正在學(xué)習(xí)LIN




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1