找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6224|回復: 7
打印 上一主題 下一主題
收起左側(cè)

單片機之間主從通訊程序 485總線

[復制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:82079 發(fā)表于 2015-6-5 00:21 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
單片機之間主從通訊實例
單片機之間主從通訊.zip (54.27 KB, 下載次數(shù): 430)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩

相關(guān)帖子

回復

使用道具 舉報

7#
ID:159139 發(fā)表于 2017-4-24 00:21 來自觸屏版 | 只看該作者
謝謝樓主,下來學習一下,非常感謝。
回復

使用道具 舉報

6#
ID:128463 發(fā)表于 2017-4-8 10:31 | 只看該作者
謝謝分享。。。。!
回復

使用道具 舉報

5#
ID:128463 發(fā)表于 2017-4-8 10:28 | 只看該作者
謝謝分享。!
回復

使用道具 舉報

地板
ID:47286 發(fā)表于 2016-2-27 00:52 | 只看該作者
請教樓主

TB8是多機通訊位 這個位只開業(yè)0/1還是0~255都可以 從機地址是怎么確定的 一直沒有看到比較好的教程
回復

使用道具 舉報

板凳
ID:67573 發(fā)表于 2016-2-25 14:53 | 只看該作者
值得學習
回復

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2015-6-5 00:38 | 只看該作者
從機程序:
  1. /*********************主機程序**************************/
  2. #include <reg52.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit t0 = P3^7;//發(fā)送、接收使能
  6. /***********延時函數(shù)**************************/
  7. void delay(uint x)
  8. {
  9.         uchar i;
  10.         while(x--)
  11.         {        for(i=0;i<110;i++);        }
  12. }
  13. /***********串口初始化函數(shù)**************************/
  14. void init_UART()
  15. {
  16.         SCON = 0xd0; //工作方式3 允許串口接收
  17.         TMOD = 0x20; //定時器T/C1工作方式2
  18.         PCON = 0x00; //波特率倍頻
  19.         TH1 = 0xfd;
  20.         TL1 = 0xfd;
  21.         TR1 = 1;
  22. }
  23. /*****************主函數(shù)************************/
  24. void main()
  25. {   
  26.     uchar ADDR=0x01,num=0,tmp;//ADDR地址碼,num地址個數(shù)
  27.         init_UART();//串口初始
  28. //        P1=0xc0;//初始時顯示0
  29.         while(1)
  30.             {

  31.                         /*********接受從機地址**********/
  32.                                 t0=0;        //接受使能
  33.                                 delay(20);
  34.                                 while(!RI);//等待接收從機發(fā)回的握手信號
  35.                                 tmp=SBUF;         //接收回來的值賦值給顯示變量
  36.                                 RI=0;        //接收成功
  37.                                 delay(20);
  38.                                 tmp++;

  39.                 /*********發(fā)送從機地址**********/
  40.                                   TI=0;
  41.                                   TB8=1;//發(fā)送地址信號
  42.                                       t0=1;        //發(fā)送使能
  43.                                       delay(20);
  44.                                        SBUF=tmp;//發(fā)送地址信號加1
  45.                                       while(!TI);//等待發(fā)送
  46.                                       TI=0;//發(fā)送成功
  47.                                       delay(1000);
  48.                          }
  49. }
  50. /*
  51. 本程序為從機程序
  52. 11.0592M晶振 波特率9600
  53. 從機:STC12C4052AD  主機:STC12C5A60S2
  54. 從機數(shù)據(jù)接加1后發(fā)送回主機
  55. 2014年9月4日 23時50分
  56. 實驗成功
  57. */
復制代碼
回復

使用道具 舉報

樓主
ID:1 發(fā)表于 2015-6-5 00:37 | 只看該作者
485主機通訊:
  1. /*********************主機程序**************************/
  2. #include <reg52.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit t0 = P0^0;//發(fā)送、接收使能
  6. sbit key = P0^1; //控制開關(guān)
  7. /***********延時函數(shù)**************************/
  8. void delay(uint x)
  9. {
  10.         uchar i;
  11.         while(x--)
  12.         {        for(i=0;i<110;i++);        }
  13. }
  14. /***********串口初始化函數(shù)**************************/
  15. void init_UART()
  16. {
  17.         SCON = 0xd0; //工作方式3 允許串口接收
  18.         TMOD = 0x20; //定時器T/C1工作方式2
  19.         PCON = 0x00; //波特率倍頻
  20.         TH1 = 0xfd;
  21.         TL1 = 0xfd;
  22.         TR1 = 1;
  23. }
  24. /*****************主函數(shù)************************/
  25. void main()
  26. {   
  27.     uchar ADDR=0x01,num=0,tmp;//ADDR地址碼,num地址個數(shù)
  28.         init_UART();//串口初始
  29.         while(1)
  30.             {
  31.             if(key==0)//判斷開關(guān)是否被按下
  32.             {
  33.                              delay(50);
  34.                  while(key==0);
  35.                 /*********發(fā)送從機地址**********/
  36.                                   TI=0;
  37.                                   TB8=1;//發(fā)送地址信號
  38.                                       t0=1;        //發(fā)送使能
  39.                                       delay(20);
  40.                                        SBUF=ADDR;//發(fā)送地址信號
  41.                                       while(!TI);//等待發(fā)送
  42.                                       TI=0;//發(fā)送成功
  43.                                       ADDR++;
  44.                                       if(ADDR==6) ADDR=1;


  45.                         /*********接受從機地址**********/
  46.                                 t0=0;        //接受使能
  47.                                 delay(20);
  48.                                 while(!RI);//等待接收從機發(fā)回的握手信號
  49.                                 P1=SBUF;         //接收回來的值賦值給顯示變量
  50.                                 RI=0;        //接收成功
  51.                                 delay(1000);

  52.                  
  53.              }
  54.                  }
  55. }
  56. /*
  57. 主機:STC12C5A60S2    從機:STC12C4052AD
  58. MAX485通訊
  59. 波特率為9600
  60. 晶振為110592MHZ
  61. 接通第一次按鍵主機發(fā)送01給從機 從機收到后加1返回給主機 發(fā)送值最大為5
  62. 圓滿成功  2014.9.4 23:41
  63. */
復制代碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表