用arduino做一个三位计数器用74HC595数码管显示
时间: 2023-10-12 21:21:09 浏览: 177
Arduino-74系列-165-595-EC11
这里是一个基于Arduino和74HC595芯片的三位计数器示例代码:
```
#include <SPI.h>
int latchPin = 8; // 74HC595的锁存引脚
int clockPin = 13; // 74HC595的时钟引脚
int dataPin = 11; // 74HC595的数据引脚
byte digit[10] = { // 数字的位模式
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111 // 9
};
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
static int count = 0; // 计数器初始化为0
count++; // 每次循环增加计数器
if (count > 999) { // 计数器达到999时重置为0
count = 0;
}
int hundreds = count / 100; // 分离百位数
int tens = (count / 10) % 10; // 分离十位数
int ones = count % 10; // 分离个位数
// 在数码管上显示百位数
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, digit[hundreds]);
digitalWrite(latchPin, HIGH);
delay(5);
// 在数码管上显示十位数
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, digit[tens]);
digitalWrite(latchPin, HIGH);
delay(5);
// 在数码管上显示个位数
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, digit[ones]);
digitalWrite(latchPin, HIGH);
delay(5);
}
```
在这个代码中,首先定义了74HC595芯片的锁存、时钟和数据引脚。然后定义了一个数组,包含0到9的数字的位模式。在主循环中,计数器每次增加1,并将其分离为百位数、十位数和个位数。然后使用shiftOut函数将每个数位的位模式从Arduino发送到74HC595芯片,并在数码管上显示数字。每个数字显示5毫秒,然后循环回到百位数。
阅读全文