Display 74HC595(Shift Register)
Inköp:
https://pchbutik.se/1763-2-pack-74hc595-drivare-med-2-s.html
https://pchbutik.se/1764-74hc595-drivare-med-3-siffrors.html
https://pchbutik.se/1765-74hc595-drivare-med-4-siffrors.html
Koden som visas nedan anvÀnder inget bibliotek.
Tre block med bitmaps skapar siffror, nÄgon konstig form av alfabet. Alfabetet har jag hittat pÄ nÀtet, men vet inte var.
Det gÄr att koppla flera moduler efter varandra och ange i koden hur mÄnga siffror det Àr totalt i DIGITS.
74DC595 Àr ett shift-register och koden skiftar in data i modulen. Arduino har en bra funktion för detta: shiftOut.
Modulen kan skifta in data till nĂ€sta modul. Ăr det ingen modul pĂ„ utgĂ„ngen trillar elektronerna ut genom pinnarna =).
/*
Kod till 7-segments displayer med 74HC595 drivare kaskad-kopplade som Daisy chain
Arikelnummer: 1117, 2654, 2655
by Per-Anders Hult för pchbutik.se, PchButik AB
2022-01-17
Denna kod kan bara skriva vissa bokstÀver och siffror men inte ett tal
*/
#include <Arduino.h> //Ev ta bort denna.
#define SDI_PIN 5
#define SCLK_PIN 6
#define LOAD_PIN 7
#define DIGITS 3 //antal siffror i display
void segPrint(String);
void segSend(int[]);
const byte NUMBERS[] = {
B11111100,
B01100000,
B11011010,
B11110010,
B01100110,
B10110110,
B10111110,
B11100000,
B11111110,
B11100110,
B00000000,
B00000010
};
const byte LETTERS_UCASE[] = {
B11101110,B00111110,B10011100,B01111010,
B10011110,B10001110,B10111100,B01101110,
B00001100,B01111000,B10101110,B00011100,
B11101100,B00101010,B00111010,B11001110,
B11100110,B10001100,B10110110,B00011110,
B00111000,B01111100,B01111110,B01101100,
B01110110,B11011010,B00000000
};
const byte LETTERS_LCASE[] = {
B11101110,B00111110,B00011010,B01111010,
B10011110,B10001110,B10111100,B00101110,
B00001000,B01111000,B10101110,B00011100,
B11101100,B00101010,B00111010,B11001110,
B11100110,B10001100,B10110110,B00011110,
B00111000,B01111100,B01111110,B01101100,
B01110110,B11011010,B00000000
};
void setup(){
pinMode(LOAD_PIN, OUTPUT);
pinMode(SDI_PIN, OUTPUT);
pinMode(SCLK_PIN, OUTPUT);
delay(500);
}
void loop(){
segPrint("Pch"); // Skriv
delay(1000);
segPrint("123"); // Skriv
delay(1000);
segPrint("-30"); // Skriv
delay(1000);
}
void segPrint(String s){
int out[DIGITS];
for (int i=0;i<DIGITS;i++){
if (i>=(int)s.length()){ out[i]=B00000000; }
else {
char c=s.charAt(s.length()-1-i);
if (c>='A' && c<='Z') c=LETTERS_UCASE[c-'A'];
else if (c >='0' && c <='9') c=NUMBERS[c-'0'];
else if (c >= 'a' && c <= 'z') c=LETTERS_LCASE[c-'a'];
else if (c == 32) c=B00000000;
else if (c == '-') c=NUMBERS[11];
out[i]=c;
}
}
segSend(out);
}
void segSend(int out[]){
digitalWrite(LOAD_PIN,LOW);
for (int i=0;i<DIGITS;i++){
// ^B11111111 Àr XOR och inverterar alla bitar.
shiftOut(SDI_PIN, SCLK_PIN, LSBFIRST, out[i] ^ B11111111);
}
digitalWrite(LOAD_PIN,HIGH);
}
Video: Demonstration av Display 74HC595.
Denna sida Àr konverterad med hjÀlp av AI.
En sida för dig som bygger elektronik sjÀlv, experimenterar och laborerar.
Skapad av Per-Anders Hult för PchButik.se.







