实现指示灯闪烁的程序主要依赖于所使用的微控制器和编程语言。以下是一些常见的方法和示例代码:
方法一:使用单个定时器
C语言示例(基于AT89C52):
```c
include
define uchar unsigned char
define uint unsigned int
uchar aa = 1;
void delay(uint ms) {
uint i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 123; j++);
}
void led_blink(uchar pin, uchar frequency) {
while (1) {
digitalWrite(pin, HIGH);
delay(frequency);
digitalWrite(pin, LOW);
delay(frequency);
}
}
int main() {
P1_0 = 1; // 初始状态为亮
while (1) {
led_blink(P1_0, 1); // 1Hz闪烁
delay(500); // 半周期500ms
led_blink(P1_1, 2); // 2Hz闪烁
delay(250); // 半周期250ms
led_blink(P1_2, 3); // 3Hz闪烁
delay(165); // 半周期165ms
led_blink(P1_3, 4); // 4Hz闪烁
delay(125); // 半周期125ms
}
return 0;
}
```
方法二:使用双定时器
C语言示例:
```c
include
define uchar unsigned char
define uint unsigned int
uchar led_pin1 = P1_0;
uchar led_pin2 = P1_1;
uchar led_pin3 = P1_2;
uchar led_pin4 = P1_3;
void delay(uint ms) {
uint i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 123; j++);
}
void led_blink_1(uchar pin) {
while (1) {
digitalWrite(pin, HIGH);
delay(500);
digitalWrite(pin, LOW);
delay(500);
}
}
void led_blink_2(uchar pin) {
while (1) {
digitalWrite(pin, HIGH);
delay(250);
digitalWrite(pin, LOW);
delay(250);
}
}
void led_blink_3(uchar pin) {
while (1) {
digitalWrite(pin, HIGH);
delay(165);
digitalWrite(pin, LOW);
delay(165);
}
}
void led_blink_4(uchar pin) {
while (1) {
digitalWrite(pin, HIGH);
delay(125);
digitalWrite(pin, LOW);
delay(125);
}
}
int main() {
while (1) {
led_blink_1(led_pin1); // 1Hz闪烁
delay(500);
led_blink_2(led_pin2); // 2Hz闪烁
delay(250);
led_blink_3(led_pin3); // 3Hz闪烁
delay(165);
led_blink_4(led_pin4); // 4Hz闪烁
delay(125);
}
return 0;
}
```
方法三:使用Arduino IDE
Arduino C++示例:
```cpp
void setup() {
pinMode(10, OUTPUT); // 设置引脚10为输出模式
}
void loop() {
digitalWrite(10, HIGH); // 点亮灯
delay(1000); // 延迟1秒
digitalWrite(10, LOW); // 熄灭灯
delay(1000); // 延迟1秒
}
```
方法四:使用Python和RPi.GPIO
Python示例: