Inhalt eines Register aufs LCD anzeigen

Gast #730009
Lesenswert?
• ▲
▼
Hallo alle,

Ich muss erstmal sagen ich bin ein Einsteiger im Programmierung mit 
Atmega8. Ich schreibe gerade Vorwärtszählercode mit Anzeige auf dem LCD 
gesteuert durch tastendruck.Hab es mit LED erstmal simuliert alles lauft 
bis jezt richtig nur habe da ein problem und zwar:

nach Tastendruck wird ein Register incrementiert und ich weiß nicht wie 
den Inhalt von diesem Register auf mein den LCD anzeigen kann. Hab mich 
schon mit den lcd-routine und das ascii system vertraut gemacht.

Bin ratlos. Könntet ihr mir helfen?

danke schon mal
#730016
Lesenswert?
• ▲
▼
die Frage ist doch WAS willst Du da sehen.
Danach entscheidet sich welchen Weg Du gehen mußt.
Der HEX Wert wäre das Einfachste.
Das Byte zerstückeln in 2 Nibble. Jeweils 30h dazu addiert und Ausgeben.
ABER .... Das gilt nur für Zhalenwerte von 0 - 9 !!
Die Werte von A - F müüsen extra berechnet werden.
Gast #730033
Lesenswert?
• ▲
▼
ja du hast recht, ich probiere es noch mal.

aus diesem Problemausschnit asu den Tutorial sollte die Buchstabe "T" 
aufs Display anzeigt werde. ich habe das gleich Prinzip benutzt nur das 
den Wert, den ich anzeigen will ist im Register r17 und lauft von 0 bis 
255.

mit diesen Zeile:
ldi temp1, r17

geht es nicht.

.include "m8def.inc"

.def temp1 = r16
.def temp2 = r17
.def temp3 = r18


           ldi temp1, LOW(RAMEND)      ; LOW-Byte der obersten 
RAM-Adresse
           out SPL, temp1
           ldi temp1, HIGH(RAMEND)     ; HIGH-Byte der obersten 
RAM-Adresse
           out SPH, temp1

           ldi temp1, 0xFF    ; Port D = Ausgang
           out DDRD, temp1

           rcall lcd_init     ; Display initialisieren
           rcall lcd_clear    ; Display löschen

           ldi temp1, 'T'     ; Zeichen anzeigen
           rcall lcd_data

           loop:
           rjmp loop

.include "lcd-routines.asm"
#730060
Lesenswert?
• ▲
▼
Einsteiger wrote:
> ja habe ein kleines code aus dem Tutorial zur Anzeige von " test"
> probiert und es klappt und ich versteh aus das Code.
>
> ich programmiere in Assembler mit AVR Studio und hab ein STK500 von
> Atmel

Dann lies im Tutorium weiter. Weiter unten auf der Seite wird
genau das gezeigt, wonach du fragst.

Drück einfach auf den Link hier
http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD#Zahlen_ausgeben
Gast #730075
Lesenswert?
• ▲
▼
"Um Zahlen, die beispielsweise in einem Register gespeichert sind, 
ausgeben zu können, ist es notwendig sich eine Textrepräsentierung der 
Zahl zu generieren. Die Zahl 123 wird also in den Text "123" umgewandelt 
welcher dann ausgegeben wird. "

Ich verstehe nicht was damit gemeint ist.Textrepräsentierung? Ich kenne 
überhaupt nicht den Inhalt meines Register nur das der Zahl von 0 bis 
255 enthält!
Gast #730083
Lesenswert?
• ▲
▼
Das ist so gemeint:

Wenn dein Register beispielsweise den Wert 136, dann muss eine 1, dann 
eine 3 und zuletzt eine 6 ausgegeben werden.

Du musst dir also eine Routine überlegen die Zahlen (vom Register) in 
einzelne Stellen zerlegt (Hunderter, Zehner, Einer).
#730086
Lesenswert?
• ▲
▼
@ Einsteiger (Gast)

>Ich verstehe nicht was damit gemeint ist.Textrepräsentierung?

Das Stichwort heisst ASCII Kodierung.

http://de.wikipedia.org/wiki/ASCII

> Ich kenne
>überhaupt nicht den Inhalt meines Register nur das der Zahl von 0 bis
>255 enthält!

Den musst du auch nicht kennen, die Umwandlung rechnet das aus. Überleg 
mal. Deine Zahl von 0..255 wird in EINEM Byte gespeichert. Die Ausgabe 
braucht aber DREI ZEICHEN. Und genau dass muss die Umwandlungsfunktion 
leisten. Byte -> drei ASCII-Zeichen.

MFG
Falk
#730092
Lesenswert?
• ▲
▼
deswegen sagte ich ja die Ausgabe des HEX Wertes ist am einfachsten.
Außerdem kann man damit in Detenblättern schnell was anfangen.
Die dez. Werte müßtest Du dann oft wieder in HEX oder BIN umrechnen.
bei zB 38h im Regster wird daraus 03 und 08,
Danach 30h zu jeder Zahl dazu. Macht 33h und 38h.
Jetzt schau mal in die ASCI Tabelle rein !!
Gast #730121
Lesenswert?
• ▲
▼
>bei zB 38h im Regster wird daraus 03 und 08,
>Danach 30h zu jeder Zahl dazu. Macht 33h und 38h.

Und was macht der arme Kerl dann bei Registerinhalt ABh?
Da wirds dann für ihn eindeutig komplizierter, wie wenn er gleich 
dezimal
ausgeben würde.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren