arduino上的MCP4725实验:
https://blog.csdn.net/x1131230123/article/details/109365296
MSP430上的MCP4725实验:
https://blog.csdn.net/x1131230123/article/details/109365849
使用DAC4725模块以及电平转换模块,实现呼吸灯。
MSP432 P401R 单片机开发版做的一个呼吸灯:
注意事项:
呼吸灯逻辑:
这段代码是一个循环的无限循环程序,主要用于控制LED的呼吸灯效果。
代码的功能如下:
关闭看门狗计时器:MAP_WDT_A_holdTimer()
设置Flash等待状态:MAP_FlashCtl_setWaitState( FLASH_BANK0, 1 ) 和 MAP_FlashCtl_setWaitState( FLASH_BANK1, 1 )
设置DCO到6MHz:MAP_PCM_setPowerState( PCM_AM_LDO_VCORE1 ) 和 MAP_CS_setDCOCenteredFrequency( CS_DCO_FREQUENCY_6 )
启用浮点运算单元(FPU)和延迟堆栈:MAP_FPU_enableModule() 和 MAP_FPU_enableLazyStacking()
初始化SysTick延迟函数:delay_init( 6000000 )
进入主循环 while ( 1 )
在主循环中,pwm 变量每次增加80,当大于等于4000时,将其重新设置为0。这个变量控制着呼吸的速度。
根据 pwm 的值,计算 ledpwm,如果 pwm 小于等于2000,则 ledpwm 等于 pwm,否则 ledpwm 等于 4000 减去 pwm。
将 ledpwm 设置为2000加上 ledpwm 的值。
调用 Single_WriteI2C( ledpwm ) 函数,将 ledpwm 的值写入到电压。
延时5毫秒。
循环回到步骤7,重复执行上述步骤。
总而言之,这段代码的主要目的是通过控制PWM的数值和使用LED模拟呼吸灯效果。
cunsigned int pwm, ledpwm;
int main( void )
{
/* Halting the watchdog */
MAP_WDT_A_holdTimer();
/* Setting Flash wait state */
MAP_FlashCtl_setWaitState( FLASH_BANK0, 1 );
MAP_FlashCtl_setWaitState( FLASH_BANK1, 1 );
/* Setting DCO to 6 MHz */
MAP_PCM_setPowerState( PCM_AM_LDO_VCORE1 );
MAP_CS_setDCOCenteredFrequency( CS_DCO_FREQUENCY_6 );
/* Enabling the FPU for floating point operation */
MAP_FPU_enableModule();
MAP_FPU_enableLazyStacking();
delay_init( 6000000 ); /* 初始化 SysTick */
while ( 1 )
{
pwm += 80; /* 数值越大 呼吸越快 */
if ( pwm >= 4000 )
pwm = 0;
if ( pwm <= 2000 )
ledpwm = pwm;
else
ledpwm = 4000 - pwm;
ledpwm=2000+ledpwm;
Single_WriteI2C( ledpwm ); /* 写入电压 */
delay_ms( 5 );
}
}
源码:dt2.8tupian.net/2/28880a19b9990.pg3
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!