按钮控制8x8点阵led显示数字
时间: 2023-11-13 07:05:29 浏览: 39
以下是一个基于Arduino的示例代码,通过按钮控制8x8点阵LED显示数字:
// 定义引脚
const int buttonPin = 2; // 按钮引脚
const int latchPin = 4; // 存储器锁存引脚
const int clockPin = 3; // 时钟引脚
const int dataPin = 5; // 数据引脚
// 定义数字的位图
byte digits[10][8] = {
{B00000000, B11111110, B10000010, B10000010, B10000010, B10000010, B11111110, B00000000}, // 0
{B00000000, B00000000, B00000100, B00000100, B11111110, B00000100, B00000100, B00000000}, // 1
{B00000000, B11111110, B10000010, B10000010, B11111110, B10000000, B10000000, B00000000}, // 2
{B00000000, B11111110, B00000010, B00000010, B00000010, B00000010, B11111110, B00000000}, // 3
{B00000000, B00001100, B00010010, B00100010, B11111110, B00000010, B00000010, B00000000}, // 4
{B00000000, B11111110, B10000000, B10000000, B11111110, B00000010, B11111110, B00000000}, // 5
{B00000000, B11111110, B10000000, B10000000, B11111110, B10000010, B11111110, B00000000}, // 6
{B00000000, B11111110, B00000010, B00000010, B00000100, B00001000, B00001000, B00000000}, // 7
{B00000000, B11111110, B10000010, B10000010, B11111110, B10000010, B11111110, B00000000}, // 8
{B00000000, B11111110, B10000010, B10000010, B11111110, B00000010, B11111110, B00000000} // 9
};
void setup() {
// 设置引脚为输入或输出
pinMode(buttonPin, INPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
// 读取按钮状态
int buttonState = digitalRead(buttonPin);
// 如果按钮被按下
if (buttonState == LOW) {
// 显示数字0到9
for (int i = 0; i < 10; i++) {
displayDigit(i);
delay(1000);
}
}
}
// 显示数字
void displayDigit(int digit) {
// 发送位图到LED点阵
for (int row = 0; row < 8; row++) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, digits[digit][row]);
shiftOut(dataPin, clockPin, MSBFIRST, 1 << row);
digitalWrite(latchPin, HIGH);
delay(1);
}
}