用定时器实现流水灯

本文介绍了如何使用定时器配置和GPIO接口实现流水灯效果。通过设置RCC配置HSE时钟,定时器配置计数模式,GPIO配置LED端口,并结合延时函数,实现了LED灯的交替亮灭,形成流水效果。
摘要由CSDN通过智能技术生成
#include <stm32f4xx.h>

#define GPIO_Pin_6                 0x0040  /* LED2 */

#define GPIO_Pin_7   0x0080  /* LED1 */

#define PLL_M 8
#define PLL_N 336
#define PLL_P 2
#define PLL_Q 7

void RCC_config(void);
void TIMER_config(void);
void GPIO_Config(void);
void Delay_ms(int nCount);

int main()
{
RCC_config();
TIMER_config();
GPIO_Config();
while(1)
{
// Pin_7灭,Pin_6亮
GPIOF->ODR &= ~GPIO_Pin_6;  
GPIOF->ODR |= GPIO_Pin_7;   
Delay_ms(1000);
// Pin_6灭,Pin_7亮
GPIOF->BSRRL |= GPIO_Pin_6;
GPIOF->BSRRH |= GPIO_Pin_7;

555定时器可以用来产生方波信号,可以通过改变方波的频率和占空比来控制LED的亮灭。流水灯通常是多个LED灯按照特定的顺序依次点亮,然后熄灭,再点亮下一个LED,以此类推。因此,我们可以使用555定时器来控制多个LED灯的亮灭,从而实现流水灯效果。 以下是一个简单的流水灯电路图: ![流水灯电路图](https://img-blog.csdnimg.cn/20211107182500343.png) 在这个电路中,我们使用了三个LED灯,它们连接到555定时器的输出引脚和地线上。当555定时器的输出为高电平时,LED1会点亮;当输出为低电平时,LED1会熄灭,LED2会点亮。同样地,当输出为高电平时,LED2会熄灭,LED3会点亮,以此类推。 下面是这个电路的工作原理: 1. 当电路通电时,C1开始充电,同时555定时器的输出为低电平。 2. 当C1充电到2/3的电压时,555定时器的比较器会将输出翻转为高电平,LED1点亮。 3. 在下一个时钟周期内,C1开始放电,直到电压降到1/3的电压,555定时器的比较器再次翻转输出为低电平,LED1熄灭,LED2点亮。 4. 在下一个时钟周期内,C1开始充电,当电压充到2/3时,555定时器的比较器再次翻转输出为高电平,LED2熄灭,LED3点亮。 5. 在下一个时钟周期内,C1开始放电,电压降到1/3时,555定时器的比较器再次翻转输出为低电平,LED3熄灭。 这样,LED1、LED2、LED3会依次点亮和熄灭,形成流水灯效果。 以下是流水灯的代码示例: ``` int ledPin1 = 2; // LED1连接到2号引脚 int ledPin2 = 3; // LED2连接到3号引脚 int ledPin3 = 4; // LED3连接到4号引脚 void setup() { pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); } void loop() { digitalWrite(ledPin1, HIGH); // 点亮LED1 delay(500); // 延时500ms digitalWrite(ledPin1, LOW); // 熄灭LED1 digitalWrite(ledPin2, HIGH); // 点亮LED2 delay(500); // 延时500ms digitalWrite(ledPin2, LOW); // 熄灭LED2 digitalWrite(ledPin3, HIGH); // 点亮LED3 delay(500); // 延时500ms digitalWrite(ledPin3, LOW); // 熄灭LED3 } ``` 当然,这只是一个简单的流水灯实现方式,如果你想要更加复杂的效果,可以尝试使用更多的LED灯和更多的555定时器,或者使用其他的芯片来实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值