51单片机流水灯代码用delay改造为有参函数
时间: 2024-10-17 07:10:47 浏览: 26
51单片机流水灯C语言源程序
51单片机流水灯常见的实现方式是通过定时中断配合数码管,如果你想将延时部分改造为带参数的函数,可以这样做:
首先,假设你之前有一个基本的延时函数`delay_ms(unsigned int ms)`,它接受一个毫秒数作为参数,原始的`delay_ms`可能像下面这样简单实现:
```c
void delay_ms(unsigned int ms) {
unsigned int i;
for (i = 0; i < ms*16; ++i); // 这里16是51单片机定时器1的一个计数周期
}
```
对于流水灯的延时,你可以修改这个函数,使其接收一个指针到一个数组,表示每段灯亮的时间,例如:
```c
void light_seq(unsigned char *light_sequence, unsigned int sequence_length) {
unsigned int i;
for (i = 0; i < sequence_length; ++i) {
delay_ms(light_sequence[i]); // 按照数组中的时间延迟
// 然后控制流水灯相应位置点亮、熄灭操作...
}
}
```
在这个新的`light_seq`函数中,传入一个包含每个数码管对应灯段亮起时间的数组,程序会按顺序执行这些延时。
阅读全文