2
4 자리 7seg 디스플레이에서 숫자를 출력하기 위해 두 개의 595 시프트 레지스터를 사용하는 데 문제가 있습니다.4 자리 7 세그먼트 LED 제어 74HC595 시프트 레지스터를 사용하여 디스플레이
정확하게 숫자를 표시하는 시점에 이르렀지만 출력물이 표시되는 숫자 사이에 약간의 쓰레기가 깜박 거리는 문제가 있습니다. 어떻게 이런 일이 일어나지 않도록합니까?
저는 레지스터에 바이트를 사용하여 표시되는 바이트 사이를 래칭한다는 것이 문제라는 것이 확실합니다.
여기
SHIFTOUT 기능을 효과적으로 래치를 강제 함수의 끝에서 낮은 클럭 핀을 설정하고, 나는 종류의 올바른처럼
int latchPin = 5;
int clockPin = 6;
int dataPin = 4;
int i = 0;
int waitTime = 500;
// digits from the right
byte colDig[4] =
{
B00001000, // digit 1
B00000100, // digit 2
B00000010, // digit 3
B00000001, // digit 4
};
const byte digit[10] = //seven segment digits in bits
{
B11000000, // 0
B11111001, // 1
B10100100, // 2
B10110000, // 3
B10011001, // 4
B10010010, // 5
B10000010, // 6
B11111000, // 7
B10000000, // 8
B10011000, // 9
};
void setup()
{
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop()
{
// step through each digit then increment
// the counter by one, until nine
for(int j = 0;j<9;j++){
updateShiftRegister(0, j);
delay(waitTime);
updateShiftRegister(1, j);
delay(waitTime);
updateShiftRegister(2, j);
delay(waitTime);
updateShiftRegister(3, j);
delay(waitTime);
}
}
void updateShiftRegister(int col, int num)
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, colDig[col]);
shiftOut(dataPin, clockPin, MSBFIRST, digit[num]);
digitalWrite(latchPin, HIGH);
}
배선 다이어그램을 표시 할 수 있습니까? – xmen