找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4713|回复: 1
打印 上一主题 下一主题
收起左侧

基于W5500的以太网温度采集程序

[复制链接]
跳转到指定楼层
楼主
基于W5500的以太网温度采集设备,STC12C5A60S2+W5500



单片机源程序如下:
  1. #include "stc12c5a60s2.h"
  2. #include "W5500.h"                               
  3. #include <string.h>
  4. unsigned long int ad[2],ad1[2],ad2[2],num1;
  5. unsigned char ch=0;
  6. void Delay(unsigned int d);                       
  7. void Timer0Init(void);
  8. void Delay4us();
  9. void AD_Init(void);
  10. void Load_Net_Parameters(void)
  11. {
  12.         Gateway_IP[0] = 10;
  13.         Gateway_IP[1] = 145;
  14.         Gateway_IP[2] = 249;
  15.         Gateway_IP[3] = 126;

  16.         Sub_Mask[0]=255;
  17.         Sub_Mask[1]=255;
  18.         Sub_Mask[2]=255;
  19.         Sub_Mask[3]=0;

  20.         Phy_Addr[0]=0x0c;
  21.         Phy_Addr[1]=0x29;
  22.         Phy_Addr[2]=0xab;
  23.         Phy_Addr[3]=0x7c;
  24.         Phy_Addr[4]=0x00;
  25.         Phy_Addr[5]=0x01;

  26.         IP_Addr[0]=10;
  27.         IP_Addr[1]=145;
  28.         IP_Addr[2]=249;
  29.         IP_Addr[3]=10;

  30.         S0_Port[0] = 0x13;        S0_Port[1] = 0x88;

  31.         S0_DIP[0]=10;
  32.         S0_DIP[1]=145;
  33.         S0_DIP[2]=249;
  34.         S0_DIP[3]=19;
  35.        
  36.         S0_DPort[0] = 0x17;
  37.         S0_DPort[1] = 0x70;

  38.         S0_Mode=TCP_SERVER; }

  39. void W5500_Socket_Set(void)
  40. {
  41.         if(S0_State==0)     
  42.         {
  43.                 if(S0_Mode==TCP_SERVER)
  44.                 {
  45.                         if(Socket_Listen(0)==TRUE)
  46.                                 S0_State=S_INIT;
  47.                         else
  48.                                 S0_State=0;
  49.                 }
  50.                 else if(S0_Mode==TCP_CLIENT)
  51.                 {
  52.                         if(Socket_Connect(0)==TRUE)
  53.                                 S0_State=S_INIT;
  54.                         else
  55.                                 S0_State=0;
  56.                 }
  57.                 else//UDP??
  58.                 {
  59.                         if(Socket_UDP(0)==TRUE)
  60.                                 S0_State=S_INIT|S_CONN;
  61.                         else
  62.                                 S0_State=0;
  63.                 }
  64.         }
  65. }

  66. void Process_Socket_Data(SOCKET s)
  67. {
  68.         unsigned short size;
  69.         size=Read_SOCK_Data_Buffer(s, Rx_Buffer);
  70.         memcpy(Tx_Buffer, Rx_Buffer, size);                       
  71.         Write_SOCK_Data_Buffer(s, Tx_Buffer, size);
  72. }

  73. int main(void)
  74. {
  75.         unsigned int W5500_Send_Delay_Counter =0;

  76.         Load_Net_Parameters();               
  77.         W5500_Hardware_Reset();               
  78.         W5500_Initialization();               
  79.         Timer0Init();
  80.         AD_Init();
  81.         EADC=1;
  82.         while (1)
  83.         {
  84.                 W5500_Socket_Set();
  85.                
  86.                 W5500_Interrupt_Process();

  87.                 if((S0_Data & S_RECEIVE) == S_RECEIVE)
  88.                 {
  89.                         S0_Data&=~S_RECEIVE;
  90.                         Process_Socket_Data(0);                }
  91.                 else if(W5500_Send_Delay_Counter >= 3000)
  92.                 {
  93.                         if(S0_State == (S_INIT|S_CONN))
  94.                         {
  95.                                 S0_Data&=~S_TRANSMITOK;
  96.                                 Tx_Buffer[0]='\r';
  97.                                 Tx_Buffer[1]='\n';
  98.                                 Tx_Buffer[2]=ad[0]/1000%10+'0';
  99.                                 Tx_Buffer[3]='.';
  100.                                 Tx_Buffer[4]=ad[0]/100%10+'0';
  101.                                 Tx_Buffer[5]=ad[0]/10%10+'0';
  102.                                 Tx_Buffer[6]=ad[0]%10+'0';
  103.                             Tx_Buffer[7]='v';
  104.                                 Tx_Buffer[8]=' ';
  105.                             Tx_Buffer[9]=' ';
  106.                                 Tx_Buffer[10]=ad[1]/100%10+'0';
  107.                                 Tx_Buffer[11]=ad[1]/10%10+'0';
  108.                                 Tx_Buffer[12]='.';
  109.                                 Tx_Buffer[13]=ad[1]%10+'0';
  110.                                 Tx_Buffer[14]='c';
  111.                                 Tx_Buffer[15]='\r';
  112.                                 Tx_Buffer[16]='\n';
  113.                                 Write_SOCK_Data_Buffer(0, Tx_Buffer, 17);                        }
  114.                         W5500_Send_Delay_Counter=0;
  115.                 }
  116.                 W5500_Send_Delay_Counter++;
  117.         }
  118. }

  119. void Delay(unsigned int  x)
  120. {
  121.     unsigned int i,j;

  122.     for(j=0;j<5;j++)
  123.                 for(i=0;i<x;i++);
  124. }


  125. void Timer0Init(void)
  126. {
  127.         AUXR &= 0x7F;               
  128.         TMOD &= 0xF0;               
  129.         TMOD |= 0x01;                       
  130.         TL0 = 0x00;       
  131.         TH0 = 0xDC;
  132.         TF0 = 0;               
  133.         EA=1;
  134.         ET0=1;
  135.         TR0=1;
  136. }


  137. void Tinme0User() interrupt 1
  138. {
  139.                 ad2[0]+=ad1[0];
  140.                 ad2[1]+=ad1[1];

  141.                 TL0 = 0x66;               
  142.                 TH0 = 0xFC;               
  143.                 num1++;
  144.                 if(num1>=1000)
  145.                 {
  146.                         num1=0;
  147.                         ad[0]=ad2[0]*5/1023;
  148.                         ad[1]=830-ad[0];                                    
  149.                         ad2[0]=0;
  150.                 }
  151. }

  152. void AD_Init(void)
  153. {
  154.                 AUXR1|=0x04;
  155. ……………………

  156. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
基于W5500的以太网数据采集设备.zip (31.07 KB, 下载次数: 83)


评分

参与人数 1黑币 +5 收起 理由
dgwpx + 5 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:1 发表于 2017-6-14 00:31 | 只看该作者
谢谢分享不过缺少头文件 能补上吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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