|
基于W5500的以太網溫度采集設備,STC12C5A60S2+W5500
0.png (43.65 KB, 下載次數: 105)
下載附件
2017-6-14 00:29 上傳
0.png (45.47 KB, 下載次數: 118)
下載附件
2017-6-14 00:29 上傳
單片機源程序如下:
- #include "stc12c5a60s2.h"
- #include "W5500.h"
- #include <string.h>
- unsigned long int ad[2],ad1[2],ad2[2],num1;
- unsigned char ch=0;
- void Delay(unsigned int d);
- void Timer0Init(void);
- void Delay4us();
- void AD_Init(void);
- void Load_Net_Parameters(void)
- {
- Gateway_IP[0] = 10;
- Gateway_IP[1] = 145;
- Gateway_IP[2] = 249;
- Gateway_IP[3] = 126;
- Sub_Mask[0]=255;
- Sub_Mask[1]=255;
- Sub_Mask[2]=255;
- Sub_Mask[3]=0;
- Phy_Addr[0]=0x0c;
- Phy_Addr[1]=0x29;
- Phy_Addr[2]=0xab;
- Phy_Addr[3]=0x7c;
- Phy_Addr[4]=0x00;
- Phy_Addr[5]=0x01;
- IP_Addr[0]=10;
- IP_Addr[1]=145;
- IP_Addr[2]=249;
- IP_Addr[3]=10;
- S0_Port[0] = 0x13; S0_Port[1] = 0x88;
- S0_DIP[0]=10;
- S0_DIP[1]=145;
- S0_DIP[2]=249;
- S0_DIP[3]=19;
-
- S0_DPort[0] = 0x17;
- S0_DPort[1] = 0x70;
- S0_Mode=TCP_SERVER; }
- void W5500_Socket_Set(void)
- {
- if(S0_State==0)
- {
- if(S0_Mode==TCP_SERVER)
- {
- if(Socket_Listen(0)==TRUE)
- S0_State=S_INIT;
- else
- S0_State=0;
- }
- else if(S0_Mode==TCP_CLIENT)
- {
- if(Socket_Connect(0)==TRUE)
- S0_State=S_INIT;
- else
- S0_State=0;
- }
- else//UDP??
- {
- if(Socket_UDP(0)==TRUE)
- S0_State=S_INIT|S_CONN;
- else
- S0_State=0;
- }
- }
- }
- void Process_Socket_Data(SOCKET s)
- {
- unsigned short size;
- size=Read_SOCK_Data_Buffer(s, Rx_Buffer);
- memcpy(Tx_Buffer, Rx_Buffer, size);
- Write_SOCK_Data_Buffer(s, Tx_Buffer, size);
- }
- int main(void)
- {
- unsigned int W5500_Send_Delay_Counter =0;
- Load_Net_Parameters();
- W5500_Hardware_Reset();
- W5500_Initialization();
- Timer0Init();
- AD_Init();
- EADC=1;
- while (1)
- {
- W5500_Socket_Set();
-
- W5500_Interrupt_Process();
- if((S0_Data & S_RECEIVE) == S_RECEIVE)
- {
- S0_Data&=~S_RECEIVE;
- Process_Socket_Data(0); }
- else if(W5500_Send_Delay_Counter >= 3000)
- {
- if(S0_State == (S_INIT|S_CONN))
- {
- S0_Data&=~S_TRANSMITOK;
- Tx_Buffer[0]='\r';
- Tx_Buffer[1]='\n';
- Tx_Buffer[2]=ad[0]/1000%10+'0';
- Tx_Buffer[3]='.';
- Tx_Buffer[4]=ad[0]/100%10+'0';
- Tx_Buffer[5]=ad[0]/10%10+'0';
- Tx_Buffer[6]=ad[0]%10+'0';
- Tx_Buffer[7]='v';
- Tx_Buffer[8]=' ';
- Tx_Buffer[9]=' ';
- Tx_Buffer[10]=ad[1]/100%10+'0';
- Tx_Buffer[11]=ad[1]/10%10+'0';
- Tx_Buffer[12]='.';
- Tx_Buffer[13]=ad[1]%10+'0';
- Tx_Buffer[14]='c';
- Tx_Buffer[15]='\r';
- Tx_Buffer[16]='\n';
- Write_SOCK_Data_Buffer(0, Tx_Buffer, 17); }
- W5500_Send_Delay_Counter=0;
- }
- W5500_Send_Delay_Counter++;
- }
- }
- void Delay(unsigned int x)
- {
- unsigned int i,j;
- for(j=0;j<5;j++)
- for(i=0;i<x;i++);
- }
- void Timer0Init(void)
- {
- AUXR &= 0x7F;
- TMOD &= 0xF0;
- TMOD |= 0x01;
- TL0 = 0x00;
- TH0 = 0xDC;
- TF0 = 0;
- EA=1;
- ET0=1;
- TR0=1;
- }
- void Tinme0User() interrupt 1
- {
- ad2[0]+=ad1[0];
- ad2[1]+=ad1[1];
- TL0 = 0x66;
- TH0 = 0xFC;
- num1++;
- if(num1>=1000)
- {
- num1=0;
- ad[0]=ad2[0]*5/1023;
- ad[1]=830-ad[0];
- ad2[0]=0;
- }
- }
- void AD_Init(void)
- {
- AUXR1|=0x04;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
基于W5500的以太網數據采集設備.zip
(31.07 KB, 下載次數: 84)
2017-6-13 21:36 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|