Tabellen für 8-stellige Anzeige nachschlagen

Mein Projekt auf STM32f407-Discovery. Ich werde eine Nachricht über das Terminal an mein Board senden und diese Nachricht verwenden, um eine 8-stellige Anzeige anzuzeigen. Ich versuche, eine Nachschlagetabelle für die 8-stellige Anzeige zu erstellen. Ich werde es als Zähler verwenden, aber ich weiß nicht, wo ich anfangen soll. Kann ich dafür einen Switch-Case-Build verwenden? Bitte helfen Sie.

Der ganze Sinn einer LUT besteht darin, die Verwendung einer Schalterstruktur zu vermeiden.
Eine Nachschlagetabelle ist idealerweise ein einzelner Lesevorgang mit idealerweise einfacher Mathematik (hoffentlich eine Verschiebung und eine Addition). Wo eine switch-Anweisung manchmal dahingehend optimiert werden kann, ist der schlimmste Fall ein sehr langer, sehr langsamer if-then-else-Baum.
Ich nehme an, Sie wissen, wie man jedes Segment separat steuert? und dann zwei Segmente einzeln hin und her blinken und so weiter, um die Illusion zu erwecken, dass alle eingeschaltet sind? Wenn Sie das herausfinden, können Sie bestimmen, welche Pins welches Segment steuern. dann legen Sie einfach eine Tabelle an, wie unten beantwortet. und füttern Sie das in Ihren Code, der Segmente mit einer gewissen Geschwindigkeit blinkt

Antworten (1)

Sie könnten switch oder lookup verwenden . Ich bin mit dem Gerät nicht vertraut, aber dieser Pseudocode kann Ihnen einige Hinweise geben.

// +--a--+
// f     b
// +--g--+ 
// e     c
// +--d--+

switch (char){
  //                 abcdefg segments
  case "A": segs = 0b1110111;
  case "B": segs = 0b0011111;
  case "C": etc.
}

Definieren Sie alternativ alle Muster in einer Nachschlagetabelle.

int segs[65] = 0b1110111;    // A
int segs[66] = 0b0011111;    // B
int segs[67] = etc.

port0 = segs[char];
Der Compiler mag "int segs[65] = 0b1110111;" möglicherweise nicht. Vielleicht haben Sie mehr Glück mit "char upper[26]; upper[0] = 0x77;...", um die Nachschlagetabelle zu erstellen, und dann mit "if ((input<='A') && (input >='Z' )) segs = upper[input-'A'];" um den Wert abzulesen.