在数码管上显示出HELLO-(座位号),例如33号,则结果显示HELLO-33请编写程序、绘制电路图、编译和仿真运行。
由于没有具体的数码管型号和驱动方式,以下提供一种基于数字管74595和BCD-7段数码管的实现方案。
电路图:

程序代码:
// Define the pins of 74595
#define DS_PIN 2
#define SHCP_PIN 3
#define STCP_PIN 4
// Define the seat number
#define SEAT_NUM 33
// Define the letters in BCD code
const uint8_t BCD_H = 0b1000;
const uint8_t BCD_E = 0b1110;
const uint8_t BCD_L = 0b0110;
const uint8_t BCD_O = 0b1111;
const uint8_t BCD_dash = 0b0001;
// Convert a decimal digit to BCD code
uint8_t dec2bcd(uint8_t dec) {
return ((dec / 10) << 4) | (dec % 10);
}
void shiftOut(uint8_t val) {
for (int i = 0; i < 8; i++) {
digitalWrite(DS_PIN, (val & (1 << i)) >> i);
digitalWrite(SHCP_PIN, HIGH);
digitalWrite(SHCP_PIN, LOW);
}
}
void updateDisplay(uint8_t digit1, uint8_t digit2, uint8_t digit3, uint8_t digit4, uint8_t digit5, uint8_t digit6) {
shiftOut(dec2bcd(digit6));
shiftOut(dec2bcd(digit5));
shiftOut(dec2bcd(digit4));
shiftOut(dec2bcd(digit3));
shiftOut(dec2bcd(digit2));
shiftOut(dec2bcd(digit1));
digitalWrite(STCP_PIN, HIGH);
digitalWrite(STCP_PIN, LOW);
}
void setup() {
pinMode(DS_PIN, OUTPUT);
pinMode(SHCP_PIN, OUTPUT);
pinMode(STCP_PIN, OUTPUT);
updateDisplay(BCD_H, BCD_E, BCD_L, BCD_L, BCD_O, BCD_dash);
delay(500);
}
void loop() {
updateDisplay(BCD_H, BCD_E, BCD_L, BCD_L, BCD_O, BCD_dash);
delay(500);
updateDisplay(dec2bcd(SEAT_NUM / 10