-         

Ergebnis 1 bis 6 von 6

Thema: Register an LC-Display

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    23.05.2013
    Beiträge
    7

    Register an LC-Display

    Anzeige

    Hallo zusammen,

    ich bin momentan in der Weiterbildung zum Staatlich geprüften Techniker und muss mich im Rahmen einer Projektarbeit mit dem Mikrokontroller: ATMEGA32 von Atmel auseinander setzen. Ich bin in dem Gebiet noch ein kompletter Anfänger und weiß in vielen Situation noch nicht, wie ich sie am besten lösen soll.

    Mein Vorhaben ist es, die an PA0-PA7 anliegenden TTL-Zustände an einem LC-Display zu übermitteln und anzeigen zu lassen. Ich bin mittlerweile so weit, dass ich Zeichen an das Display übermitteln und anzeigen lassen kann. Ich habe es sogar geschaft, einen Integer zu einem Zeichen zu konvertieren ( itoa() ) und mir diesen dann ausgeben zu lassen. Meine Frage: Ist PORTA eine Speicheradresse oder ein Byte bzw. wie kriege ich diese 8-Bit in ein Zeichen konvertiert?

    Ich habe zusätzlich noch eine Bitte. Würde sich eventuell Jemand bereit erklären mir in einem Telefonat via Skype oder ähnlichem die ein oder andere Frage bezüglich Mikrokontroller und C zu beanworten. Vielen Dank schon im Vorraus.

    Gruß
    Schirmo

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von robo_tom_24
    Registriert seit
    04.02.2012
    Ort
    Burgenland, Österreich
    Beiträge
    485
    PORTn ist ein 8bit Register, den Inhalt kannst du als char, unsigned integer mit 8 bit und somit als Byte ansehen...
    Wenn du je nach Kombination ein Zeichen ausgeben willst, dann ließt du das Port am besten per Pin Change Interrupt ein, speicherst es in eine Variable, konvertierst die 8 Bit in die üblichen 16 Bit Integer (explizite Datentypkonvertierung) und übergibst diese dann der Funktion itoa() welche dein "displayfertiges" Zeichen erstellt und du es ausgeben kannst

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    23.05.2013
    Beiträge
    7
    Ich hab es jetzt so versucht, weil ich mich mit dem Interrupts noch nicht so gut auskenne. Funktioniert aber leider immer noch nicht. Ich krieg immer eine 0 und zwei Zeichen die einem = Zeichen ähneln. Die eingabe an PORTA nehme ich vor dem Simulationsstart vor.

    int main(void)
    {

    DDRA = 0x00;
    LCDinit();
    LCDclr();

    char buffer [8];


    while (1)
    {
    LCDhome();

    int A = (uint8_t)PORTA;
    itoa(A, buffer,10);

    LCDstring(buffer, 3);
    _delay_ms(1000);
    }
    }



    // uint8_t A = PORTA;
    // uint8_t A |= PORTA;
    // hat auch nicht funktionerit
    Geändert von Schirmo (23.05.2013 um 19:26 Uhr)

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Eher so:

    ...
    char buffer [8];
    char A;

    while (1)
    {
    LCDhome();

    A = PINA;
    itoa(A, buffer,10);
    ...

    a=PORTA liest die Pegel die an PORT A ausgegeben werden.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    23.05.2013
    Beiträge
    7
    Mein Problem ist gelöst

    Ich musste einfach nur PORTn durch PINn ersetzen und jetzt funzt es. Ein großen Dankeschön an euch beiden für die schnelle zielführende Hilfe.

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Hi Schirmo,

    willkommen im Forum.
    ... die an PA0-PA7 anliegenden TTL-Zustände an einem LC-Display zu übermitteln und anzeigen zu lassen ...
    Die Anzeige des Ports als Integerzahl ist ja eindeutig, aber hat erstmal optisch nicht wirklich viel Aussagekraft, wenn Du die TTL-Zustände präsentieren willst. Die sind nämlich nur high oder low - sozusagen - und da wäre eine binäre Darstellung vielleicht nicht hübscher, würde aber schneller den realen Zustand des Ports vermitteln.

    Ich hatte so etwas schon mal an einem LCD gemacht um Steuerbits in einem I²C-IC möglichst störungsfrei zu verändern. Das Ganze sieht so aus:

    ......


    und im zugehörigen Thread (klick hier) steht auch der zugehörige Code (C, mega328, 2x24-LCD) für die Wandlung in 0/1-en.
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. Register aufsplitten
    Von Killer im Forum Assembler-Programmierung
    Antworten: 7
    Letzter Beitrag: 09.08.2008, 06:56
  2. Antworten: 3
    Letzter Beitrag: 10.03.2008, 18:45
  3. Register übergeben
    Von Christoph2 im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 22.02.2008, 23:22
  4. Register
    Von Exodus im Forum Assembler-Programmierung
    Antworten: 4
    Letzter Beitrag: 10.07.2006, 12:09
  5. Interne Register und Register in SRAM
    Von FoCus im Forum AVR Hardwarethemen
    Antworten: 9
    Letzter Beitrag: 27.07.2005, 13:06

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •