数码管7seg-mpx2-cc如何同时显示两个数字要用c语言的,第五节 七数码管的使用.doc...
时间: 2024-03-20 20:39:18 浏览: 76
要同时显示两个数字,需要使用多路复用器(MUX)来控制数码管的显示。下面是一个基本的C语言程序示例,用于在两个数码管上显示不同的数字:
```c
#include <stdio.h>
#include <wiringPi.h>
// 数码管的引脚定义
#define SEG_A 0
#define SEG_B 1
#define SEG_C 2
#define SEG_D 3
#define SEG_E 4
#define SEG_F 5
#define SEG_G 6
#define SEG_DP 7
#define DIGIT1 8
#define DIGIT2 9
int main()
{
int digits[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
int num1 = 5; // 第一个数字
int num2 = 3; // 第二个数字
wiringPiSetup(); // 初始化WiringPi库
pinMode(SEG_A, OUTPUT);
pinMode(SEG_B, OUTPUT);
pinMode(SEG_C, OUTPUT);
pinMode(SEG_D, OUTPUT);
pinMode(SEG_E, OUTPUT);
pinMode(SEG_F, OUTPUT);
pinMode(SEG_G, OUTPUT);
pinMode(SEG_DP, OUTPUT);
pinMode(DIGIT1, OUTPUT);
pinMode(DIGIT2, OUTPUT);
while(1) {
// 第一个数码管显示第一个数字
digitalWrite(DIGIT1, HIGH);
digitalWrite(DIGIT2, LOW);
digitalWrite(SEG_A, digits[num1][0]);
digitalWrite(SEG_B, digits[num1][1]);
digitalWrite(SEG_C, digits[num1][2]);
digitalWrite(SEG_D, digits[num1][3]);
digitalWrite(SEG_E, digits[num1][4]);
digitalWrite(SEG_F, digits[num1][5]);
digitalWrite(SEG_G, digits[num1][6]);
delay(5);
// 第二个数码管显示第二个数字
digitalWrite(DIGIT1, LOW);
digitalWrite(DIGIT2, HIGH);
digitalWrite(SEG_A, digits[num2][0]);
digitalWrite(SEG_B, digits[num2][1]);
digitalWrite(SEG_C, digits[num2][2]);
digitalWrite(SEG_D, digits[num2][3]);
digitalWrite(SEG_E, digits[num2][4]);
digitalWrite(SEG_F, digits[num2][5]);
digitalWrite(SEG_G, digits[num2][6]);
delay(5);
}
return 0;
}
```
在这个程序中,我们使用了一个 `digits` 数组来存储数字 0-9 的每个数码管段的状态。然后,我们使用 `digitalWrite` 函数控制每个数码管段的状态,并使用 `delay` 函数来控制每个数码管的刷新速率。在主循环中,我们交替显示两个数字,并在每个数字上设置一个数字选择引脚(`DIGIT1` 和 `DIGIT2`)。