Display 74HC595
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/inbäddat innehåll: kodblock och genomgång för 74HC595.
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.





