Forum: Mikrocontroller und Digitale Elektronik Voller Block am Display erzeugen?!


von Heinz peter P. (poschi8)


Lesenswert?

Hallo alle zusammen,
ich möchte auf meinem Display eine Art progress bar anzeigen.
Dazu benötige ich jedoch einen vollen Block ( █ ).
Wenn ich denn einfach so in meine Code kopiere kommt ein Fragezeichen.
Wie kann ich so einen Block erzeugen.

Ich arbeite mit einem Atmega8 und das Display ist ein datavision 
dv-20208.

von uwegw (Gast)


Lesenswert?

Du schaust ins Datenblatt, welcher Code zu diesem Zeichen gehört (haben 
eigentlich die meisten LCDs drin) und senderst dann diesen Code an das 
LCD.

von Lord Z. (lordziu)


Lesenswert?

Die meisten Display-Controller bieten die Möglichkeit eigene Character 
zu erzeugen. Hier im Wiki stand das in einem Artikel, glaube ich. Schau 
die mal die Artikel zum Thema LCD an.

BTW, das Fragezeichen zeigt dir, dass der Controller das Zeichen nicht 
kennt.

von Uwe .. (uwegw)


Lesenswert?

PS: bei den meisten LCDs ist dieses Zeichen mit 0xFF kodiert.

von Heinz peter P. (poschi8)


Lesenswert?

Ok, ich werd mir das alles mal anscheuen.
Danke für eure Hilfe.

von Heinz peter P. (poschi8)


Lesenswert?

Mit welchen Befehl kann ich 0xFF an das LCD senden?

von Jens (Gast)


Lesenswert?

du sendest anstelle von beispielsweise '0' was 0x30 entspricht, 0xFF.
Der gleiche Befehl wie für die normalen Daten.

z.B.: send_data(0x30);
      send_data(0xFF);
      send_data('0');
Ich weiss ja nicht wie die bei dir implementiert sind!

Gruß, Jens

von Falk B. (falk)


Lesenswert?

@Heinz peter Posch (poschi8)

>Ok, ich werd mir das alles mal anscheuen.
>Danke für eure Hilfe.

http://www.mikrocontroller.net/articles/Erweiterte_LCD-Ansteuerung

Und wenn du richtig cool sein willst, definierst du 5 eigene Zeichen, 
welche jeweis 1..5 senkrechte Linien haben. Dann kannst du nämlich eine 
ultrafeine Fortschrittsanzeige machen :-0

MFG
Falk

von Heinz peter P. (poschi8)


Lesenswert?

ok, probier ich gleich mal aus.

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Jens schrieb:
> send_data("0");

Nur am Rande:
Es muss
1
send_data('0');
heißen.

von Heinz peter P. (poschi8)


Lesenswert?

send_data hat nicht funktioniert bei mir.

