www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pixel setzen auf GLCD mit T6963c


Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

kann mir jemand sagen wie ich ein einzelnes Pixel auf meinem GLCD mit 
T6963c setzen kann? Programmiersprache ist Assembler, C habe ich leider 
noch nicht drauf.
Ich gehe jetzt mal davon aus, dass meine Initialisierung korrekt ist.

Was wäre dann in welcher Reihenfolge zu tun? zB:
1. Kommando für Bitset senden
2. Adresspointer setzen (Grafikstartadresse+Offset)
3. 8Bit-Wert als Daten senden

das oben genannte funktioniert natürlich bei mir nicht.

Gruß, Jürgen

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Der T6963 hat spezielle Befehle zum Setzen/Löschen von Bits.

MfG Spess

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
weiß ich ja, nur reicht das Kommando 'Bitset' allein nicht aus.
Irgendwie muss ich dem Controller ja mitteilen welches Bit der Adresse 
er setzten soll.

Im Moment sieht das bei mir so aus:
 lcd_set_pixel:
  ldi   lcdLSB,low (GFX_BASE)
  ldi   lcdMSB,high(GFX_BASE)
  rcall SetAdressPointer

  ldi    command, (BITSET)
  rcall WriteCMD

  ldi    lcdMSB, 1
  rcall Write1Byte
 ret 

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Bei mir so (ohne Adresse setzen):
;                  Punkt setzen
;                  in r17  Bitnummer

set_bit:           push r16
                   push r17
                   mov r16,r17
                   ldi r17,bitmode+bitset
                   add r17,r16
                   rcall wr_cmd
                   pop r17
                   pop r16
                   ret

Die Bitposition ist Bestandteil des Kommandos. Dein

> ldi    lcdMSB, 1
>  rcall Write1Byte

kannst du dir sparen.

MfG Spess

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe nochmal genauer ins Datenblatt geschaut, ich glaube ich habe es 
jetzt. In dem Bitsetbefehl ist das zu setzende Bit mit einzurechnen.
Danke für den Tip.
 lcd_set_pixel:
  ldi   lcdLSB,low (GFX_BASE)
  ldi   lcdMSB,high(GFX_BASE)
  rcall SetAdressPointer

  ldi    command, (BITSET)+3
  rcall WriteCMD
ret

Autor: pixel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void glcd_setpixel(unsigned int x, unsigned int y)  // set single pixel in 240x128 array
{

unsigned int addr;       // memory address of byte containing pixel to write
  if( (x>=XMAX) || (y>=YMAX) )return;
  addr =  GLCD_GRAPHIC_HOME + (y*GLCD_GRAPHIC_AREA)  + (x/GLCD_FONT_WIDTH);
  glcd_set_address(addr);  // set LCD addr. pointer
  glcd_cput(0xf8 | (((GLCD_FONT_WIDTH - 1) - x % GLCD_FONT_WIDTH)) );  // set bit-within-byte command
}

hier was du suchst:
glcd_cput(0xf8 | (((GLCD_FONT_WIDTH - 1) - x % GLCD_FONT_WIDTH)) );

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>hier was du suchst:

Es ging um Assebler!

MfG Spess

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Es ging um Assebler!

Natürlich 'Assembler'.

MfG Spess

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, umsonst war es trotzdem nicht,
ich versuche mir auch nebenbei C beizubringen, ich werde wohl später 
darauf zurückgreifen.

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.