[单片机][N76E003][MCP4017][MCP4018][MCP4019] 数字电位器 使用方法 例子 代码

一、简介

  • 电位器或变阻器配置选项

  • 7位:电阻网络分辨率

    • 127个电阻(128个步骤)
  • 零刻度到满刻度雨刷操作

  • RAB电阻:5 kΩ, 10 kΩ, 50 kΩ或100 kΩ

  • 低雨刷阻力:100Ω(典型)

  • 低温度:

    • 绝对(变阻器):典型50 ppm (0℃~ 70℃)

    • 比率(电位器):10 ppm典型

  • 简单的I2C协议与读写命令

  • 断电复位保护(典型1.5V)

  • 上电默认雨刷设置(中等规模)

  • 低功耗运行:

  • 2.5µA静态电流(典型)
  • 宽工作电压范围:

    • 2.7V ~ 5.5V—设备特性

    • 1.8V ~ 5.5V—设备操作

二、特性

三、通信

在这里插入图片描述
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 数据
作  者:薛建强
时  间:2020/03/19
**********************************************/
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;
                    }

IIC软模拟协议

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jianqiang.xue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值