Forum: Mikrocontroller und Digitale Elektronik Wie kann ich Variablen an einem LCD anzeigen lassen


von Christian (Gast)


Lesenswert?

Hallo
Mit dem Code Vision Compiler einen Text am LCD anzeigen zu lassen 
schaff' mittlerweile sogar ich, aber wie kann ich z. Bsp einen String 
von der sereillen Schnittstelle als Dezimalzahl ans Display senden????

Bisher schaut das Programm so aus (ist nur das Beispielprogramm von code 
vision)

// the LCD is connected to PORTC outputs
// see the file lcd.h in the ..\inc directory
#asm
.equ __lcd_port=0x18 ;PORTD
#endasm

#include <lcd.h> // LCD driver routines
#include <delay.h>
#include <math.h>
#include <stdio.h>

void main(void)
{
unsigned char i;
// initialize the LCD for
// 2 lines & 16 columns
lcd_init(16);

// go on the second LCD line
lcd_gotoxy(0,1);

sprintf(lcd_buffer,"Device #%-u ROM\nCode is:",i+1);
       lcd_clear();
       lcd_puts(lcd_buffer);


// display the message
lcd_putsf("Hello world");

// stop here
while (1);
}

Wär's uper wenn ihr mir auf die Sprünge helfen könnt!!

Danke
Christian

von Christian (Gast)


Lesenswert?

Hallo
von alleine bin ich leider immer noch nicht drauf gekommen, wie das 
gehen soll, aber das kann doch nicht sein, dass ihr nie irgendwelche 
Zahlen, die euch euer MC ausgerechnet hat am LCD anzeigen lassen 
wollt?????

Kann doch nicht sein, dass auf euren LCD's immer nur "Hello World" 
steht....

mfg
Christian

von Thomas H. (Gast)


Lesenswert?

Hallo Christian,

ich kann zwar C, bin aber in Bezug auf C in Mikrocontrollern ziemlich 
unbewandert. Schau dir aber einmal das Programm hier im Codeforum an:

http://www.mikrocontroller.net/forum.php?action=read&forum=4&id=594

Es beschreibt zwar in Assembler wie man Zahlen auf dem Display ausgeben 
kann, aber ich denke das Grundprinzip ist auch in C uebertragbar:

Zahl durch 10000, 1000, 100, 10, 1 einzeln teilen und die 
Zehnerpotenzwerte einfach mit dem "Offset" fuer ASCII-Zahlen addieren 
und nach der Reihe ans Display senden.

Ich habe dieses Programm letztens fuer meine Zwecke umgeschrieben und 
finde es ganz gut.

Viele Gruesse,

Thomas H.

von Retro (Gast)


Lesenswert?

Ich weiss zwar nicht was dieser ganze Funktionsblock macht, aber die 
Funktion "sprintf" spricht doch wohl Bände!

--
sprintf(lcd_buffer, "Device #%-u ROM\nCode is:", i+1);
lcd_clear();
lcd_puts(lcd_buffer);
--

Ich schätze mal dass "%-u" für den Integerwert steht (normal in C ist 
das anders) aber probier es einmal aus. Dieser Text wird dann in die 
Variable "lcd_buffer" geschrieben und die Zahl "i+1" eingesetzt. Daraus 
resultiert: "Device #1 ROM\nCode is:" Normalerweise würde das "\n" nen 
Linebreak verursachen, ob es beim LCD ebenso ist weiss ich nicht, 
probier mal das hier aus:

--
sprintf(lcd_buffer, "Hier sollte 5 stehen: %-u", 10+10-15);
lcd_clear();
lcd_puts(lcd_buffer);
--

von Christian (Gast)


Lesenswert?

Hey - vielen lieben Dank!!
Funktioniert tadellos!!!!

Mit dem Code, den du da hergestellt hast (is ja ein Beispiel aus dem 
Codevision folder) hab' ich auch schon experimentiert - nur mit dem 
Problem, dass es bei mir nicht hingehauen hat.

Vielen Dank

Christian

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.