7位:电阻分辨率-127电阻器(128步) -->W
/* -----------------------------------------宏定义-----------------------------------------*/
/* -----------------------------------------头文件-----------------------------------------*/
#include "main.h"
/* -----------------------------------------结构体定义-------------------------------------*/
/* -----------------------------------------全局变量定义-----------------------------------*/
code IIC_TYPE MCP4017 = {2, 0x5E};
/* -----------------------------------------应用程序---------------------------------------*/
void MCP4017_Init(void)
{
IIC_Init(); // I2C初始化
}
/*********************************************
函数名:MCP4017_Write_DATA
功 能:写 地址 数据
形 参:addr 地址 dat 数据
**********************************************/
void MCP4017_Write_DATA(const uint8_t addr, const uint8_t DATA)
{
IIC_Start(); // 启动
IIC_WriteByte(MCP4017.ADDR); // 设备地址
IIC_Wait_ACK(); // 等待数据响应
// IIC_WriteByte(addr); // 发送寄存器地址
// IIC_Wait_ACK(); // 等待数据响应
IIC_WriteByte(DATA); // 发送数据
IIC_Wait_ACK(); // 等待数据响应
IIC_Stop(); // 停止
}
/*********************************************
函数名:PAJ7620U2_Read_DATA
功 能:读地址数据
形 参:addr--寄存器地址
返回值:
备 注:
作 者:薛建强
时 间:2020/03/19
**********************************************/
uint8_t MCP4017_Read_DATA(const uint8_t addr)
{
uint8_t GET_DATA = 0;
// IIC_Start(); // 启动
// IIC_WriteByte(MCP4017.ADDR); // 发送地址
// IIC_Wait_ACK(); // 等待数据响应
// IIC_WriteByte(addr); // 发送地址
// IIC_Wait_ACK(); // 等待数据响应
IIC_Start(); // 启动
IIC_WriteByte(MCP4017.ADDR | 1); // 发送地址
IIC_Wait_ACK(); // 等待数据响应
GET_DATA = IIC_ReadByte(); // 获取数据
IIC_Wait_ACK(); // 等待数据响应
IIC_Stop(); // 停止
return GET_DATA;
}
#ifndef _MCP4017_H
#define _MCP4017_H
/* -----------------------------------------宏定义-----------------------------------------*/
/* -----------------------------------------头文件-----------------------------------------*/
#include "main.h"
/* -----------------------------------------结构体定义-------------------------------------*/
/* -----------------------------------------全局变量定义-----------------------------------*/
/* -----------------------------------------应用程序---------------------------------------*/
void MCP4017_Write_DATA(const uint8_t addr, const uint8_t DATA);
void MCP4017_Init(void);
uint8_t MCP4017_Read_DATA(const uint8_t addr);
#endif
使用例子:
xdata uint8_t MCP_VAL_Old = 0, MCP_VAL_New = 0;
xdata uint8_t MCP_VAL_Req = 0;
MCP4017_Init();
for (;;)
{
if (MCP_VAL_Old != MCP_VAL_New)
{
MCP4017_Write_DATA(0, MCP_VAL_New);
os_wait(K_IVL, 50, 0);//50ms
MCP_VAL_Req = MCP4017_Read_DATA(0);
if (MCP_VAL_Req == MCP_VAL_New)
{
MCP_VAL_Old = MCP_VAL_New;
}
}
os_wait(K_IVL, 50, 0);//50ms
}
单击按键:
if (MCP_VAL_New < 130 && ++MCP_VAL_New > 127) MCP_VAL_New = 0;
if (MCP_VAL_New >= 127)
{
MCP_VAL_New = 0;
}
上一篇:单片机 ADC采集电压
下一篇:单片机 ADXL346 IIC通讯
推荐阅读最新更新时间:2024-10-27 09:20
设计资源 培训 开发板 精华推荐
- 使用 STMicroelectronics 的 GAL16V8 的参考设计
- XLIOT温湿度模块
- 烙铁改制
- ESP32-单手遥控器
- LTC3621IDCB-2 1.2Vout、同步至 600kHz、强制连续模式同步降压型稳压器的典型应用
- 感应无线充电系统
- SOT-23 10MHz 轨到轨运算放大器节省电路板空间和功耗
- MATEK F411固定翼飞控
- 使用 RP40-11024SFR DC/DC 转换器并根据 EN55022 Class B 进行 EMC 滤波的典型应用(110Vin 单输出)
- 使用基于 ZICM357SP2-1C-R Ember EM35x 收发器模块的 Mesh Connect EM35x 迷你模块的典型应用电路
- [年末调查]工程师年末大盘点,你被点名了!
- 等你报名做客黑科技直播间:基于 TI DLP®技术的工业创新应用介绍
- 试用Vishay新型“IHLP磁芯损耗计算器”,抢楼赢好礼
- 有奖学习 | Multi-Die系统的设计和验证很难吗?教你轻松“拿捏”
- 观展有礼 | 到 e 络盟展台,领星巴克咖啡券(上海慕尼黑电子展)
- 【双节献礼】LM3S9B96开发套件等你来拿!!!
- 高性能 i.MX RT 处理器助力智能节点无需联网实现机器学习
- Littelfuse第4期:新型车载以太网保护
- 有奖直播:意法半导体SiC产品及其工业应用指南
- 有奖直播:TI最新C2000实时控制器,在功率变换应用中实现高性能的成本优化型设计