#include "myfun.h" // 延时函数声明
#include "IIC.H" // 引脚定义等
void IIC_Start(void) // 起始位
{
SDA=1;
SCL=1;
delay(tt); // 保持4.7uS以上(TSU.STA)
SDA=0;
delay(tt); // 保持4uS以上(THD.STA)
SCL = 0; // 方便下一次时钟从低到高变化的操作。
}
void IIC_Stop(void) // 停止位
{
SDA=0;
SCL=1;
delay(tt); // 保持4.7uS以上(TSU.STO)
SDA=1;
delay(tt); // 保持4.7uS以上(TBUF)
}
void IIC_Ack(void) // 主机应答位
{
SDA=0;
delay(tt); // 保持0.2uS以上(TSU.DAT)
SCL=1;
delay(tt); // 保持4.0uS以上(THIGH)
SCL=0;
delay(tt); // 保持4.7uS以上(TLOW),此语句可以不要
}
void IIC_NoAck(void) // 主机反向应答位
{
SDA=1;
delay(tt);
SCL=1;
delay(tt);
SCL=0;
delay(tt);
}
bit IIC_GetACK() // 获取从机应答信号,返回为0时收到ACK,返回为1时没收到ACK
{
bit ErrorBit;
SDA = 1;
delay(tt); // 保持0.2uS以上(TSU.DAT)
SCL = 1;
delay(tt); // 保持4.0uS以上(THIGH)
ErrorBit=SDA;
SCL = 0;
delay(tt); // 保持4.7uS以上(TLOW),此语句可以不要
return ErrorBit;
}
//*********************************************************************
// 功能描述:主设备向从设备发送个一字节
// 返回值: 0->成功 1->失败
//*********************************************************************/
unsigned char IIC_SendByte(unsigned char Data)
{
unsigned char i; // 位数控制
for (i=0;i<8;i++) // 写入时是用时钟下降沿同步数据
{
if (Data & 0x80)
SDA = 1;
else
SDA = 0;
delay(tt); // 保持0.2uS以上(TSU.DAT)
SCL = 1;
delay(tt); // 保持4.0uS以上(THIGH)
SCL = 0;
delay(tt); // 保持4.7uS以上(TLOW)
Data <<= 1;
}
return IIC_GetACK();
}
//*********************************************************************
// 功能描述:主设备向从设备读取一个字节
// 返回值: 读到的字节
// *********************************************************************/
unsigned char IIC_RecByte(void) // 接收单字节的数据,并返回该字节值
{
unsigned char i,rbyte=0;
SDA=1;
for(i=0;i<8;i++) // 读出时是用时钟上升沿同步数据
{
SCL=0;
delay(tt); // 保持4.7uS以上(TLOW)
SCL=1;
delay(tt); // 保持4.0uS以上(THIGH)
if(SDA) rbyte|=(0x80>>i);
}
SCL=0;
return rbyte;
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于铂电阻PT100温度传感器及IIC接口模数芯片MCP3421设计的测温系统软源码+Proteus仿真,可供学习设计参考: RdFromMCP3421(unsigned char SlaveAddress, unsigned char *pbuf,unsigned char Len) { unsigned char i=0; IIC_Start(); // 从新启动总线 if(IIC_SendByte(SlaveAddress|0x01)==1) return 1; // 读命令 for(i=0;i<Len-1;i++) { *pbuf++=IIC_RecByte(); // 接收1个字节数据 IIC_Ack(); // 应答0,告诉器件还要读下一字节数据 } *pbuf=IIC_RecByte(); // 接收最后1个字节数据 IIC_NoAck(); // 应答
资源推荐
资源详情
资源评论
收起资源包目录
基于铂电阻PT100温度传感器及IIC接口模数芯片MCP3421设计的测温系统软源码+Proteus仿真.zip (31个子文件)
用铂电阻温度传感器PT100及IIC接口模数芯片MCP3421设计的测温系统.pdsprj.WUCANHUI.wch15.workspace 4KB
QQ截图20220605110944.jpg 91KB
软件设计
PT100.uvopt 6KB
PT100.uvproj 14KB
PT100 16KB
IIC.OBJ 5KB
PT100.plg 697B
PT100.uvgui.wch15 69KB
IIC.C 2KB
IIC.H 487B
PT100.uvgui.Administrator 74KB
IIC.LST 5KB
MCP3421.LST 4KB
PT100.LST 4KB
PT100.lnp 84B
myfun.h 199B
mcp3421.H 273B
PT100.hex 6KB
washing_machine.plg 7KB
PT100.M51 18KB
PT100.build_log.htm 1KB
PT100.uvgui_Administrator.bak 74KB
myfun.LST 3KB
MCP3421.OBJ 4KB
PT100.OBJ 7KB
PT100.c 2KB
myfun.OBJ 1KB
myfun.C 1KB
MCP3421.C 2KB
用铂电阻温度传感器PT100及IIC接口模数芯片MCP3421设计的测温系统.DSN 123KB
QQ截图20220605110959.jpg 139KB
共 31 条
- 1
资源评论
- 凌月寒2023-12-24果断支持这个资源,资源解决了当前遇到的问题,给了新的灵感,感谢分享~
GJZGRB
- 粉丝: 1068
- 资源: 5877
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Screenshot_20240430_144340_com.ss.android.ugc.live.jpg
- 回到山沟沟.mp3
- 基于matlab实现自适应波束形成RLS及LMS算法仿真源程序1.rar
- 基于matlab实现自己编写的基于卡尔曼滤波的利用加速度传感器的计步器,测试数据是传感器放在腰部和手臂 .rar
- 基于matlab实现阵列信号处理,波束形成.rar
- 111111111111111111
- 基于matlab实现计步器编程;对当前的计步器装置的数值算法模拟 .rar
- Mdb学习查看PW;access;mdb;pw;password;patch
- 基于matlab实现关于语音信号声源定位DOA估计所用的一些传统算法.rar
- 基于ultralytics-yolov8, 将其检测/分类/分割/姿态等任务移植到rk3588上
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功