2024-09-01
售卖作品
00

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模拟呼吸灯效果。

c
unsigned 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

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!