int main(void)
{
  LCDinit();
  LCDclr();
  LCDhome();
  //Welcome demo message
  CopyStringtoLCD(MN000, 0, 0 );
  delay1s();
...

so sieht der anfang meines main aus, vl hilft euch das was.

von Karl H. (kbuchegg)


Lesenswert?

Heinz peter Posch schrieb:
> send_data hat nicht funktioniert bei mir.

Aha

> int main(void)
> {
>   LCDinit();
>   LCDclr();
>   LCDhome();
>   //Welcome demo message
>   CopyStringtoLCD(MN000, 0, 0 );
>   delay1s();
> ...
>
> so sieht der anfang meines main aus, vl hilft euch das was.

UNd wo ist da der send_data (bzw. die Funktion, die in deiner LCD-Lib 
diese Funktionalität übernimmt)?

Mein Auto macht in letzter Zeit so komische Geräusche, ich schick euch 
mal ein Bild von meinem Kühlschrank. vl. hilft euch das was.

von Klaus W. (mfgkw)


Lesenswert?

Dann probier doch mal:
  CopyStringtoLCD("\xff", 0, 0 )

von Heinz peter P. (poschi8)


Lesenswert?

Ich werd das wohl kaum falsch reinschreiben...
Oder baut der Mechaniker bei dir kaputte Teile ein?!

von Karl H. (kbuchegg)


Lesenswert?

Heinz peter Posch schrieb:
> Ich werd das wohl kaum falsch reinschreiben...

Anscheinend doch :-)

> Oder baut der Mechaniker bei dir kaputte Teile ein?!
Wenn ich mir deine Frage so ansehe, dann ist die Bezeichnung 
'Mechaniker' bei dir nicht wirklich angebracht.

von Heinz peter P. (poschi8)


Lesenswert?

CopyStringtoLCD("\xff", 0, 0 )

hat nicht funktioniert.

von Karl H. (kbuchegg)


Lesenswert?

Zeigst du jetzt endlich mal deinen möglichst kompletten Code?

Auch wäre ein, wenn auch nur kurzer, Auszug aus deinen LCD Routinen 
angebracht. Wenns nicht zu viele Umstände macht.

von Heinz peter P. (poschi8)


Angehängte Dateien:

Lesenswert?

Hier is der ganze code

von Falk B. (falk)


Lesenswert?

@  Heinz peter Posch (poschi8)

>    * LCD.rar (6,3 KB, 0 Downloads)

Lies was über Bildformate und nutze beim nächsten Mal ZIP.

Und was hällst du von
1
 LCDsendChar(0xFF);

(isses denn soooooo schwer????)

von Heinz peter P. (poschi8)


Lesenswert?

Ok werd ich probieren.
Sorry das ich noch nicht so viel programmiert habe...

von Falk B. (falk)


Lesenswert?

Hmmmm, am schönsten ist dein main() Funktion.

Fleiß 1, Mitdenken 3-

von Karl H. (kbuchegg)


Lesenswert?

Ich finde in deinem ganzen Programm keinen Aufruf von LCDprogressBar


Speck doch mal ab!
Wenn du testen willst, ob ein LCDsendChar einen Block augeben kann, dann 
genügt dazu auch ein Testprogramm
1
int main()
2
{
3
  LCDinit();
4
  LCDclr();
5
  LCDhome();
6
7
  LCDsendChar( 0xFF );
8
9
  while( 1 )
10
    ;
11
}

und wenn du wissen willst, ob deine benutzerdefnierten Einzelezeichen 
funktionieren, dann tuts auch erst mal ein
1
int main()
2
{
3
  LCDinit();
4
  LCDclr();
5
  LCDhome();
6
7
  LCDsendChar( 0xFF );
8
  LCDsendChar( 0x00 );
9
  LCDsendChar( 0x01 );
10
  LCDsendChar( 0x02 );
11
  LCDsendChar( 0x03 );
12
  LCDsendChar( 0x04 );
13
  LCDsendChar( 0x05 );
14
15
  while( 1 )
16
    ;
17
}

von Karl H. (kbuchegg)


Lesenswert?

Falk Brunner schrieb:
> Hmmmm, am schönsten ist dein main() Funktion.
>
> Fleiß 1, Mitdenken 3-


Hauptsache am Anfang kommt eine möglichst cool aussehnde 
Einschaltanimation :-)

von Karl H. (kbuchegg)


Lesenswert?

Jetzt muss ich blöd nachfragen:
Hast DU die LCDprogressBar geschrieben?

Kann ich mir irgendwie nicht vorstellen, wenn ich mir den Rest so ansehe

Probier mal
1
int main()
2
{
3
  uint8_t i;
4
5
  LCDinit();
6
  LCDclr();
7
  LCDhome();
8
9
  while( 1 ) {
10
    for( i = 0; i < 32; ++i ) {
11
      LCDprogressBar( i, 32, 32 );
12
      delay1s();
13
    }
14
15
    LCDclr();
16
  }
17
}

von Vlad T. (vlad_tepesch)


Lesenswert?

