3,8" Grafik LCD 256x64 Punkte, UC1698 neues Display

  • 1
  • 2
  • 3
  • Page 2 of 3
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: 3,8" Grafik LCD 256x64 Punkte, UC1698 neues Display

 · 
Posted: 06.02.2018 - 16:31  ·  #9
Beim einzelnen schreiben habe ich noch irgendwo einen Denkfehler.

Schreibe ich ein Byte $FF kommt keine Anzeige, Schreibe ich ein Word $FFFF oder zwei Byte $FF erhalte ich 3 Punkte auf dem Display. Ich muss da nochmal genauer im Datenblatt schauen.
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: 3,8" Grafik LCD 256x64 Punkte, UC1698 neues Display

 · 
Posted: 06.02.2018 - 19:45  ·  #10
@rolf;
In welcher Reihenfolge werden die BITs auf dem Schreibbefehl rausgegeben?

Angenommen ich möchte links oben folgendes Binär-Muster auf dem Display sehen:

10011010

dann verlangt mein Controller auch diese Reihenfolge im Byte:

Byte %10011010

Erster Punkt links im Display ist BIT7

Oder ist es bei Deinen Grafikfunktionen so, dass dies bei Dir als BIT 0 ausgegeben wird?
Ich habe bei mit Zerstückelungen auf dem Display, bei dem AVRco-Funktionen die ich nicht nachvollziehen kann.

Gruß
Thorsten
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: 3,8" Grafik LCD 256x64 Punkte, UC1698 neues Display

 · 
Posted: 06.02.2018 - 21:00  ·  #11
Hallo Thorsten
ganz links ist bit7. Ich habe den Eindruck dass das Display 3bits pro Pixel hat. Ist das so?
rolf
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: 3,8" Grafik LCD 256x64 Punkte, UC1698 neues Display

 · 
Posted: 06.02.2018 - 21:21  ·  #12
Quote by rh

Hallo Thorsten
ganz links ist bit7. Ich habe den Eindruck dass das Display 3bits pro Pixel hat. Ist das so?
rolf


Hallo rolf,

yepp das ist so. Läuft jetzt :-D

Den Bitmap bekomme ich noch nicht zum laufen, aber da schaue ich dann gleich mal. Wenn es geht, mache ich das Testprogramm fertig und lade es in den Softwarebereich.

Gruß
Thorsten
You must be logged in or your permissions are to low to see this Attachment(s).
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2078
Registered: 03 / 2003
Subject:

Re: 3,8" Grafik LCD 256x64 Punkte, UC1698 neues Display

 · 
Posted: 06.02.2018 - 21:27  ·  #13
Hi Thorsten,

auf die Schnelle:
Column-Adress ist immer $00,$10 (falls das Display so gebaut wurde, daß bei X=0 auch das Display-RAM=0 ist. Ich hab ein Display hier, bei dem wurden die ersten 16 Column-Treiber nicht angeschlossen ;).

Row-Adress ist $60 or ($0F and Data), $70 or (($0F and Data) shr 4))

Der erste Wert ist immer das Low-Nibble (Bit 3...0) und der zweite das High-Nibble (Bit 7...4)

Define hast du linear gewählt?

Gruss
Harry

.... das war zugleich geschrieben :) .... ok es funktioniert. Gratuliere.
Das mit den Bitmaps kenne ich vom SSD1322 (schau mal im Softwarebereich)

noch was: hast du da ein gDrawRect(0,0,263,63,$FF) in deinem Programm? Wenn ja stimmt was noch nicht. So wie das aussieht fehlen die beiden senkrechten Linien davon.
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: 3,8" Grafik LCD 256x64 Punkte, UC1698 neues Display

 · 
Posted: 07.02.2018 - 00:49  ·  #14
Hallo Harry.
Quote by Harry
Column-Adress ist immer $00,$10 (falls das Display so gebaut wurde, daß bei X=0 auch das Display-RAM=0 ist. Ich hab ein Display hier, bei dem wurden die ersten 16 Column-Treiber nicht angeschlossen ;).

Row-Adress ist $60 or ($0F and Data), $70 or (($0F and Data) shr 4))

Nein, ich habe die Funktion so programmiert, das oben Links 0,0 ist. In der Funktion wird dann der Command mit dem MSB/LSB gesendet. Das Display kann einen Virtuellen-Windowbereich erstellen und auch einen Scrollbereich.

Code
//--------------------------------------------------------------
// Setze auf Spalte / Reihe
//
procedure display_address( DispSpalte : byte;  DispZeile : Byte);
var
 LSB : BYTE;
 MSB : BYTE;

begin
// Spalte/Col=0 to 263  Zeile/Row=0 to 63

// Displayspalte / Column address LSB
  LSB:= DispSpalte AND $0F;
   WriteLCD( $00 OR LSB, false );
