Forum: Mikrocontroller und Digitale Elektronik lookup-table mit C auf AVR mega32


von der-zweite (Gast)


Lesenswert?

Hallo Leute,

ich brauche für eine Umwandlung eines ADC Wertes in ein LCD bzw. 
LED-Anzeigen-Wert einen Lookup-Table.

Wie mache ich das ganze in C?

In Asembler ist das kein Problem?? Am einfachsten möchte ich das ganze 
an eine bestimmte Stelle Flash schreiben. Geht das?

Danke schon im voraus!


der-zweite

von Peter Diener (Gast)


Lesenswert?

Hallo,

in C kannst du die nötige Information in einem Array speichern und 
adressiert darauf zugreifen.

Oder, wenn es mit mehr Komfort funktionieren soll, kannst du den 
Segmenttreiber in einer Case-Anweisung realisieren, die du in einer 
Funktion unterbringst, die man direkt mit dem anzuzeigenden Wert 
aufruft.

Etwa so:

Angenommen deine Segmente werden an PORT A angeschlossen.
Segmentnummerierung:

---1---
|     |
2     6
|--0--|
3     5
|     |
---4---

Eine logische 1 bedeutet, Segment leuchtet.
Gib der Funktion das anzuzeigende Zeichen als ASCII, dann kannst du auch 
einige Sonderzeichen dazubauen.
1
void WriteSegments(char Zeichen)
2
{
3
  switch (Zeichen)
4
  {
5
    case '0': PORTA = 0b11111110;
6
    break;
7
    case '1': PORTA = 0b00001100;
8
    break;
9
undsoweiter... bis 9
10
11
und Sonderzeichen:
12
13
    case 'n': PORTA = 0b00111001;
14
    break;
15
    case 'A': PORTA = 0b11101110;
16
  }
17
}

Der Aufruf geht dann so:
1
WriteSegments('A');    //Das schreibt ein A auf das Display

Viele Grüße,

Peter

von crazy horse (Gast)


Lesenswert?

das geht so, aber schneller und kleinerer Programmspeicher:

const unsigned char tabelle[10]={...,...};
.
.
.

PortA=tabelle[x];

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.