两个74hc573 4位数码管显示程序
时间: 2023-11-24 21:05:14 浏览: 46
好的,这里是一个使用两个74hc573和4个数码管进行数字显示的Arduino程序示例:
```C++
// 定义74hc573芯片控制引脚
const int LE_PIN = 2; // 锁存时钟信号
const int OE_PIN = 3; // 输出使能信号
const int CP_PIN = 4; // 数据时钟信号
// 定义数码管控制引脚
const int DIGIT1_A = 5;
const int DIGIT1_B = 6;
const int DIGIT1_C = 7;
const int DIGIT1_D = 8;
const int DIGIT2_A = 9;
const int DIGIT2_B = 10;
const int DIGIT2_C = 11;
const int DIGIT2_D = 12;
// 定义数字编码表
const byte DIGIT_TABLE[] = {
B11111100, // 数字0
B01100000, // 数字1
B11011010, // 数字2
B11110010, // 数字3
B01100110, // 数字4
B10110110, // 数字5
B00111110, // 数字6
B11100000, // 数字7
B11111110, // 数字8
B11110110 // 数字9
};
void setup() {
// 初始化控制引脚
pinMode(LE_PIN, OUTPUT);
pinMode(OE_PIN, OUTPUT);
pinMode(CP_PIN, OUTPUT);
pinMode(DIGIT1_A, OUTPUT);
pinMode(DIGIT1_B, OUTPUT);
pinMode(DIGIT1_C, OUTPUT);
pinMode(DIGIT1_D, OUTPUT);
pinMode(DIGIT2_A, OUTPUT);
pinMode(DIGIT2_B, OUTPUT);
pinMode(DIGIT2_C, OUTPUT);
pinMode(DIGIT2_D, OUTPUT);
// 初始化输出状态
digitalWrite(LE_PIN, LOW);
digitalWrite(OE_PIN, LOW);
digitalWrite(CP_PIN, LOW);
}
void loop() {
// 显示数字1234
for (int i = 1; i <= 4; i++) {
digitalWrite(LE_PIN, LOW);
digitalWrite(OE_PIN, LOW);
// 设置数据
shiftOut(CP_PIN, DATA_PIN, MSBFIRST, 0); // 第一个芯片的数据
shiftOut(CP_PIN, DATA_PIN, MSBFIRST, DIGIT_TABLE[i]); // 第二个芯片的数据
digitalWrite(LE_PIN, HIGH);
// 设置位选
switch (i) {
case 1:
digitalWrite(DIGIT1_A, LOW);
digitalWrite(DIGIT1_B, LOW);
digitalWrite(DIGIT1_C, LOW);
digitalWrite(DIGIT1_D, LOW);
digitalWrite(DIGIT2_A, HIGH);
digitalWrite(DIGIT2_B, HIGH);
digitalWrite(DIGIT2_C, HIGH);
digitalWrite(DIGIT2_D, HIGH);
break;
case 2:
digitalWrite(DIGIT1_A, HIGH);
digitalWrite(DIGIT1_B, LOW);
digitalWrite(DIGIT1_C, LOW);
digitalWrite(DIGIT1_D, HIGH);
digitalWrite(DIGIT2_A, LOW);
digitalWrite(DIGIT2_B, HIGH);
digitalWrite(DIGIT2_C, HIGH);
digitalWrite(DIGIT2_D, LOW);
break;
case 3:
digitalWrite(DIGIT1_A, LOW);
digitalWrite(DIGIT1_B, LOW);
digitalWrite(DIGIT1_C, HIGH);
digitalWrite(DIGIT1_D, HIGH);
digitalWrite(DIGIT2_A, HIGH);
digitalWrite(DIGIT2_B, HIGH);
digitalWrite(DIGIT2_C, LOW);
digitalWrite(DIGIT2_D, LOW);
break;
case 4:
digitalWrite(DIGIT1_A, LOW);
digitalWrite(DIGIT1_B, HIGH);
digitalWrite(DIGIT1_C, HIGH);
digitalWrite(DIGIT1_D, LOW);
digitalWrite(DIGIT2_A, HIGH);
digitalWrite(DIGIT2_B, LOW);
digitalWrite(DIGIT2_C, LOW);
digitalWrite(DIGIT2_D, HIGH);
break;
}
delay(10); // 延时10毫秒
}
}
```
这个程序可以在Arduino上运行,将数字1234依次显示在4个数码管上。其中,shiftOut函数用于将数据输出到74hc573芯片,根据具体的连接方式和数码管类型可能需要进行调整。另外,位选控制也需要根据具体的数码管类型进行调整。