PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD Controller HD61202U ansteuern mit Mega163



ReVenGer
10.08.2007, 19:26
Hi zusammen..

Habe folgendes Problem, würde gerne ein Display 128x64 von Nanya ( Datenblätter im Anhang ) mit Bascom an einem Atmega163 betreiben.

Kontrastpoti habe ich bereits angeschlossen und funktioniert einwandfrei.

Die Datenleitungen (DB0 - DB7) hängen alle an Port A und die Steuerleitungen an Port C (D/I = Portc.7 , R/W = Portc.6, E = Portc.5, CS1 = Portc4, CS2 = Portc.3, Reset = Portc.2)

Nun bekomme ich nicht mal ein eine Initialisierung, geschweige denn ein "Hello World".

Wie Steuere ich dieses Display gescheit an?

Bin für jeden Tip dankbar.

Gruß
RVG

Das Datenblatt des Controllers ist im Anhang, LCD Datenblatt ist hier zu finden http://www.mark-products.com/pdf/g128x64/005/005%20spec.pdf

linux_80
10.08.2007, 20:53
Hallo,

das Datenblatt ist von 'nem Spaltentreiber, das können wir nicht brauchen, der Kontroller ist wohl der KS0108, und den kann man von Bascom aus ansprechen,
mal in der Bascom-Hilfe unter Config Graphlcd suchen,
und die Lib glcdKS108.lib verwenden, dann klappts auch mit diesen LCD, also sollte zumindest ;-)

diese zwei Zeilen sollten irgendwo vorkommen (Pins anpassen!):

$lib "glcdKS108.lib"
Config Graphlcd = 128 * 64sed , Dataport = Portb , Controlport = Portd , Ce = 0 , Ce2 = 3 , Cd = 2 , Rd = 5 , Reset = 6 , Enable = 4

