c语言编程实现用TO对外部输入脉冲进行计数。PO 口上接8只发光二级管,开始时8只发光二级管全灭,然后由 TO输入脉冲,5 个脉冲后,8只发光二级管全亮,持续5个脉冲后全灭,再等5个脉冲输入后全亮,如此循环。
时间: 2024-03-16 11:46:56 浏览: 17
这里提供一种基于C语言的实现方法:
```C
#include <stdio.h>
#include <wiringPi.h>
#define TO_PIN 2
#define PO_PIN 3
#define LED_COUNT 8
#define PULSE_COUNT 5
#define CYCLE_COUNT 2
const int LED_PINS[LED_COUNT] = {4, 5, 6, 7, 8, 9, 10, 11};
void toggleLeds();
int main() {
wiringPiSetup();
pinMode(TO_PIN, INPUT);
pinMode(PO_PIN, OUTPUT);
for (int i = 0; i < LED_COUNT; i++) {
pinMode(LED_PINS[i], OUTPUT);
}
int pulseCount = 0;
int cycleIndex = 0;
while (cycleIndex < CYCLE_COUNT) {
if (digitalRead(TO_PIN) == HIGH) {
pulseCount++;
digitalWrite(PO_PIN, HIGH);
delay(10);
digitalWrite(PO_PIN, LOW);
if (pulseCount >= PULSE_COUNT) {
pulseCount = 0;
cycleIndex++;
toggleLeds();
delay(1000);
}
}
}
return 0;
}
void toggleLeds() {
for (int i = 0; i < LED_COUNT; i++) {
digitalWrite(LED_PINS[i], HIGH);
}
delay(500);
for (int i = 0; i < LED_COUNT; i++) {
digitalWrite(LED_PINS[i], LOW);
}
delay(500);
}
```
和Arduino的实现方法类似,该程序通过轮询TO口的电平变化来计数,当计数到达指定数量后,调用`toggleLeds()`函数控制发光二极管的状态。在`toggleLeds()`函数中,首先将所有发光二极管设置为高电平,保持500ms,然后将所有发光二极管设置为低电平,同样保持500ms。这个过程将重复执行两个循环周期。需要注意的是,wiringPi库需要单独安装。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)