首页 > 其他分享 >[单片机][N76E003][MCP4017][MCP4018][MCP4019] 数字电位器 使用方法 例子 代码

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

时间:2022-10-31 21:33:57浏览次数:79  
标签:VAL DATA 单片机 MCP4017 IIC ----------------------------------------- 电位器 MCP


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


7位:电阻分辨率-127电阻器(128步) -->W

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


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

/* -----------------------------------------宏定义-----------------------------------------*/

/* -----------------------------------------头文件-----------------------------------------*/
#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软模拟协议​​


标签:VAL,DATA,单片机,MCP4017,IIC,-----------------------------------------,电位器,MCP
From: https://blog.51cto.com/xuejianqiang/5811304

相关文章

  • 单片机 温度调控 大功率设备调整PWM输出
    计算式:PWM_Out=100-(75-50)/0.223=10;//50–>正常温度75–当前温度通过计算75°时,PWM调整为10%/*热敏管理任务*/xdatauint8_tCoefficientVaue=100;//温......
  • [单片机框架][driver层][ioctl] MCU模拟Linux注册驱动
    概念ioctl是设备驱动程序中设备控制接口函数,一个字符设备驱动通常会实现设备打开、关闭、读、写等功能,在一些需要细分的情境下,如果需要扩展新的功能,通常以增设ioctl()命......
  • 单片机 STM32 HAL GSM通讯 SIM800L
    /*************笔记****************1、本SIM800L模块采用huart3(串口3),然后huart1(串口1)作为调试输出。2、CudeMX配置huart3:----------------------------------------......
  • 单片机 STM32 HAL PCF8574 例子代码
    #include"extgpio.h"#include"pcf8574.h"#include"74hc595.h"/******************笔记:1、X输入Y输出2、NPN(箭头向下)高电平时导通,PNP(箭头向上)低电平时导通;3、PCF8574......
  • 单片机 STM32 HAL IO扩展 74HC595 例子代码
    #include"74hc595.h"/******************功能:定义HC595的功能引脚备注:变更引脚,由MX配置完成*******************/constT_HC595_PINhc595={.sck_port=HC595_......
  • 单片机 N76E003 EC12 编码器
    sbitEC_B=P0^0;//编码器P0.0端口sbitEC_A=P1^3;//编码器P1.3端口staticuint8_tEC_A_Val=0,EC_B_Val=0;staticuint8_tEC_A_old=0,EC_B_ol......
  • N76E003 单片机 IIC 软模拟
    /*-----------------------------------------头文件-----------------------------------------*/#include"iic.h"/*-----------------------------------------宏定义-......
  • 单片机 ADXL346 IIC通讯
    ​​IIC协议链接​​/*-----------------------------------------头文件-----------------------------------------*/#include"ADXL346.h"#include"math.h"/*--------......
  • [单片机框架][os层] RTX5 中间件 公共函数
    KeilRTX5是一种免版税、确定性、全功能的实时操作系统,它实现了CMSIS-RTOSAPIv2,这是一种适用于基于Cortex-M处理器的设备的通用RTOS接口。功能包括定期激活定时器功......
  • [单片机框架][bsp层][cx32l003][bsp_tim] TIM定时器配置和使用
    TIM1简介高级控制定时器(TIM1)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输......