Voller Block am Display erzeugen?!

OP #1735562
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.
Gast #1735641
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
#1735666
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.
#1735704
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
}
#1735718
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
}
#1735728
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?
#1735737
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)

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