Pixel setzen auf GLCD mit T6963c

Gast #1624819
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
Gast #1624835
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:
1
 lcd_set_pixel:
2
  ldi   lcdLSB,low (GFX_BASE)
3
  ldi   lcdMSB,high(GFX_BASE)
4
  rcall SetAdressPointer
5

6
  ldi    command, (BITSET)
7
  rcall WriteCMD
8

9
  ldi    lcdMSB, 1
10
  rcall Write1Byte
11
 ret
Gast #1624842
Lesenswert?

Hi

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

4
set_bit:           push r16
5
                   push r17
6
                   mov r16,r17
7
                   ldi r17,bitmode+bitset
8
                   add r17,r16
9
                   rcall wr_cmd
10
                   pop r17
11
                   pop r16
12
                   ret

Die Bitposition ist Bestandteil des Kommandos. Dein

> ldi    lcdMSB, 1
>  rcall Write1Byte

kannst du dir sparen.

MfG Spess
Gast #1624844
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.
1
 lcd_set_pixel:
2
  ldi   lcdLSB,low (GFX_BASE)
3
  ldi   lcdMSB,high(GFX_BASE)
4
  rcall SetAdressPointer
5

6
  ldi    command, (BITSET)+3
7
  rcall WriteCMD
8
ret
Gast #1624845
Lesenswert?

1
void glcd_setpixel(unsigned int x, unsigned int y)  // set single pixel in 240x128 array
2
{
3

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

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

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