ReVenGer
10.08.2007, 22:44
So, hab`s grad mal ausprobiert, wird leider auch damit nix...
Der HD61202 und der KS0108 sind baugleich.
Das müsste ja mit der .lib passen

Mich wundert, das das LCD nicht mal nen Reset macht.

Nur mal zum Verständnis, Cd =D/I , Rd=R/W, sehe ich das richtig?
Gruß

ReVenGer
11.08.2007, 12:15
So, habe dem Display ne Reaktion entlocken können.
Weiß das allerdings noch nicht so richtig zu deuten.

Weil die rechte seite nicht aktiv ist.


Gruß


$regfile = "m163def.dat" ' specify the used micro
$crystal = 1000000 ' used crystal frequency
$baud = 9600 ' use baud rate

$lib "glcdKS108.lbx"

Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 4 , Ce2 = 5 , Cd = 8 , Rd = 7 , Reset = 3 , Enable = 6
'CE =CS1 Chip select
'CE2=CS2 Chip select second chip
'CD=Data/instruction
'RD=Read
'RESET = reset
'ENABLE= Chip Enable



Cls
Locate 1 , 1 : Lcd "Line 4"
End

linux_80
11.08.2007, 14:11
Wie lang sind die Kabel so in etwa ?
Zeigt es sonst garnix anderes an ?

Ab 30cm, kanns schon sein, das es zu Störungen kommt,
auch hab ich mal in der Lib die Zeit für das Enable etwas erhöht, dann war das vorbei mit Anzeigefehlern.
Bei mir hat sich hin und wieder eine Displayhälfte deaktiviert, auch haben nicht immer alle Pixel das angezeigt wie es gedacht war, nach dem Lib-Umbau (eine Zeile) ist das alles vorbei.
Ich hab meins von Pollin.

ReVenGer
11.08.2007, 15:04
Hi, die Kabel sind ca 20cm lang.

bekomme halt nur wirre Zeichen auf der linken hälfte.
Das Display habe ich vor ein paar Jahren von nem Towitoko Timecontrol ausgebaut, wo es einwandfrei funktionierte.

welche Zeilen hast Du denn verändert?

Ich habe hier auch nur die .lbx weil ich eine Bascom Demo habe.

Gruß

linux_80
11.08.2007, 17:40
Das sollte doch zum laufen bekommen sein :-k

Die glcdKS108.lbx im Libverzeichnis der Bacom-Installation öffnen, mit beliebigem TextEditor, vorher am besten eine Sicherung der Datei machen.
Dann in dieser nach _glcd_enable suchen, kommt nur 5mal vor, 1. Mal init, dann noch 2mal mit einer genus() Zeile dazwischen.
Der Wert in Klammer gibt die Pause an, hier kann man etwas erhöhen, aber nicht übertreiben, zB mal mit 5.
Abspeichern, und im Bascom das Programm nochmal übersetzen, und auf den AVR. Dann schaun ob sich was verbessert.

Wenn das nix hilft doch nochmal die Verkabelung checken.

Hier hab ich schonmal die Belegung von mir gepostet (unteres):
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=32778
Die Bezeichnungen sind immer wieder mal anders, aber sollte man schon zusammenfinden.

ReVenGer
11.08.2007, 18:43
So, alles überprüft, lbx geändert aber weiterhin nix neues, liegts vielleicht an der source?

btw. das LCD hängt an nem stk500 mit internem quarz also 1MHz




$lib "glcdks108.lbx "

$crystal = 1000000
$regfile = "m163def.dat"
$hwstack = 32
$swstack = 10
$framesize = 40


Config Graphlcd = 128 * 64sed , Dataport = Portd , Controlport = Portb , Ce = 1 , Ce2 = 2 , Cd = 5 , Rd = 4 , Reset = 0 , Enable = 3

Setfont Font8x8
Lcdat 6 , 1 , "Test" , 0
Locate 1 , 1 : Lcd "hello"
Do
Loop

End

$include "font8x8.font"

linux_80
11.08.2007, 20:18
Wenn die Leitungen passen, weiss ich auch grad nix weiter,
die Zeile mit Locate funktioniert hier aber nicht, bei diesem LCD bringt man nur etwas per LCDAT zu sehen.

Du könntest noch versuchen die beiden CS-Leitungen am LCD zu tauschen, dann sieht man immerhin mal ob die andere Seite funktioniert.

Edit:
Ich seh' grad Du verwendest PortB, hast Du den ISP angesteckt während dem Versuch ?

ReVenGer
11.08.2007, 20:32
Ja, ISP is ständig dran.
habe aber auch PortD probiert.

isch werd hier noch pleed.. den ganzen tag verbringe ich nun schon damit, bin kurz davor mir nen neues bei pollin zu bestellen..

linux_80
11.08.2007, 20:42
Man braucht ja immer 2 Ports, einmal 8bit Daten, und 6Bit Control, wenn Du PortB verwendest, mach den ISP mal ab !

Wo hast du den M163 her, den gibts ja offiziell schon ein paar Tage nimmer ?

ReVenGer
11.08.2007, 20:46
ISP ab bringt nix, hab ich grade probiert.
Habe mir grade Deins bei pollin angeschaut, das wird es wohl werden.

Den 163er habe ich damals von farnell. hatte mich mit 10 Stk. eingedeckt.
Man weiß ja nie :)

digitali
11.08.2007, 20:50
Hallo,

das KS0108 hat meines Wissens kein eigenen Zeichensatz. Der muss mit compiliert werden. Da kann das Display auch nichts anzeigen.
Ich habe mir ein Font mit dem Bascom-Fonteditor selbst erstellt und dann im Programm eingebunden. Funzt wunderbar:


$lib "glcdKS108.lib"
$regfile = "m128def.dat"
$crystal = 16000000
Config Graphlcd = 128 * 64sed , Dataport = Portd , Controlport = Portb , Ce = 1 , Ce2 = 0 , Cd = 4 , Rd = 3 , Reset = 2 , Enable = 5

Setfont 6x8font
Cls

Lcdat 1 , 1 , "Hello World"

Do
nop
Loop

End

$include "6x8font.font"

Mit freundlichen Gruessen
Digitali

ReVenGer
11.08.2007, 20:53
Also den Font hatte ich mit eingebunden..

digitali
11.08.2007, 21:00
Ups, das hatte ich irgendwie ueberlesen.

Ich gebe in meinem Listing die "glcdKS108.lib" an und Du die "glcdks108.lbx". Liegt es vielleicht daran?

ReVenGer
11.08.2007, 21:03
Nein, die .lbx sind compilierte .lib dateien. Ich vermute mal das irgendeine Steuerleitung defekt ist, obwohl es an dem Timecontrol noch lief.

linux_80
11.08.2007, 21:41
Evtl. braucht das LCD doch eine andere Initroutine, mal das DB angucken :-k
kann ja sein, das es nicht mit dem Init der Lib aufwacht.


In der Demo gibts dafür keine .lib, da kann man nur die .lbx-en angeben.


Hast Du schon probiert die CS-Leitungen zu tauschen, am LCD, damit man sieht ob sich da was ändert, also die andere Seite geht ?

Wär' ja schad' um das Ding !

ReVenGer
11.08.2007, 21:51
CS hab ich getauscht, hab hier auch noch nen lcd mit HD61830 als controller und das teil funktioniert einwandfrei.. kann dir das lcd gerne schicken, falls du es haben möchtest, habe nach 72 Stunden intensiver bemühungen damit abgeschlossen ;)

linux_80
11.08.2007, 21:57
Naja hilft nix,
und danke, bitte nicht senden, defekte Teile hab ich genug hier :-)

ReVenGer
11.08.2007, 21:58
Danke dir aber nochmal für deine Hilfe...

Gruß