用C++实现八进制计数器数码管显示的代码
时间: 2024-05-05 19:20:00 浏览: 11
以下是用C实现八进制计数器数码管显示的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <wiringPi.h>
#define PIN_A 0
#define PIN_B 1
#define PIN_C 2
#define PIN_D 3
#define PIN_E 4
#define PIN_F 5
#define PIN_G 6
#define PIN_DP 7
void displayDigit(int digit) {
switch (digit) {
case 0:
digitalWrite(PIN_A, HIGH);
digitalWrite(PIN_B, HIGH);
digitalWrite(PIN_C, HIGH);
digitalWrite(PIN_D, HIGH);
digitalWrite(PIN_E, HIGH);
digitalWrite(PIN_F, HIGH);
digitalWrite(PIN_G, LOW);
digitalWrite(PIN_DP, LOW);
break;
case 1:
digitalWrite(PIN_A, LOW);
digitalWrite(PIN_B, HIGH);
digitalWrite(PIN_C, HIGH);
digitalWrite(PIN_D, LOW);
digitalWrite(PIN_E, LOW);
digitalWrite(PIN_F, LOW);
digitalWrite(PIN_G, LOW);
digitalWrite(PIN_DP, LOW);
break;
case 2:
digitalWrite(PIN_A, HIGH);
digitalWrite(PIN_B, HIGH);
digitalWrite(PIN_C, LOW);
digitalWrite(PIN_D, HIGH);
digitalWrite(PIN_E, HIGH);
digitalWrite(PIN_F, LOW);
digitalWrite(PIN_G, HIGH);
digitalWrite(PIN_DP, LOW);
break;
case 3:
digitalWrite(PIN_A, HIGH);
digitalWrite(PIN_B, HIGH);
digitalWrite(PIN_C, HIGH);
digitalWrite(PIN_D, HIGH);
digitalWrite(PIN_E, LOW);
digitalWrite(PIN_F, LOW);
digitalWrite(PIN_G, HIGH);
digitalWrite(PIN_DP, LOW);
break;
case 4:
digitalWrite(PIN_A, LOW);
digitalWrite(PIN_B, HIGH);
digitalWrite(PIN_C, HIGH);
digitalWrite(PIN_D, LOW);
digitalWrite(PIN_E, LOW);
digitalWrite(PIN_F, HIGH);
digitalWrite(PIN_G, HIGH);
digitalWrite(PIN_DP, LOW);
break;
case 5:
digitalWrite(PIN_A, HIGH);
digitalWrite(PIN_B, LOW);
digitalWrite(PIN_C, HIGH);
digitalWrite(PIN_D, HIGH);
digitalWrite(PIN_E, LOW);
digitalWrite(PIN_F, HIGH);
digitalWrite(PIN_G, HIGH);
digitalWrite(PIN_DP, LOW);
break;
case 6:
digitalWrite(PIN_A, HIGH);
digitalWrite(PIN_B, LOW);
digitalWrite(PIN_C, HIGH);
digitalWrite(PIN_D, HIGH);
digitalWrite(PIN_E, HIGH);
digitalWrite(PIN_F, HIGH);
digitalWrite(PIN_G, HIGH);
digitalWrite(PIN_DP, LOW);
break;
case 7:
digitalWrite(PIN_A, HIGH);
digitalWrite(PIN_B, HIGH);
digitalWrite(PIN_C, HIGH);
digitalWrite(PIN_D, LOW);
digitalWrite(PIN_E, LOW);
digitalWrite(PIN_F, LOW);
digitalWrite(PIN_G, LOW);
digitalWrite(PIN_DP, LOW);
break;
default:
break;
}
}
int main() {
int count = 0;
if (wiringPiSetup() == -1) {
printf("Failed to setup wiringPi!");
return 1;
}
pinMode(PIN_A, OUTPUT);
pinMode(PIN_B, OUTPUT);
pinMode(PIN_C, OUTPUT);
pinMode(PIN_D, OUTPUT);
pinMode(PIN_E, OUTPUT);
pinMode(PIN_F, OUTPUT);
pinMode(PIN_G, OUTPUT);
pinMode(PIN_DP, OUTPUT);
while (1) {
displayDigit((count >> 6) & 7);
digitalWrite(PIN_DP, (count >> 9) & 1);
delay(5);
displayDigit((count >> 3) & 7);
digitalWrite(PIN_DP, (count >> 9) & 1);
delay(5);
displayDigit(count & 7);
digitalWrite(PIN_DP, (count >> 9) & 1);
delay(5);
count++;
}
return 0;
}
```
该代码使用WiringPi库控制树莓派上的GPIO引脚,依次显示当前八进制计数器的各个位。其中,`displayDigit()`函数用于显示一个八进制位上的数字,`main()`函数中通过位运算分别获取当前计数器的百位、十位和个位数字,并在数码管上显示。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](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)