蓝桥杯之MCP4017

本文介绍了如何在STM32平台上通过IIC协议读写MCP4017滑动变阻器,以及如何配置STM32CubeMX以采集MCP4017的电压值,并在LCD上显示结果。
摘要由CSDN通过智能技术生成

一、IIC协议读写MCP4017

void MCP4017_Write(u8 val)
{   
	I2CStart();
	I2CSendByte(0x5e);  
	I2CWaitAck();
	
	I2CSendByte(val);  
	I2CWaitAck();
	I2CStop();
}

u8 MCP4017_Read()
{

    u8 val;
	I2CStart();
	I2CSendByte(0x5F);  
	I2CWaitAck();
	
	val = I2CReceiveByte();
	I2CSendNotAck();
	I2CStop();
	return val;


}

二、stm32cubeMX配置

1.由于PB15和PB12

这样设计电路的目的是:让PB14去采集MCP4017滑动变阻器上的电压,但是P12和PB14共用同一个ADC1,所以要使用通道优先级。

MCP4017最大是7位,100kΩ,按比列分配。

void disp_proc()
{

	   HAL_ADC_Start(&hadc1) ;
  MCP_volt = HAL_ADC_GetValue(&hadc1) /4095.0f *3.3f ;//先扫描通道5
	
  HAL_ADC_Start(&hadc1) ;
  v38 = HAL_ADC_GetValue(&hadc1) /4095.0f *3.3f ;   //在扫描通道11

  HAL_ADC_Start(&hadc2) ;
  v37 = HAL_ADC_GetValue(&hadc2) /4095.0f *3.3f ;

    sprintf(text,"R37:%.2f             ",v37);
	LCD_DisplayStringLine(Line0,(u8*)text);
	memset(text,'\0',sizeof(text));

	sprintf(text,"R38:%.2f             ",v38);
    LCD_DisplayStringLine(Line2,(u8*)text);
	memset(text,'\0',sizeof(text));
	
	sprintf(text,"MCP_val:%.2f             ",MCP_val);
    LCD_DisplayStringLine(Line4,(u8*)text);
	memset(text,'\0',sizeof(text));
	
	sprintf(text,"MCP_volt:%.5f             ",MCP_volt);
    LCD_DisplayStringLine(Line6,(u8*)text);
	memset(text,'\0',sizeof(text));

}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MCP4017是一种数字电位器,它可以通过I2C总线进行编程控制。它具有一些使用程序例程的功能,这些例程可以帮助我们更好地理解和使用这个设备。 在使用MCP4017之前,我们需要了解一些基本的概念。首先,我们需要知道如何使用I2C总线和相应的地址来与MCP4017通信。其次,我们需要了解如何设置和读取电位器的值。 一个基本的MCP4017程序例程可以分为以下几个步骤: 1. 初始化I2C总线:我们需要初始化I2C总线,并确保MCP4017的地址正确配置。 2. 设置电位器的初始值:我们可以使用指令将电位器设置为一定的初始值,例如将电位器调节到一半的位置。 3. 读取电位器的当前值:我们可以使用指令从MCP4017中读取当前电位器的值,并将其显示出来。 4. 调整电位器的值:我们可以使用指令调整电位器的值,例如向上或向下调节电位器,以实现所需的电阻调节。 5. 循环执行程序:我们可以将上述的操作放入一个循环中,以实现连续的电位器控制功能。 在编写MCP4017程序例程时,我们还需要考虑一些其他的因素,例如错误处理、超时设置、通信稳定性等。 总之,MCP4017程序例程是一种帮助我们了解和使用MCP4017数字电位器的工具。通过编写和执行这些例程,我们可以更好地掌握数字电位器的控制方法,并将其应用于我们的项目中。 ### 回答2: MCP4017是一款数字电位器芯片,可以用于模拟电路中的调节电阻值。程序例程是指对于MCP4017这款芯片的控制和操作的代码实现。 MCP4017程序例程可以用不同的编程语言进行编写,如C语言、Arduino语言等,以下是一个示例的MCP4017程序例程: 首先,需要定义MCP4017芯片的引脚连接,将其与控制器连接,并声明所需的变量。然后,在程序的初始化部分,需要设置引脚的输入和输出模式,并初始化MCP4017芯片。 接下来,可以使用相应的代码来控制MCP4017芯片的操作。例如,可以使用digitalWrite函数将信号发送到MCP4017芯片的控制引脚,设置电阻的调节方向。使用analogWrite函数可以控制MCP4017芯片电阻值的大小,通过给定一个0到255之间的数值,来调整电阻值的大小。 在实际的应用中,可以根据需要设计更多的功能,如根据外部传感器的值来动态调整电阻值,或者通过串口通信从其他设备读取电阻值等等。这些可以通过在程序例程中添加适当的代码来实现。 最后,在循环部分,可以编写代码来连续更新MCP4017芯片的电阻值。循环内的延时函数可以用来控制电阻值调整的速度或频率。 总之,MCP4017程序例程是指对于MCP4017芯片的控制代码的实现。通过编写相应的程序,可以灵活地控制和调节MCP4017芯片的电阻值,以满足不同应用的需求。 ### 回答3: MCP4017是一款数字电位计,它具有四通道的输出和通过SPI接口进行通信的能力。MCP4017程序例程是使用该数字电位计进行控制和调节的示例程序。 在使用MCP4017之前,首先需要初始化SPI接口,并设置MCP4017的工作模式和通道数。接下来,可以通过SPI接口发送命令将所需的通道值写入到MCP4017的寄存器中。MCP4017的寄存器用于存储每个通道的输出值,可以通过修改这些寄存器的值来实现对相应通道的控制。 示例程序中可以使用循环结构和延时函数来控制MCP4017的输出值。可以通过循环将MCP4017的通道1输出值从最小值逐渐增加到最大值,然后再逐渐减小,实现递增和递减的功能。通过改变循环的次数和延时的时间,可以控制递增和递减的速度。 除了控制递增和递减,MCP4017还可以根据外部输入信号来调节输出值。示例程序中可以使用中断来监听外部输入信号的变化。当外部输入信号变化时,可以通过读取相应的输入状态来判断应该增加还是减小输出值。 总结来说,MCP4017程序例程是通过SPI接口控制MCP4017数字电位计的示例程序。通过修改寄存器的值和使用循环结构和延时函数,可以实现控制递增和递减以及根据外部输入信号调节输出值的功能。这些例程可以作为使用MCP4017的参考,帮助开发者理解和使用该数字电位计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值