久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5421|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)多機(jī)通信電路圖和源程序及proteus仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
很有用的51單片機(jī)做的多機(jī)通信proteus仿真 和源代碼


全部資料(壓縮包)下載: 多機(jī)通信.rar (69.63 KB, 下載次數(shù): 125)



下面是proteus仿真電路圖:



51單片機(jī)多機(jī)通信主機(jī)程序:
  1. #include<reg51.h>
  2. #include<string.h>

  3. #define _SUCC_   0x0f//數(shù)據(jù)傳送成功
  4. #define _ERR_    0xf0//數(shù)據(jù)傳送失敗
  5. unsigned char Table[9]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
  6. //unsigned char Table[]="123456789";
  7. unsigned char Buff[20];  //數(shù)據(jù)緩沖區(qū)
  8. unsigned char temp=0xff;
  9. sbit KEY1=P1^0;
  10. sbit KEY2=P1^1;
  11. //unsigned char addr;

  12. //延時(shí)1ms函數(shù)
  13. void delay_1ms(unsigned int t)
  14. {
  15. unsigned int x,y;
  16. for(x=t;x>0;x--)
  17.   for(y=110;y>0;y--);
  18. }
  19. //緩沖區(qū)初始化
  20. void Buff_init()
  21. {
  22. unsigned char i;    //將Table里的數(shù)據(jù)放到緩沖區(qū)里
  23. for(i=0;i<20;i++)  
  24. {
  25.   Buff[i]= Table[i];
  26.   delay_1ms(100);
  27. }
  28. }
  29. //串口初始化函數(shù)
  30. void serial_init()
  31. {
  32. TMOD=0x20; //定時(shí)器1工作于方式2
  33. TH1=0xfd;  
  34. TL1=0xfd; //波特率為9600
  35. PCON=0;
  36. SCON=0xd0;  //串口工作于方式3
  37. TR1=1;  //開(kāi)啟定時(shí)器
  38. TI=0;
  39. RI=0;
  40. }
  41. //發(fā)送數(shù)據(jù)函數(shù)
  42. void SEND_data(unsigned char *Buff)
  43. {
  44. unsigned char i;
  45. unsigned char lenth;
  46. unsigned char check;
  47. lenth=strlen(Buff);      //計(jì)算數(shù)據(jù)長(zhǎng)度
  48. check=lenth;

  49. TI=0;         //發(fā)送數(shù)據(jù)長(zhǎng)度
  50. TB8=0;      //發(fā)送數(shù)據(jù)幀
  51. SBUF=lenth;
  52. while(!TI);
  53. TI=0;
  54.          
  55. for(i=0;i<lenth;i++)  //發(fā)送數(shù)據(jù)
  56. {
  57.   check=check^Buff[i];
  58.   TB8=0;
  59.   SBUF=Buff[i];   
  60.   while(!TI);
  61.   TI=0;
  62. }

  63. TB8=0;      //發(fā)送校驗(yàn)字節(jié)
  64. SBUF=check;   
  65. while(!TI);
  66. TI=0;     
  67. }
  68. //向指定從機(jī)地址發(fā)送數(shù)據(jù)
  69. void ADDR_data(unsigned addr)
  70. {
  71. while(temp!=addr) //主機(jī)等待從機(jī)返回其地址作為應(yīng)答信號(hào)
  72. {
  73.   TI=0;    //發(fā)送從機(jī)地址
  74.   TB8=1;    //發(fā)送地址幀
  75.   SBUF=addr;
  76.   while(!TI);
  77.   TI=0;
  78.   
  79.   RI=0;
  80.   while(!RI);
  81.   temp=SBUF;
  82.   RI=0;
  83. }

  84. temp=_ERR_;   //主機(jī)等待從機(jī)數(shù)據(jù)接收成功信號(hào)
  85. while(temp!=_SUCC_)
  86. {
  87.   SEND_data(Buff);
  88.   RI=0;
  89.   while(!RI);
  90.   temp=SBUF;
  91.   RI=0;
  92. }
  93. }      
  94. void main()
  95. {
  96. Buff_init();
  97. serial_init();
  98. while(1)
  99. {
  100.   if(KEY1==0)
  101.   {
  102.    delay_1ms(5);
  103.    if(KEY1==0)
  104.    {
  105.     while(!KEY1);
  106.     ADDR_data(0x01);
  107.    }
  108.   }
  109.   if(KEY2==0)
  110.   {
  111.    delay_1ms(5);
  112.    if(KEY2==0)
  113.    {
  114.     while(!KEY2);
  115.     ADDR_data(0x02);
  116.    }
  117.   }

  118. }
  119. }

復(fù)制代碼