Falk Brunner schrieb:
>>    * LCD.rar (6,3 KB, 0 Downloads)
>
> Lies was über Bildformate und nutze beim nächsten Mal ZIP.

???

von Falk B. (falk)


Lesenswert?


von Heinz peter P. (poschi8)


Lesenswert?

Ich tippe das ganze ja nicht hundert mal runter, erst wenn ich sehe es 
funktioniert dann tippe ich das runter.
Naja...
Jetzt funktioniert es so halbwegs, muss nur noch ein Line feed einbauen.

von Karl H. (kbuchegg)


Lesenswert?

Heinz peter Posch schrieb:
> Ich tippe das ganze ja nicht hundert mal runter, erst wenn ich sehe es
> funktioniert dann tippe ich das runter.

Schon mal was von Arrays und Schleifen gehört?

Oder hab ich das falsch verstanden?
Man kann auch in einem Testprogramm ganz einfach nebenher mal kurz Dinge 
ausprobieren. In jeder IDE kann man auch mehrere Projekte anlegen.

Ausserdem: Du hast in deinen LCD Routinen eine Funktion drinnen, die 
einen Bargraph anzeigt! Warum benutzt du sie nicht?

von Heinz peter P. (poschi8)


Lesenswert?

Das mit der Progress bar wird erst implementiert, dazu muss ich erst 
hardware mässig was umbauen.
Aber danke für denn Tipp.

von Karl H. (kbuchegg)


Lesenswert?

Heinz peter Posch schrieb:
> Das mit der Progress bar wird erst implementiert, dazu muss ich erst
> hardware mässig was umbauen.

Wenn du meinst.
Ich wüsste zwar nicht was, aber Hauptsache du weißt das.
Die LCDprogressBar gibt letztenendes auch nur Zeichen aus. Nur macht sie 
das ein wenig intelligenter als du mit deinen zig-vordefinierten 
Strings, die nur Platz kosten und einen Tippaufwand beim Ausgeben 
erfordern.

Mann kann natürlich die Fläche eines (rechteckigen) Grundstücks 
bestimmen, indem man mit einer Quadratmeterschablone das Grundstück 
auslegt und mitzählt wieoft man die Schablone auflegen kann. Man kann es 
aber auch machen, indem man Länge mal Breite rechnet.

Genauso in C.
Man kann natürlich das immer gleiche Statement 20 mal untereinander 
schreiben.
1
  Satatement;
2
  Satatement;
3
  Satatement;
4
  Satatement;
5
  Satatement;
6
  Satatement;
7
  Satatement;
8
  Satatement;
9
  Satatement;
10
  Satatement;
11
  Satatement;
12
  Satatement;
13
  Satatement;
14
  Satatement;
15
  Satatement;
16
  Satatement;
17
  Satatement;
18
  Satatement;
19
  Satatement;
20
  Satatement;

Man kann aber auch ganz einfach
1
   for( i = 0; < 20; ++i )
2
     Statement;
schreiben

(Und nein. Ich meine damit nicht ausschliesslich die delay)

von gerd (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Satatement;

???

SCNR ;)

- gerd

von Klaus W. (mfgkw)


Lesenswert?

Nicht, was du denkst.
Wahrscheinlich nur auf einer SATA-Platte geschrieben!

von Vlad T. (vlad_tepesch)


Lesenswert?

Falk Brunner schrieb:
> http://www.mikrocontroller.net/articles/Bildformat...

du weißt hoffentlich, dass .h und .c keine neuen Bildformate sind. :-P

du musst ja nicht wegen jedem Pillepalle rummeckern

Edit:
rar ist wahrscheinlich das 2.häuigste nach zip.

Und wahrscheinlich jeder halbwegs technikaffine Mensch hat ein 
geeignetes Programm auf seinen Computer.

von Klaus W. (mfgkw)


Lesenswert?

ich nicht
(zumindest keines, was weitgehend alle hier kursierenden rar-Dateien 
öffnen könnte)

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.