Grafik Display von Pollin

OP #1592310
Lesenswert?
• ▲
▼
um mich in die Funktionen eines Grafik-Displays "einzuarbeiten" habe ich 
bei Pollin das preisgünstige (billige?) Display Solomon LM6270SYL 
gekauft (mit T6963). Ich programmiere seit Jahren mit Bascom8051 und 
habe deswegen, um keine Überraschungen zu erleben, das Musterprogramm 
genommen. Es passiert aber nichts. Dann habe ich das Programm noch um 
ein 10 ms langes Reset ergänzt mit dem Erfolg, dass dann ein dünner 
Strich quer über das Display kurz zu sehen ist. Die Spannungen sind + 
und - 5V wie angegeben. Verdrahtung ist auch ok (111mal geprüft). Hat 
jemand Erfahrung mit diesem Display?
#1592677
Lesenswert?
• ▲
▼
Ich nutze das Display in mehreren Projekten. Die LCD-Spannung liegt 
meist um -9 V. Die Programme erstelle ich mit dem "normalen" Bascom. Die 
Lib musste ich manuell anpassen, da die Timings zu schnell waren, so 
dass teilweise murks angezeigt wurde. Das mit den 10ms Reset habe ich 
nicht verstanden. Evtl ein Verdrahtungsfehler? Die Leitungen dürfen 
nicht zu lang sein. Hat Bascom8051 eine fertige Lib für diese Displays?
OP #1593204
Lesenswert?
• ▲
▼
vielen Dank. Also werde ich als erstes die negative Spannung erhöhen, 
obwohl das Datenblatt ja nicht unbedingt höhere Spannung verlangt. Ich 
habe ein Reset des Displays eingefügt, weil ich so eindeutige 
Startbedingungen habe. Die Leitungen sind 15 cm lang, was ja sicher 
nichts beeinträchtigt.
Bascom8051 hat keine lib. Es sind mit dem Befehl "config graphlcd" ja 
nur Displays 240*64 mit T6963C möglich. Deswegen bin ich auch ratlos, 
wie da das Timing zu ändern wäre.
Ich nehme an, das "normale" Bascom ist BascomAVR? Irgendwann werde ich 
sicher auch umsteigen müssen.
Gast #1593794
Lesenswert?
• ▲
▼
Da ich das Display gerade verbaut habe und mir ähnliches passiert ist, 
kann ich folgendes dazu sagen. Eigentlich ein sehr gutmütiges Display, 
bis auf die negative Spannung. Im Datenblatt steht wenn ich mich recht 
entsinne was von typisch -4,5 Volt. Bei dieser Spannung passiert garnix, 
ab ca -5.5 Volt konnte man erahnen was es werden sollte. Bei -8 Volt war 
es duster. Also, baue das im Datenblatt gezeichnete Poti ein und stelle 
es so ein das es gerade noch grau ist, wenn dann die Routinen stimmen 
mit denen Du das Display beschreibst, sollte sich (wenn auch 
schemenhaft) die Daten darstellen. Dann einfach nachregulieren und schon 
passt das.
Da ich das Display mit AVRco-PAscal ansteuere wird Dir der Source nicht 
unbedingt helfen, aber ich stell das mal mit hintendran. Wobei 
anzumerken ist, die Sourcen waren aus einem Demo des AVRco zum T6963.

  LCD_WR[@PortC, 5]    : bit;
  LCD_RD[@portC, 4]    : bit;
  LCD_CE[@portC, 3]    : bit;
  LCD_CD[@portC, 6]    : bit;
  LCD_RES[@portC,7]    : bit;

  LCD_DATA_Out[@PortA] : byte;
  LCD_DATA_In[@PinA]   : byte;
  LCD_DATA_DIR[@DDRA]  : byte;

function ReadStatus : Byte;
var v   : byte;
begin
  LCD_Data_Dir:= 0;
  incl(LCD_CD);
  NOP;
  excl(LCD_CE);
  NOP;
  excl(LCD_RD);
  NOP;
  NOP;
  NOP;
  NOP;
  NOP;
  NOP;
  v:= LCD_Data_In;
  NOP;
  incl(LCD_RD);
  NOP;
  incl(LCD_CE);
  return(v);
end;

function ReadData : Byte;
var v     : byte;
begin
  LCD_Data_Dir:= 0;
  excl(LCD_CD);
  NOP;
  excl(LCD_CE);
  NOP;
  excl(LCD_RD);
  NOP;
  NOP;
  NOP;
  NOP;
  NOP;
  NOP;
  v:= LCD_Data_In;
  NOP;
  incl(LCD_RD);
  NOP;
  incl(LCD_CE);
  NOP;
  incl(LCD_CD);
  return(v);
end;

procedure WriteData(v : Byte);
begin
  LCD_Data_Dir:= 255;
  LCD_Data_Out:= v;
  NOP;
  excl(LCD_CD);
  NOP;
  excl(LCD_CE);
  NOP;
  excl(LCD_WR);
  NOP;
  NOP;
  NOP;
  NOP;
  incl(LCD_WR);
  NOP;
  incl(LCD_CE);
  NOP;
  incl(LCD_CD);
  NOP;
  LCD_Data_Out:= 255;
  NOP;
  LCD_Data_Dir:= 0;
end;

procedure WriteCom(v : Byte);
begin
  LCD_Data_Dir := 255;
  LCD_Data_Out := v;
  NOP;
  Incl(LCD_CD);
  NOP;
  excl(LCD_CE);
  NOP;
  excl(LCD_WR);
  NOP;
  NOP;
  NOP;
  NOP;
  incl(LCD_WR);
  NOP;
  incl(LCD_CE);
  NOP;
  incl(LCD_CD);
  NOP;
  LCD_Data_Out := 255;
  LCD_Data_Dir := 0;
end;

procedure Status;
begin
{$X-}                  // don't simulate, don't execute in simulator

while((ReadStatus AND 2) = 0)do endwhile;
while((ReadStatus AND 1) = 0)do endwhile;


{$X+}
end;

procedure ComWR(Command : byte);
begin
  Status;
  WriteCom(Command);
end;

procedure ComWR2(Data1, Data2, Command : byte);
begin
  Status;
  WriteData(Data1);
  Status;
  WriteData(Data2);
  Status;
  WriteCom(Command);
end;

procedure Address(Value : word);
var
  l, h           : byte;
begin
  h:= HI(Value);
  l:= LO(Value);
  ComWR2(l, h, Pointer_Address);
end;

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.