/**********************************************************************************
* 文件名 :W5500.c
* 描述 :W5500 驱动函数库
* 淘宝 :http://yixindianzikeji.taobao.com/
**********************************************************************************/
#include "W5500.h"
/***************----- 网络参数变量定义 -----***************/
unsigned char Gateway_IP[4];//网关IP地址
unsigned char Sub_Mask[4]; //子网掩码
unsigned char Phy_Addr[6]; //物理地址(MAC)
unsigned char IP_Addr[4]; //本机IP地址
unsigned char S0_Port[2]; //端口0的端口号
unsigned char S0_DIP[4]; //端口0目的IP地址
unsigned char S0_DPort[2]; //端口0目的端口号
unsigned char UDP_DIPR[4]; //UDP(广播)模式,目的主机IP地址
unsigned char UDP_DPORT[2]; //UDP(广播)模式,目的主机端口号
/***************----- 端口的运行模式 -----***************/
unsigned char S0_Mode =3; //端口0的运行模式,0:TCP服务器模式,1:TCP客户端模式,2:UDP(广播)模式
#define TCP_SERVER 0x00 //TCP服务器模式
#define TCP_CLIENT 0x01 //TCP客户端模式
#define UDP_MODE 0x02 //UDP(广播)模式
/***************----- 端口的运行状态 -----***************/
unsigned char S0_State =0; //端口0状态记录,1:端口完成初始化,2端口完成连接(可以正常传输数据)
#define S_INIT 0x01 //端口完成初始化
#define S_CONN 0x02 //端口完成连接,可以正常传输数据
/***************----- 端口收发数据的状态 -----***************/
unsigned char S0_Data; //端口0接收和发送数据的状态,1:端口接收到数据,2:端口发送数据完成
#define S_RECEIVE 0x01 //端口接收到一个数据包
#define S_TRANSMITOK 0x02 //端口发送一个数据包完成
/***************----- 端口数据缓冲区 -----***************/
unsigned char Rx_Buffer[30]; //端口接收数据缓冲区
unsigned char Tx_Buffer[30]; //端口发送数据缓冲区
unsigned char W5500_Interrupt; //W5500中断标志(0:无中断,1:有中断)
/*******************************************************************************
* 函数名 : SPI_ReadByte
* 描述 : 读取一个字节SPI返回的数据
* 输入 : 无
* 输出 : 无
* 返回值 : 读取到的寄存器数据
* 说明 : 无
*******************************************************************************/
unsigned char SPI_Read_Byte(void)
{
unsigned char i,rByte=0;
W5500_SCLK=0;
for(i=0;i<8;i++)
{
W5500_SCLK=1;
rByte<<=1;
rByte|=W5500_MISO;
W5500_SCLK=0;
}
return rByte;
}
/*******************************************************************************
* 函数名 : SPI_SendByte
* 描述 : SPI发送一个字节数据
* 输入 : dt:待发送的数据
* 输出 : 无
* 返回值 : 无
* 说明 : 无
*******************************************************************************/
void SPI_Send_Byte(unsigned char dt)
{
unsigned char i;
for(i=0;i<8;i++)
{
W5500_SCLK=0;
if((dt<<i)&0x80)
W5500_MOSI=1;
else
W5500_MOSI=0;
W5500_SCLK=1;
}
W5500_SCLK=0;
}
/*******************************************************************************
* 函数名 : SPI_Send_Short
* 描述 : SPI发送2个字节数据(16位)
* 输入 : dat:待发送的16位数据
* 输出 : 无
* 返回值 : 无
* 说明 : 无
*******************************************************************************/
void SPI_Send_Short(unsigned short dt)
{
SPI_Send_Byte((unsigned char)(dt/256)); //写数据高位
SPI_Send_Byte(dt); //写数据低位
}
/*******************************************************************************
* 函数名 : Write_W5500_1Byte
* 描述 : 通过SPI向指定地址寄存器写1个字节数据
* 输入 : reg:16位寄存器地址,dat:待写入的数据
* 输出 : 无
* 返回值 : 无
* 说明 : 无
*******************************************************************************/
void Write_W5500_1Byte(unsigned short reg, unsigned char dat)
{
W5500_SCS=0;//置W5500的SCS为低电平
SPI_Send_Short(reg);//通过SPI写16位寄存器地址
SPI_Send_Byte(FDM1|RWB_WRITE|COMMON_R);//通过SPI写控制字节,1个字节数据长度,写数据,选择通用寄存器
SPI_Send_Byte(dat);//写1个字节数据
W5500_SCS=1; //置W5500的SCS为高电平
}
/*******************************************************************************
* 函数名 : Write_W5500_2Byte
* 描述 : 通过SPI向指定地址寄存器写2个字节数据
* 输入 : reg:16位寄存器地址,dat:16位待写入的数据(2个字节)
* 输出 : 无
* 返回值 : 无
* 说明 : 无
*******************************************************************************/
void Write_W5500_2Byte(unsigned short reg, unsigned short dat)
{
W5500_SCS=0;//置W5500的SCS为低电平
SPI_Send_Short(reg);//通过SPI写16位寄存器地址
SPI_Send_Byte(FDM2|RWB_WRITE|COMMON_R);//通过SPI写控制字节,2个字节数据长度,写数据,选择通用寄存器
SPI_Send_Short(dat);//写16位数据
W5500_SCS=1; //置W5500的SCS为高电平
}
/*******************************************************************************
* 函数名 : Write_W5500_nByte
* 描述 : 通过SPI向指定地址寄存器写n个字节数据
* 输入 : reg:16位寄存器地址,*dat_ptr:待写入数据缓冲区指针,size:待写入的数据长度
* 输出 : 无
* 返回值 : 无
* 说明 : 无
*******************************************************************************/
void Write_W5500_nByte(unsigned short reg, unsigned char *dat_ptr, unsigned short size)
{
unsigned short i;
W5500_SCS=0;//置W5500的SCS为低电平
SPI_Send_Short(reg);//通过SPI写16位寄存器地址
SPI_Send_Byte(VDM|RWB_WRITE|COMMON_R);//通过SPI写控制字节,N个字节数据长度,写数据,选择通用寄存器
for(i=0;i<size;i++)//循环将缓冲区的size个字节数据写入W5500
{
SPI_Send_Byte(*dat_ptr++);//写一个字节数据
}
W5500_SCS=1; //置W5500的SCS为高电平
}
/*******************************************************************************
* 函数名 : Write_W5500_SOCK_1Byte
* 描述 : 通过SPI向指定端口寄存器写1个字节数据
* 输入 : s:端口号,reg:16位寄存器地址,dat:待写入的数据
* 输出 : 无
* 返回值 : 无
* 说明 : 无
*******************************************************************************/
void Write_W5500_SOCK_1Byte(SOCKET s, unsigned short reg, unsigned char dat)
{
W5500_SCS=0;//置W5500的SCS为低电平
SPI_Send_Short(reg);//通过SPI写16位寄存器地址
SPI_Send_Byte(FDM1|RWB_WRITE|(s*0x20+0x08));//通过SPI写控制字节,1个字节数据长度,写数据,选择端口s的寄存器
SPI_Send_Byte(dat);//写1个字节数据
W5500_SCS=1; //置W5500的SCS为高电平
}
/*******************************************************************************
* 函数名 : Write_W5500_SOCK_2Byte
* 描述 : 通过SPI向指定端口寄存器写2个字节数据
* 输入 : s:端口号,reg:16位寄存器地址,dat:16位待写入的数据(2个字节)
* 输出 : 无
* 返回值 : 无
* 说明 : 无
*******************************************************************************/
void Write_W5500_SOCK_2Byte(SOCKET s, unsigned short reg, unsigned short dat)
{
W5500_SCS=0;//置W5500的SCS为低电平
SPI_Send_Short(reg);//通过SPI写16位寄存器地址
SPI_Send_Byte(FDM2|RWB_WRITE|(s*0x20+0x08));//通过SPI写控制字节,2个字节数据长度,写数据,选择端口s的寄存器
SPI_Send_Short(dat);//写16位数据
W5500_SCS=1; //置W5500的SCS为高电平
}
/*******************************************************************************
* 函数名 : Write_W5500_SOCK_4Byte
* 描述 : 通过SPI向指定端口寄存器写4个字节数据
* 输入 : s:端口号,reg:16位寄存器地址,*dat_ptr:待写入的4个字节缓冲区指针
* 输出 : 无
* 返回值 : 无
* 说明 : 无
*******************************************************************************/
void Write_W5500_SOCK_4Byte(SOCKET s, unsigned short reg, unsigned char *dat_ptr)
{
W5500_SCS=0;//置W5500的SCS为低电平
SPI_Send_Short(reg);//通过SPI写16位寄存器地址
SPI_Send_Byte(FDM4|RWB_WRITE|(s*0x20+0x08));//通过SPI写控制字节,4个字节数据长度,写数据,选择端口s的寄存器
SPI_Send_Byte(*dat_ptr++);//写第1个字节数据
SPI_Send_Byte(*dat_ptr++);//写第2个字节数据
SPI_Send_Byte(*dat_ptr++);//写第3个字节数据
SPI_Send_Byte(*dat_ptr++);//写第4个字节数据
W5500_SCS=1; //置W5500的SCS为高电平
}
/*******************************************************************************
* 函数名 : Read_W5500_1Byte
* 描述 : 读W5500指定地址寄存器的1个字节数
没有合适的资源?快使用搜索试试~ 我知道了~
51单片机控制温度传感器的液晶显示利用stc89c52rc来控制w5500网络芯片实现网络通信
共51个文件
obj:6个
c:6个
lst:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 43 浏览量
2023-02-14
15:09:37
上传
评论 1
收藏 258KB ZIP 举报
温馨提示
51单片机控制温度传感器的液晶显示利用stc89c52rc来控制w5500网络芯片实现网络通信。支持三种模式,udp模式,服务端模式,客户端模式。利用《TCP&UDP测试工具》上创建的服务端连接,可以定时给服务端发送字符串,然后接收服务端发来的数据.zip
资源推荐
资源详情
资源评论
收起资源包目录
51单片机控制温度传感器的液晶显示利用stc89c52rc来控制w5500网络芯片实现网络通信。支持三种模式,udp模式,服务端模式,客户端模式。利用《TCP&UDP测试工具》上创建的服务端连接,可以定时给服务端发送字符串,然后接收服务端发来的数据.zip (51个子文件)
51单片机程序例程
YIXIN_W5500模块-客户端模式例程(51单片机)
Project.uvopt 56KB
Project_uvproj.bak 13KB
main.OBJ 18KB
Project.M51 37KB
W5500.c 23KB
W5500.OBJ 38KB
main.LST 11KB
Project.hex 9KB
W5500.h 7KB
Project.plg 236B
Project_uvopt.bak 56KB
W5500.LST 40KB
ExtDll.iex 19B
Project 50KB
main.c 6KB
Project.uvproj 13KB
Project.lnp 57B
YIXIN_W5500模块-服务端模式例程(51单片机)
Project.uvopt 56KB
Project_uvproj.bak 13KB
main.OBJ 18KB
Project.M51 36KB
W5500.c 23KB
W5500.OBJ 37KB
main.LST 11KB
Project.hex 8KB
W5500.h 7KB
Project.plg 236B
Project_uvopt.bak 141KB
W5500.LST 39KB
ExtDll.iex 19B
Project 49KB
main.c 6KB
Project.uvproj 13KB
Project.lnp 57B
YIXIN_W5500模块-UDP模式例程(51单片机)
Project.uvopt 140KB
Project_uvproj.bak 13KB
main.OBJ 19KB
Project.M51 37KB
W5500.c 23KB
W5500.OBJ 37KB
main.LST 12KB
Project.hex 9KB
W5500.h 7KB
Project.plg 218B
Project_uvopt.bak 140KB
W5500.LST 39KB
ExtDll.iex 19B
Project 50KB
main.c 6KB
Project.uvproj 13KB
Project.lnp 57B
H
共 51 条
- 1
资源评论
GZM888888
- 粉丝: 514
- 资源: 3069
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于SpringBoot+Vue的校园招聘管理系统(前端代码)
- C++期末大作业-2024-QT仓库商品管理系统,经过老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用
- DH-GSTN5600 剩余电流式电气火灾监控探测器 安装使用说明书
- 天津理工大学信息系统设计实验
- jsp ssm 学校录取查询系统 高校志愿填报录取 项目源码 web java【项目源码+数据库脚本+项目说明+软件工具】毕设
- jsp ssm 网上购物系统 在线购物 在线商城平台 项目源码 web java【项目源码+数据库脚本+项目说明+软件工具】毕设
- 29网课交单平台源码最新修复全开源版本
- jsp ssm 超市网上购物系统 超市管理 超市购物 项目源码 web java【项目源码+数据库脚本+项目说明+软件工具】毕
- 海湾火灾自动报警系统主要设备参数
- C++自制多功能游戏头文件
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功