51單片機(jī)多機(jī)通信從機(jī)程序:
  1. #include<reg51.h>
  2. #include<string.h>

  3. #define addr     0x02//從機(jī)2的地址
  4. #define _SUCC_   0x0f//數(shù)據(jù)傳送成功
  5. #define _ERR_    0xf0//數(shù)據(jù)傳送失敗
  6. unsigned char aa=0xff;//主機(jī)與從機(jī)之間通信標(biāo)志
  7. unsigned char Buff[20];//數(shù)據(jù)緩沖區(qū)

  8. //串口初始化函數(shù)
  9. void serial_init()
  10. {
  11. TMOD=0x20; //定時(shí)器1工作于方式2
  12. TH1=0xfd;  
  13. TL1=0xfd; //波特率為9600
  14. PCON=0;
  15. SCON=0xd0;  //串口工作于方式3
  16. TR1=1;  //開(kāi)啟定時(shí)器
  17. TI=0;
  18. RI=0;
  19. }
  20. //接收數(shù)據(jù)函數(shù)
  21. unsigned char RECE_data(unsigned char *Buff)
  22. {
  23. unsigned char i,temp;
  24. unsigned char lenth;
  25. unsigned char check;

  26. RI=0;     //接收數(shù)據(jù)長(zhǎng)度
  27. while(!RI);
  28. if(RB8==1)    //若接收到地址幀,則返回0xfe
  29.   return 0xfe;
  30. lenth=SBUF;
  31. RI=0;     

  32. check=lenth;
  33. for(i=0;i<lenth;i++) //接收數(shù)據(jù)
  34. {
  35.   while(!RI);
  36.   if(RB8==1)   //若接收到地址幀,則返回0xfe
  37.    return 0xfe;
  38.   Buff[i]=SBUF;   
  39.   check=check^(Buff[i]);
  40.   RI=0;
  41. }

  42. while(!RI);    //接收校驗(yàn)字節(jié)
  43. if(RB8==1)    //若接收到地址幀,則返回0xfe
  44.   return 0xfe;
  45. temp=SBUF;
  46. RI=0;
  47.       
  48. check=temp^check;  //將從主機(jī)接收到的校驗(yàn)碼與自己計(jì)算的校驗(yàn)碼比對(duì)
  49. if(check!=0)   //校驗(yàn)碼不一致,表明數(shù)據(jù)接收錯(cuò)誤,向主機(jī)發(fā)送錯(cuò)誤信號(hào),函數(shù)返回0xff
  50. {
  51.   TI=0;
  52.   TB8=0;
  53.   SBUF=_ERR_;
  54.   while(!TI);
  55.   TI=0;
  56.   return 0xff;
  57. }
  58. TI=0;           //校驗(yàn)碼一致,表明數(shù)據(jù)接收正確,向主機(jī)發(fā)送成功信號(hào),函數(shù)返回0x00
  59. TB8=0;
  60. SBUF=_SUCC_;
  61. while(!TI);
  62. TI=0;
  63. return 0;
  64. }
  65. void main()
  66. {
  67. serial_init();
  68. while(1)
  69. {
  70.   SM2=1;              //接收地址幀
  71.   while(aa!=addr)  //從機(jī)等待主機(jī)請(qǐng)求自己的地址
  72.   {
  73.    RI=0;
  74.    while(!RI);
  75.    aa=SBUF;
  76.    RI=0;
  77.   }

  78.   TI=0;     //一旦被請(qǐng)求,從機(jī)返回自己地址作為應(yīng)答,等待接收數(shù)據(jù)
  79.   TB8=0;
  80.   SBUF=addr;
  81.   while(!TI);
  82.   TI=0;

  83.   SM2=0;                  //接收數(shù)據(jù)幀
  84.   aa=0xff;    //從機(jī)接收數(shù)據(jù),并將數(shù)據(jù)保存到數(shù)據(jù)緩沖區(qū)
  85.   while(aa==0xff)
  86.   {
  87.    aa=RECE_data(Buff);
  88.   }
  89.   if(aa==0xfe)
  90.    continue;
  91.   P1=Buff[2];      //查看接收到的數(shù)據(jù)
  92. }
  93. }

復(fù)制代碼


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:190720 發(fā)表于 2017-4-19 10:51 | 只看該作者
下載看看,我編了好多次都失敗了
回復(fù)

使用道具 舉報(bào)

板凳
ID:296971 發(fā)表于 2018-3-25 21:58 | 只看該作者
跟我要弄的優(yōu)點(diǎn)不一樣
回復(fù)

使用道具 舉報(bào)

地板
ID:426662 發(fā)表于 2019-5-22 23:45 | 只看該作者
真的能用!
回復(fù)

使用道具 舉報(bào)

5#
ID:482448 發(fā)表于 2020-3-24 16:47 | 只看該作者
請(qǐng)問(wèn)從機(jī)如何向主機(jī)發(fā)送數(shù)據(jù)呢
回復(fù)

使用道具 舉報(bào)

6#
ID:482448 發(fā)表于 2020-3-24 16:47 | 只看該作者
請(qǐng)問(wèn)從機(jī)如何向主機(jī)發(fā)送數(shù)據(jù)呢
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本一区二区三区四区 | 成人精品在线观看 | 久久中文字幕一区 | 91av视频在线观看 | 国产精品亚洲综合 | 中文字幕在线视频网站 | 欧美国产中文字幕 | 免费观看www | 日韩av一区二区在线观看 | 欧美精品久久久 | 中文字幕一区二区三区日韩精品 | 黄色大片免费网站 | 精品综合 | 亚洲欧美国产精品久久 | 天天天天操 | 97超碰免费 | 国产亚洲精品精品国产亚洲综合 | 精品在线一区 | 精品久久久久久久久久久久久久 | 国产精品福利在线 | 欧美精品久久久久 | 国产十日韩十欧美 | 不卡av电影在线播放 | 久久国产成人精品国产成人亚洲 | 午夜影视网 | 欧美在线国产精品 | www.av在线| 午夜视频一区 | 成年人黄色小视频 | 欧美一区免费 | 国产一区三区在线 | 五月婷亚洲 | 亚洲午夜小视频 | 日韩一区二区三区在线视频 | 日韩av免费看 | 久久国| 日韩久久久久久 | 天天干天天操天天看 | 亚洲国产精品一区 | 国产亚洲欧美日韩精品一区二区三区 | 久久久蜜臀国产一区二区 |