// Displayspalte / Column address MSB
  MSB:= (DispSpalte AND $F0) SHR 4;
   WriteLCD( $10 OR MSB, false );

// Displayzeile / Row address LSB
  LSB:= DispZeile AND $0F;
   WriteLCD( $60 OR LSB, false );
// Displayzeile / Row address MSB
  MSB:= (DispZeile AND $F0) SHR 4;
   WriteLCD( $70 OR MSB, false );

end display_address;


Quote by Harry
Define hast du linear gewählt?

Ja, das Display habe ich auf linear eingestellt, aber man kann den Controller auch auf Column umstellen.

Quote by Harry
noch was: hast du da ein gDrawRect(0,0,263,63,$FF) in deinem Programm? Wenn ja stimmt was noch nicht. So wie das aussieht fehlen die beiden senkrechten Linien davon.

Ist angepasst, hatte von 0..256 gestellt ;-)

Ein Problem habe ich bei dem Controller festgestellt, man muß immer 3 Byte senden, damit die Daten richtig angezeigt werden. Da der AVRCO aber am Ende nur ein Byte sendet und dann den Zeilenwechsel CMD0 veranlasst wird die letzte Spalte verschluckt. Egal was ich gemacht habe, das habe ich nicht in den Griff bekommen. Wenn ich alle Daten am Stück durchschreibe, macht das Display automatisch einen Zeilenwechsel dann klappt alles. Aber was soll es, bei 256 Spalten fehlt halt die letzte Spalte. Dafür kann man die ganzen fertigen Funktionen vom AVRco nutzen.

Code liegt im Softwarebereich.

Dir nochmals vielen Dank für die Infos und Hilfen.

Thorsten
You must be logged in or your permissions are to low to see this Attachment(s).
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2078
Registered: 03 / 2003
Subject:

Re: 3,8" Grafik LCD 256x64 Punkte, UC1698 neues Display

 · 
Posted: 07.02.2018 - 07:31  ·  #15
Hi Thorsten,

wenn du da ein gDrawRect drin hast, dann stimmt was nicht: die Eckpunkte fehlen.
Und wenn es möglich ist ohne adressierung der Zeile das RAM komplett durchzuschreiben, dann mach das doch: bau dir dein eigenes DisplayRefresh :). Sollte auf jeden Fall schneller sein.

Code

UserDevice GraphIOS(cmd:Byte;Arg:Byte); 
  Begin 
    If cmd=1 
      then 
        WriteData(Arg); 
      EndIf; 
  End; 


Das ist zwar vom T6963, aber prinzipiell sollte es so gehen.
Code

Procedure chDispRefresh; 
  Begin 
    Address(RAMZero);  // RAM-Adresse auf Anfang 
    ComWR($B0);        // kontinuierliches Schreiben einschalten
    gDispRefresh;      // Displayrefresh 
    ComWR($B2);        // Auto Reset LCD (auto write off) 
  End chDispRefresh;


D.h. GraphIOS (und damit der gDispRefresh) besteht nur aus dem Schreiben der Daten ohne Adressierung. Das eigene DispRefresh adressiert auf 0,0 und der gDispRefresh schreibt nur die Daten.

Gruss
Harry
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: 3,8" Grafik LCD 256x64 Punkte, UC1698 neues Display

 · 
Posted: 07.02.2018 - 09:28  ·  #16
Hallo Harry,

ja das kann ich dann mal testen.
Für mich war jetzt erstmal wichtig, dass ich dieses Display/Controller gut zum laufen bekomme. Damit steht auch meine Festlegung für das neue Display fest.

Jetzt wird es erstmal mechanisch in das Gehäuse angepasst (CNC) und die Leiterplatte mit der Schnittstelle und Transistor für die Hintergrundbeleuchtung versehen und ab in die Produktion. Damit das Display auf dem Gerät ist, bevor ich in das EMV-Prüflabor fahre :)

Der Rest ist nur noch reine Softwarearbeit und kann auch nach dem EMV-Labor gemacht/angepasst werden :-)

Ich werde jetzt noch mal die Displays in schwarz/weiss bestellen. Und wenn die EMV-Prüfung ok war. Werde ich da gleich mal 100 St. ordern :-) . Damit sich der Aufwand mit dem Zoll / Fracht auch lohnt.

@rolf: Ist es eigentlich möglich den CS und MISO Port.Pin beim Hardware SPI am XMEGA für was anderes zu verwenden? Oder muss ich dazu auf Software umstellen?

Ich würde die beiden PINS gerne für was anderes nutz:
- CS am Display lege ich dann auf dauer ON (es ist nur das Display dran)
- CS vom XMEGA würde ich dann für den Transistor Display-Beleuchtung nutzen
- MISO vom XMEGA dann als Reset vom Display-Controller

Thorsten
  • 1
  • 2
  • 3
  • Page 2 of 3
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   139   153 · Page-Gen-Time: 0.025977s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI