- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 173

Thema: Portbelegung auf ATMega für LCD1602

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    He Leute!
    Langsam! Keine Seitenhiebe wegen mir !!!
    Ich hab schon verstanden.
    Die Auslegung von DEZIMAL war mir in diesem Sinne nicht geläufig.
    Darum habe ich im Post #116 ja geschrieben: "reden wir aneinander vorbei?"
    Dem war defacto so.
    Ich meinte mit "dezimal" NUMMERN/ZIFFERN (123...)!
    Gespeichert wird in dual, angezeigt in Hex um einstellig zu bleiben.
    Und "Ziffern" (0,1,2,...) kann ein Display nicht darstellen, sondern nur in "Textform" als $30,$31, ....
    Das war eben die Ungereimtheit.
    Jeder meinte mit "dezimal" was anderes.
    Ich werd mal alles durcharbeiten, was ich an Erklärungen erhalten hab.
    Wird ein bisschen dauern, muss auch wieder mehr was anderes tun als nur hier rumgrübeln ...

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Ja das ist es eben. Du kennst Zahlen als Schrift, wie Du schreibst. So existieren sie in Deiner Vorstellung und deswegen meinst Du diese Zahlen. Aber der Computer kennt eben eine andere "Schrift" für Zahlen und die ist erst mal binär. Die hexadezimale Darstellung bildet eine bestimmte Bit-Menge ab. Mit 4 Bit lassen sich Werte von 0 bis 15 abbilden: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E und F. Danach kommen 8 Bit, die aus jeweils 4 Bit bestehen: 4Bit|4Bit (z.B.: 0A, 12, B3). Dann fasst man zweimal 8 Bit zu 16 Bit zusammen: 8Bit|8Bit. Und so geht das dann vom Prinzip immer weiter. So kommt man irgendwann zu Datentypen, die 32 Bit umfassen oder noch mehr sogar.

    Du musst Dich auf jeden Fall intensiv mit dem Rechnen in Maschinensprache auseinandersetzen. Ich finde, das ist jetzt das Wichtigste an allem. Sonst kommst Du immer wieder in Schwierigkeiten und verschiedene Dinge nicht verstehen zu können. Das gehört aber zum Grundverständnis. - Du hast Dir ganz schön was vorgenommen.

    MfG

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von avr_racer
    Registriert seit
    01.04.2014
    Ort
    MecklenburgVorpommern
    Beiträge
    175
    Zitat Zitat von HeSt Beitrag anzeigen
    Die Auslegung von DEZIMAL war mir in diesem Sinne nicht geläufig.
    Darum habe ich im Post #116 ja geschrieben: "reden wir aneinander vorbei?"
    Dem war defacto so.
    Ich meinte mit "dezimal" NUMMERN/ZIFFERN (123...)!
    Gespeichert wird in dual, angezeigt in Hex um einstellig zu bleiben.
    Und "Ziffern" (0,1,2,...) kann ein Display nicht darstellen, sondern nur in "Textform" als $30,$31, ....
    Das war eben die Ungereimtheit.
    Jeder meinte mit "dezimal" was anderes.
    Ich werd mal alles durcharbeiten, was ich an Erklärungen erhalten hab.
    Wird ein bisschen dauern, muss auch wieder mehr was anderes tun als nur hier rumgrübeln ...
    Ein Zündgedanke war im #116er schon dabei nur in der Weiterführung gings in die falsche Richtung.
    Können wir uns auf Zeichen einigen ?
    Diese Zeichen sind im LCD als ZEICHENVORRAT hinterlegt welche dann über eine ADRESSE angesprochen und dargestellt werden kann.
    Das das LCD keine Ziffern darstellen kann ist eher nicht richtig, es kanns ja, nur du meinst eher die Umsetzung von Zahl -> Mensch -> µC -> LCD -> Zahl passiert.

    Diesen Gedankengang hatte ich damals auch wie stellt ein LCD etwas da, bis mir jmd sagte das vieles fest vordefiniert wird was einfach dann abgerufen wird.
    https://de.wikipedia.org/wiki/Americ...on_Interchange

    Zitat Zitat von HaWe Beitrag anzeigen
    ah, stimmt, klar, Highbyte und Lowbyte passen ja bei unsigned char (0...255) zusammen rein.
    Nur wenn man signed char (-128...+127) hat, braucht man bei 174 zwei Byte.
    Hab es mir schon gedacht das da ein Denkfehler vorlag. Mit signed vollkommen recht. Ging auch nicht gegen dich...

    @Moppi danke für die Unterstützung

    Zitat Zitat von HaWe Beitrag anzeigen
    eine "Ziifer" ist ein Zeichen (für die Darstellung einer Stelle einer Zahl), ist aber selber keine Zahl ! Bild hier  
    Jep das hat ja schon den Hauch einer Definition.

  4. #4
    HaWe
    Gast
    eine "Ziffer" ist ein Zeichen (für die Darstellung einer Stelle einer Zahl), ist aber selber keine Zahl !
    (Eine "Zahl" ist Konstrukt, das sich in verschiedenen Zahlensystemen mit verschiedenen Ziffern schriftlich darstellen lässt)
    Ziffern sind genau das, was die ASCII Codes 48...57 plus ggf. zusätzlich weitere Buchstaben (für andere Zahlensyteme) repräsentieren.
    Geändert von HaWe (14.01.2019 um 08:48 Uhr) Grund: typo

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    @avr_racer

    Hab mich mit deinem "Mathe.asm" Programm auseinander gesetzt.
    Vieles ist mir jetzt klar(er), alles noch nicht ...
    Was ich gefunden hab, hab ich dir bereits in der PN geschrieben.

    Was mir noch nicht klar ist, wozu die SWAPs in HEX_DEC gut sein sollen?
    Das macht die Umwandlung in ASCII schwieriger!
    Beispiel:
    34515: 03 40 05 15 (besser: 03 04 05 01 05 ohne swap und ZE getrennt)

    Wie kann ich ZE gemeinsam in ASCII umwandeln/anzeigen?
    Da ich die Ziffern am LCD einzeln ausgebe, müssen die getrennt sein.
    Das ist zumindest mein Gedankengang.
    Oder liege ich hier falsch?

  6. #6
    HaWe
    Gast
    Zitat Zitat von HeSt Beitrag anzeigen
    @avr_racer

    Hab mich mit deinem "Mathe.asm" Programm auseinander gesetzt.
    Vieles ist mir jetzt klar(er), alles noch nicht ...
    Was ich gefunden hab, hab ich dir bereits in der PN geschrieben.

    Was mir noch nicht klar ist, wozu die SWAPs in HEX_DEC gut sein sollen?
    Das macht die Umwandlung in ASCII schwieriger!
    Beispiel:
    34515: 03 40 05 15 (besser: 03 04 05 01 05 ohne swap und ZE getrennt)

    Wie kann ich ZE gemeinsam in ASCII umwandeln/anzeigen?
    Da ich die Ziffern am LCD einzeln ausgebe, müssen die getrennt sein.
    Das ist zumindest mein Gedankengang.
    Oder liege ich hier falsch?
    ich fürchte, du hast immer noch nicht verstanden, dass du eine auf dem µC gespeicherte Zahl (z.B. 0xAE) nicht direkt in ASCII als Dec Zahl ausgeben kannst, denn weder 0xA noch 0xE sind Dezimalziffern.
    also musst du erst durch eine Reihe von Rechenoperationen (Division, Modulo) eine Dezimalsystem-Stellen-Zerlegung erzeugen (Hunderter, Zehner, Einer, hier also: 1*100 + 7*10 + 4*1)

    Code:
    Hunderter: 0xAE/100
    Zehner: (0xAE mod 100) / 10
    Einer: (0xAE mod 100) mod 10
    und erst DIESE kannst du dann (per ASCII offset=48 ) als Ziffern ausgeben (1 7 4 , einzeln oder gemeinsam als string).
    Geändert von HaWe (16.01.2019 um 10:14 Uhr) Grund: typo

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Ich hab sehr wohl verstanden WIE Ziffern/Zahlen/Zeichen angezeigt werden können!
    Offenbar kann ich mich nicht so ausdrücken, dass ihr das so versteht, wie ich es meine!
    Die Rechenoperationen sind bis auf die ASCII-Umwandlungen durch (34515).
    Diese Registerinhalte 03 04 05 01 05 (15 bereits getrennt) müssen klarerweise noch in ASCII umgewandelt werden um sie anzeigen zu können.
    Es geht nur darum, dass die einzelnen Register nurmehr mit $30 addiert werden müssen, dann kann man sie einzeln anzeigen.
    Aber 40 oder 15 mit $30 addiert ergibt kein anzeigbares Zeichen!! Zumindest nicht die Ziffer, die es sein soll!
    Also auf "low-nibble" = 04!
    Und 15 trennen auf 01 05!
    Hast mich jetzt??
    Geändert von HeSt (15.01.2019 um 11:48 Uhr)

  8. #8
    HaWe
    Gast
    Hast mich jetzt??
    sorry, leider nein.
    Alle ASCII-Zeichen ab dec 48 ($30) sind anzeigbar, und natürlich dürfen es dezimal nur die Werte 48-57 sein (48+0 bis 48+9).
    Wschl muss es dir ein asm-Progger erklären.

  9. #9
    HaWe
    Gast
    letzter Versuch - kannst du direkt nacheinander die Konstanten
    $30
    $31
    $32
    $33
    $34
    ausgeben?
    Wenn nein, funktioniert deine lcd-Ausgabe nicht.
    Wenn ja, hast du dich vlt oben verrechnet bei der Dezimalstellen-Zerlegung...
    Geändert von HaWe (15.01.2019 um 11:37 Uhr) Grund: typo

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Alle $xx ja,
    §33 ist nicht anzeigbar.

    C und Assembler sind nicht identisch!!
    Vergiss es!

Ähnliche Themen

  1. [ERLEDIGT] Atmega 644 & atmega8 parallel am ISP ... Reset beider atmega notwendig ..
    Von Ritchie im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 29.03.2013, 11:18
  2. CCPRO M128: Portbelegung
    Von Dirk im Forum Robby RP6
    Antworten: 0
    Letzter Beitrag: 22.05.2009, 22:26
  3. Portbelegung bei diesem Display [erledigt]
    Von Rob.Anfänger im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 18.11.2006, 18:12
  4. Portbelegung ATmega32
    Von Rob.Anfänger im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 15.11.2006, 19:59
  5. Antworten: 4
    Letzter Beitrag: 12.11.2006, 16:40

Berechtigungen

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

12V Akku bauen