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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10775|回復: 24
收起左側

W5500以太網模塊的51單片機控制源碼

  [復制鏈接]
ID:219730 發表于 2018-6-29 08:36 | 顯示全部樓層 |閱讀模式
51單片機搭載以太網模塊,實現UDP模式,服務器模式,客戶端模式,源碼分享,有需要的伙伴可以下載參考
全部資料51hei下載地址:
W5500模塊-客戶端模式例程(51單片機).zip (86.63 KB, 下載次數: 179)
W5500模塊-服務端模式例程(51單片機).zip (86.31 KB, 下載次數: 119)
W5500模塊-UDP模式例程(51單片機).zip (86.78 KB, 下載次數: 130)


單片機源程序如下:
  1. /***************************************************************************************
  2. * 工程名  :W5500模塊-UDP模式例程
  3. * 描述    :W5500的端口0工作在UDP模式,端口通信不需要建立連接即可接收其它UDP模式端口發來的數據,
  4. *                         數據的前4個字節為對方端口IP地址,第5、6個字節為端口號,獲得對方IP和端口號后W5500端口0
  5. *                         將定時給對應端口發送字符串"\r\nWelcome To ChuangWeiElec!\r\n",同時將接收
  6. *                         到的數據回發給對應端口。
  7. * 實驗平臺:51單片機開發板 + W5500以太網(TCP/IP)模塊
  8. * 硬件連接:  P3^2 -> W5500_RST   
  9. *             P3^3 -> W5500_INT(本例程沒有用到中斷,此引腳可以不接)     
  10. *             P3^6 -> W5500_SCS      
  11. *             P3^7 -> W5500_SCK   
  12. *             P3^4 -> W5500_MISO   
  13. *             P3^5 -> W5500_MOSI   
  14. * 庫版本  :ST_v3.5
  15. ***************************************************************************************/

  16. /*例程網絡參數*/
  17. //網關:192.168.1.1
  18. //掩碼:        255.255.255.0
  19. //物理地址:0C 29 AB 7C 00 01
  20. //本機IP地址:192.168.1.199
  21. //端口0的端口號:5000
  22. //端口0的目的IP地址:192.168.1.190
  23. //端口0的目的端口號:6000

  24. #include <reg51.h>
  25. #include "W5500.h"                               
  26. #include <string.h>

  27. void Delay(unsigned int d);                        //延時函數(ms)

  28. /*******************************************************************************
  29. * 函數名  : W5500_Initialization
  30. * 描述    : W5500初始貨配置
  31. * 輸入    : 無
  32. * 輸出    : 無
  33. * 返回值  : 無
  34. * 說明    : 無
  35. *******************************************************************************/
  36. void W5500_Initialization(void)
  37. {
  38.         W5500_Init();                //初始化W5500寄存器函數
  39.         Detect_Gateway();        //檢查網關服務器
  40.         Socket_Init(0);                //指定Socket(0~7)初始化,初始化端口0
  41. }

  42. /*******************************************************************************
  43. * 函數名  : Load_Net_Parameters
  44. * 描述    : 裝載網絡參數
  45. * 輸入    : 無
  46. * 輸出    : 無
  47. * 返回值  : 無
  48. * 說明    : 網關、掩碼、物理地址、本機IP地址、端口號、目的IP地址、目的端口號、端口工作模式
  49. *******************************************************************************/
  50. void Load_Net_Parameters(void)
  51. {
  52.         Gateway_IP[0] = 192;//加載網關參數
  53.         Gateway_IP[1] = 168;
  54.         Gateway_IP[2] = 1;
  55.         Gateway_IP[3] = 1;

  56.         Sub_Mask[0]=255;//加載子網掩碼
  57.         Sub_Mask[1]=255;
  58.         Sub_Mask[2]=255;
  59.         Sub_Mask[3]=0;

  60.         Phy_Addr[0]=0x0c;//加載物理地址
  61.         Phy_Addr[1]=0x29;
  62.         Phy_Addr[2]=0xab;
  63.         Phy_Addr[3]=0x7c;
  64.         Phy_Addr[4]=0x00;
  65.         Phy_Addr[5]=0x01;

  66.         IP_Addr[0]=192;//加載本機IP地址
  67.         IP_Addr[1]=168;
  68.         IP_Addr[2]=1;
  69.         IP_Addr[3]=199;

  70.         S0_Port[0] = 0x13;//加載端口0的端口號5000
  71.         S0_Port[1] = 0x88;

  72. //        S0_DIP[0]=192;//加載端口0的目的IP地址
  73. //        S0_DIP[1]=168;
  74. //        S0_DIP[2]=1;
  75. //        S0_DIP[3]=190;
  76. //       
  77. //        S0_DPort[0] = 0x17;//加載端口0的目的端口號6000
  78. //        S0_DPort[1] = 0x70;

  79. //        UDP_DIPR[0] = 192;        //UDP(廣播)模式,目的主機IP地址
  80. //        UDP_DIPR[1] = 168;
  81. //        UDP_DIPR[2] = 1;
  82. //        UDP_DIPR[3] = 190;
  83. //
  84. //        UDP_DPORT[0] = 0x17;        //UDP(廣播)模式,目的主機端口號
  85. //        UDP_DPORT[1] = 0x70;

  86.         S0_Mode=UDP_MODE;//加載端口0的工作模式,UDP模式
  87. }

  88. /*******************************************************************************
  89. * 函數名  : W5500_Socket_Set
  90. * 描述    : W5500端口初始化配置
  91. * 輸入    : 無
  92. * 輸出    : 無
  93. * 返回值  : 無
  94. * 說明    : 分別設置4個端口,根據端口工作模式,將端口置于TCP服務器、TCP客戶端或UDP模式.
  95. *                        從端口狀態字節Socket_State可以判斷端口的工作情況
  96. *******************************************************************************/
  97. void W5500_Socket_Set(void)
  98. {
  99.         if(S0_State==0)//端口0初始化配置
  100.         {
  101.                 if(S0_Mode==TCP_SERVER)//TCP服務器模式
  102.                 {
  103.                         if(Socket_Listen(0)==TRUE)
  104.                                 S0_State=S_INIT;
  105.                         else
  106.                                 S0_State=0;
  107.                 }
  108.                 else if(S0_Mode==TCP_CLIENT)//TCP客戶端模式
  109.                 {
  110.                         if(Socket_Connect(0)==TRUE)
  111.                                 S0_State=S_INIT;
  112.                         else
  113.                                 S0_State=0;
  114.                 }
  115.                 else//UDP模式
  116.                 {
  117.                         if(Socket_UDP(0)==TRUE)
  118.                                 S0_State=S_INIT|S_CONN;
  119.                         else
  120.                                 S0_State=0;
  121.                 }
  122.         }
  123. }

  124. /*******************************************************************************
  125. * 函數名  : Process_Socket_Data
  126. * 描述    : W5500接收并發送接收到的數據
  127. * 輸入    : s:端口號
  128. * 輸出    : 無
  129. * 返回值  : 無
  130. * 說明    : 本過程先調用S_rx_process()從W5500的端口接收數據緩沖區讀取數據,
  131. *                        然后將讀取的數據從Rx_Buffer拷貝到Temp_Buffer緩沖區進行處理。
  132. *                        處理完畢,將數據從Temp_Buffer拷貝到Tx_Buffer緩沖區。調用S_tx_process()
  133. *                        發送數據。
  134. *******************************************************************************/
  135. void Process_Socket_Data(SOCKET s)
  136. {
  137.         unsigned short size;
  138.         size=Read_SOCK_Data_Buffer(s, Rx_Buffer);
  139.         UDP_DIPR[0] = Rx_Buffer[0];
  140.         UDP_DIPR[1] = Rx_Buffer[1];
  141.         UDP_DIPR[2] = Rx_Buffer[2];
  142.         UDP_DIPR[3] = Rx_Buffer[3];

  143.         UDP_DPORT[0] = Rx_Buffer[4];
  144.         UDP_DPORT[1] = Rx_Buffer[5];
  145.         memcpy(Tx_Buffer, Rx_Buffer+8, size-8);                       
  146.         Write_SOCK_Data_Buffer(s, Tx_Buffer, size);
  147. }

  148. /*******************************************************************************
  149. * 函數名  : main
  150. * 描述    : 主函數,用戶程序從main函數開始運行
  151. * 輸入    : 無
  152. * 輸出    : 無
  153. * 返回值  : int:返回值為一個16位整形數
  154. * 說明    : 無
  155. *******************************************************************************/
  156. int main(void)
  157. {
  158.         unsigned int W5500_Send_Delay_Counter =0;

  159.         Load_Net_Parameters();                //裝載網絡參數       
  160.         W5500_Hardware_Reset();                //硬件復位W5500
  161.         W5500_Initialization();                //W5500初始貨配置
  162.         while (1)
  163.         {
  164.                 W5500_Socket_Set();//W5500端口初始化配置
  165.                
  166.                 W5500_Interrupt_Process();//W5500中斷處理程序框架

  167.                 if((S0_Data & S_RECEIVE) == S_RECEIVE)//如果Socket0接收到數據
  168.                 {
  169.                         S0_Data&=~S_RECEIVE;
  170.                         Process_Socket_Data(0);//W5500接收并發送接收到的數據
  171.                 }
  172.                 else if(W5500_Send_Delay_Counter >= 3000)//定時發送字符串
  173.                 {
  174.                         if(S0_State == (S_INIT|S_CONN))
  175.                         {
  176.                                 S0_Data&=~S_TRANSMITOK;
  177. ……………………

  178. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:456878 發表于 2019-1-12 21:30 | 顯示全部樓層
感謝這么重要的學習資料,不過是不是用ch9121的方案更方便呢

評分

參與人數 1黑幣 +15 收起 理由
凌凈清河 + 15 贊一個!還有這種芯片,了解了

查看全部評分

回復

使用道具 舉報

ID:387915 發表于 2019-7-14 09:30 | 顯示全部樓層
我試了這個例程不能用啊,在STC89C51單片機用不了
回復

使用道具 舉報

ID:585455 發表于 2019-8-9 20:29 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:585455 發表于 2019-8-12 23:10 | 顯示全部樓層
STC89C52RC程式碼編譯沒問題
但是無法連線
ping不到

我用arduino uno連接w5500測試沒問題
表示硬件是ok的

不知版主是否能指導一下
回復

使用道具 舉報

ID:599723 發表于 2019-8-13 14:14 | 顯示全部樓層

感謝分享
回復

使用道具 舉報

ID:614124 發表于 2019-10-19 18:03 | 顯示全部樓層
是的,我使用STC12C5A60S2,亦不能用,ping不通,有沒有什么秘訣?
回復

使用道具 舉報

ID:20672 發表于 2019-11-22 20:51 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:660412 發表于 2019-12-10 11:12 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:314228 發表于 2020-4-6 14:57 | 顯示全部樓層
十分感謝
回復

使用道具 舉報

ID:742898 發表于 2020-5-2 17:16 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:382220 發表于 2021-2-1 16:09 | 顯示全部樓層
可以用的嗎,我來測試一下
回復

使用道具 舉報

ID:153777 發表于 2022-3-2 22:44 | 顯示全部樓層

感謝這么重要的學習資料,不過是不是用ch9121的方案更方便呢
回復

使用道具 舉報

ID:603160 發表于 2022-3-3 11:58 | 顯示全部樓層
dzxqyt 發表于 2022-3-2 22:44
感謝這么重要的學習資料,不過是不是用ch9121的方案更方便呢

ch9121用的開源廣場技小新PCB文件打板的,焊接了3塊,一塊都不行,用不了
回復

使用道具 舉報

ID:688893 發表于 2022-3-3 13:08 來自手機 | 顯示全部樓層
我也遇到同樣的問題
回復

使用道具 舉報

ID:688893 發表于 2022-3-3 13:10 來自手機 | 顯示全部樓層
dzxqyt 發表于 2022-3-2 22:44
感謝這么重要的學習資料,不過是不是用ch9121的方案更方便呢

你們用的怎么樣,我是用的聯不上
回復

使用道具 舉報

ID:688008 發表于 2022-3-3 14:48 | 顯示全部樓層
好用又不貴!
回復

使用道具 舉報

ID:688893 發表于 2022-5-3 23:44 來自手機 | 顯示全部樓層
huogq 發表于 2022-3-3 13:10
你們用的怎么樣,我是用的聯不上

可以用,我都聯上了。
回復

使用道具 舉報

ID:307719 發表于 2022-5-23 09:33 | 顯示全部樓層
我也是用ch9121方案的
222.png
9121.png
22222.png
回復

使用道具 舉報

ID:932719 發表于 2023-6-13 10:22 | 顯示全部樓層
DHCP的有嗎?
回復

使用道具 舉報

ID:1085441 發表于 2023-6-30 20:45 | 顯示全部樓層
W5500剛調通,收發數據都可以,我用的單片機是STC8C2K64S4
回復

使用道具 舉報

ID:796531 發表于 2023-6-30 21:49 | 顯示全部樓層
好東西,手頭正好有W5500以太網模塊,借鑒程序來試試
回復

使用道具 舉報

ID:1085441 發表于 2023-7-1 00:18 | 顯示全部樓層
liangjing 發表于 2019-1-12 21:30
感謝這么重要的學習資料,不過是不是用ch9121的方案更方便呢

剛才看了一下CH9121,感覺比W5500簡單,準備試試CH9121
回復

使用道具 舉報

ID:1086732 發表于 2023-7-1 08:54 | 顯示全部樓層
太好了。剛才看了一下CH9121,感覺比W5500簡單,準備試試CH9121
回復

使用道具 舉報

ID:1085441 發表于 2023-7-2 01:48 | 顯示全部樓層
如果不需要多個socket,可以用CH9120,更簡單一些,價格也便宜一些。
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本三级在线视频 | 天色综合网 | 国产视频在线观看一区二区三区 | 激情五月综合 | 日韩欧美国产电影 | 欧美综合国产精品久久丁香 | 欧美阿v | 欧美色综合一区二区三区 | 热99视频| 中文字幕av中文字幕 | 国产精品免费在线 | 国产一级淫片a直接免费看 免费a网站 | 精品国产18久久久久久二百 | 日韩精品中文字幕一区二区三区 | 成人欧美一区二区三区黑人孕妇 | 色欧美片视频在线观看 | 在线看黄免费 | 国产黄色一级电影 | 三a毛片 | 精品九九九 | 成人免费区一区二区三区 | 日日干夜夜草 | 久久合久久| 成人免费视频播放 | 成人在线电影在线观看 | 日日碰狠狠躁久久躁婷婷 | 夜夜av| 黄色毛片一级 | 国产精品久久久久久久久免费樱桃 | 欧美美女被c | 在线观看中文字幕一区二区 | 国产日韩免费视频 | 亚洲一区二区三区免费在线观看 | 欧美日本久久 | 精品国产aⅴ | av久久| 91麻豆精品一区二区三区 | 在线一区 | 欧美全黄| 超碰97人人人人人蜜桃 | 欧美最猛黑人xxxx黑人 |