www.mikrocontroller.net

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


Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: uwegw (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lord Ziu (lordziu)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Uwe ... (uwegw)
Datum:

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

Autor: Heinz peter Posch (poschi8)
Datum:

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

Autor: Heinz peter Posch (poschi8)
Datum:

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

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Heinz peter Posch (poschi8)

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

http://www.mikrocontroller.net/articles/Erweiterte...

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

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, probier ich gleich mal aus.

Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jens schrieb:
> send_data("0");

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

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Wachtler (mfgkw)
Datum:

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

Autor: Heinz peter Posch (poschi8)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CopyStringtoLCD("\xff", 0, 0 )

hat nicht funktioniert.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Heinz peter Posch (poschi8)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier is der ganze code

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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
 LCDsendChar(0xFF);  

(isses denn soooooo schwer????)

Autor: Heinz peter Posch (poschi8)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmmm, am schönsten ist dein main() Funktion.

Fleiß 1, Mitdenken 3-

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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
int main()
{
  LCDinit();
  LCDclr();
  LCDhome();

  LCDsendChar( 0xFF );

  while( 1 )
    ;
}

und wenn du wissen willst, ob deine benutzerdefnierten Einzelezeichen 
funktionieren, dann tuts auch erst mal ein
int main()
{
  LCDinit();
  LCDclr();
  LCDhome();

  LCDsendChar( 0xFF );
  LCDsendChar( 0x00 );
  LCDsendChar( 0x01 );
  LCDsendChar( 0x02 );
  LCDsendChar( 0x03 );
  LCDsendChar( 0x04 );
  LCDsendChar( 0x05 );

  while( 1 )
    ;
}

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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
int main()
{
  uint8_t i;

  LCDinit();
  LCDclr();
  LCDhome();

  while( 1 ) {
    for( i = 0; i < 32; ++i ) {
      LCDprogressBar( i, 32, 32 );
      delay1s();
    }

    LCDclr();
  }
}

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

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

???

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Heinz peter Posch (poschi8)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;
  Satatement;

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

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

Autor: gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Satatement;

???

SCNR ;)

- gerd

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht, was du denkst.
Wahrscheinlich nur auf einer SATA-Platte geschrieben!

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Wachtler (mfgkw)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.