LCDs und GLCDs anschließen und ansteuern (BASCOM)

eigentlich wollte ich den gar nicht einsetzen, dann habe ich den Post von Cassio entdeckt...da war es zu spät
Das Display scheint aber auch anders nicht ganz ohne zu sein. Es gibt wohl
genug Leute die es nicht zum laufen bekommen.

Aber hoffen wir mal das Beste ;)

Gruß
Dino
 
Hallo,

Was ich persönlich noch nicht probiert habe, wäre das "Splitting" von Ports.
Hast du zuuuuufällig das Buch von Claus Kühnel? :hmmmm:

In Katipel 6.3 wird eine Möglichkeit beschrieben, wie du zum Beispiel die einzelnen Pins:
PC3, PC2, PB6, PB5, PB4, PB3, PB2, PB1 und PB0
zu einem gemeinsamen Ausgangsport "Q" zusammenfassen kannst.

Das funktioniert in umgekehrter Weise dann auch als Eingangsport. ;)

Vielleicht kannst du damit ja das GLCD zum Betrieb überreden, obwohl du keinen ganzen PORT zur Verfügung hast.
Die einzige Hürde dabei ist wohl...... wie "verkaufst" du das der "Config"-Anweisung? :hmmmm:
ich tippe mal ganz stark darauf das es wohl auf diese Art nicht funktionieren
wird. Man wird wohl nicht eine fertige Bibliothek mit ein paar BASCOM-
Befehlen verquicken können. Vor allem nicht an der Stelle ...

Daten--->GLCD-Bibliothek--###-->Hardware

... an der Stelle ### müßte dann das Splitting erfolgen ... wie soll Bascom da
drankommen ? Das geht nur wenn man die Bibliothek selber erweitert.

Aus dem Grund meinte ich das mit den Bits 0..3 und 4..7. Dafür gibt es einen
Assembler-Befehl der einem ein Byte in zwei Nibbles zerhacken kann. Oder
wenigstens die beiden Nibbles gegeneinander tauschen (swap). Den kann
man für solche Sachen verwenden. Ich hab den auch für meinen eignenen
Treiber für 4Bit-Betrieb von LCDs verwendet. Das ist die einfachste Methode.
Trotzdem muß das in die Bibliothek eingebaut werden. Alle anderen Methoden
enden in unsäglicher Bitpfriemelei und ungeheurem Frust. Außerdem wird die
Bibliothek durch das Auseinanderhacken des Datenbytes sowas von langsam
das es eigentlich unbenutzbar wird (fürchte ich). Man muß ja nicht nur das
Byte auseinanderhacken um es zum Display zu senden sondern auch die
Bits beim Empfangen vom Display wieder zusammenpuzzeln.

Gruß
Dino
 
Daten--->GLCD-Bibliothek--###-->Hardware

... an der Stelle ### müßte dann das Splitting erfolgen ... wie soll Bascom da
drankommen ? Das geht nur wenn man die Bibliothek selber erweitert.


Hallo Dino!

Ich denke ja auch nicht, dass es mit dem Splitting funktioniert......


Wie aber schon geschrieben, beginnt das Problem ja schon bei der Config-Angabe des PORTS. :cool:

Obendrein ist das Splitting auch relativ einfach realisiert und eine "Rückgabe" an die GLCD-LIB kann auf diese Weise auch nicht erfolgen.

Es bleibt daher wohl so wie wir es immer schon geschrieben haben.......
Für ein GLCD benötigt man stets einen kompletten DATA-PORT! ;)


Grüße,
Cassio
 
hmm, ob der Aufwand (und die daraus resultirende Probleme) lohnt...

ich werde versuchen erst mit einem attiny2313 das Display einmal überhaupt anzusprechen, dann kann ich mich noch spielen.

die negative Spannungsquelle ist schon fertig... :cool:
 
Hallo Ramses!

Nun ja, das war doch zu erwarten.....

Ein Tiny2313 und ein GLCD :
Das wird mit BASCOM aber ziemlich knapp! ;)

Wenn du die Fonts weglässt und eine oder zwei Linien zeichnest, dann könnte es gerade noch so klappen. :rolleyes:


Grüße,
Cassio
 
tatsächlich! die Fonts nehmen jede Menge Speicher weg...

das heisst ohne einen Font zu definieren, kann ich auch kein Text ausgeben?
ein default Font od. dergleichen im Displaycontroller existiert nicht?

gibt es evtl. kleinere Fonts (von der Größe des Speicherbelegung her)?
 
das heisst ohne einen Font zu definieren, kann ich auch kein Text ausgeben?


Hallo Ramses!

Nun ja.... es geht natürlich auch ohne Fontdatei.....
aber ob du deswegen Speicher einsparst, wenn dein Programm jedes Pixel eines Buchstabens selber malen muss bezweifle ich. ;)

Aus dem Grunde sage ich nun mal ganz pauschal.....
Nein! Ohne Fontdatei keine Zeichenausgabe! :cool:


ein default Font od. dergleichen im Displaycontroller existiert nicht?

Wenn du ein GLCD mit T6963C Controller hättest, oder das OLED von Dirk, dann wären auch Fonts gleich im Display hinterlegt....
aber sonst: Nein!


Gruß,
Cassio
 
Hi Cassio,

hmmm, da braucht man dann ein fetten µC, sodass Platz auch fürs Programm übrig bleibt...

könntest du bitte bestätigen, dass bei Dir auch 15,1 KB hex mit dem folgenden Code erzeugt werden? DANKE!

Code:
$crystal = 4000000
$hwstack = 48
$swstack = 32
$lib "glcdSED1520.lbx"

Config Graphlcd = 120 * 64sed , Dataport = Portb , Controlport = Portd , Ce = 5 , Ce2 = 6 , Cd = 3 , Rd = 4

'The dataport is the portname that is connected to the data lines of the LCD
'The controlport is the portname which pins are used to control the lcd
'CE =CS Chip Enable/ Chip select
'CE2= Chip select / chip enable of chip 2
'CD=A0 Data direction
'RD=Read

Glcdcmd &H3E , 1 : Glcdcmd &H3E , 2     ' both displays off
Cls
Waitms 10
Glcdcmd &H3F , 1 : Glcdcmd &H3F , 2     'both on


Do
  Setfont Font16x16
  Lcdat 1 , 1 , " " ; "21:22" ; " " , 0
  Setfont Font8x8
  Lcdat 2 , 98 , ":56" , 0
  Lcdat 3 , 1 , " AVR-Praxis.de "
  Lcdat 4 , 1 , " " ; "21.03.2011" ; " " , 0
Loop

End

$include "font8x8.font"
$include "font16x16.font"
 
könntest du bitte bestätigen, dass bei Dir auch 15,1 KB hex mit dem folgenden Code erzeugt werden? DANKE!

Hallo!

Wenn ich deinen Code nehme und einen Mega8 als Controller einsetze, dann sagt er mir: Flash used: 67% !

Nur die reine HEX-File ist bei mir dann 15,3kB groß (Windows-XP)


Grüße,
Cassio
 
Nur die reine HEX-File ist bei mir dann 15,3kB groß (Windows-XP)
wobei 15kB Hexfile keine 15kB Code sind. In der Hexdatei ist ein Byte durch
2 Byte angegeben (2 Zeichen für die Hexdarstellung). Außerdem kommt vorne
in der Zeile noch die Adresse und hinten die Prüfsumme dazu. Kann man also
so nicht unbedingt sagen das es 15kB Code sind die da im Controller landen.
67% wären bei 8kByte Flash vom Mega8 ja auch ...
8kB / 100 * 67% = 5,36kB
Also 15kB Hex-Datei zu 5,4kB Binärcode. Grob gerechnet Faktor 3

Gruß
Dino
 
Hi Cassio,

hab jetzt endlich geschafft diesen LCD zum Laufen zu bringen! :party:

http://www.avr-praxis.de/forum/showpost.php?p=4862&postcount=3

möchte jedoch vermerken, dass dein Plan mit dem /RD auf RESET des µC NICHT funktionieren kann. Der µC wird andauernd resetet.

könntest du bitte das berichtigen? danke!

ausserdem es wäre ganz praktisch die ganze Information aus diesem Thread zu konsolidieren und sticky zu machen (z.B. ein Thread pro Displaytype).
es ist mittlerweile sehr unübersichtlich geworden. DANKE!

sonst top Leute da und sehr nützliche Infos, danke nochmal ! :adore:
 
möchte jedoch vermerken, dass dein Plan mit dem /RD auf RESET des µC NICHT funktionieren kann. Der µC wird andauernd resetet.

könntest du bitte das berichtigen? danke!


Hallo Ramses!

Sorry, aber das wiederspricht sich mit meinen Erfahrungen.... und dem Datenblatt. :hmmmm:

Soweit ich das noch im Kopf habe.....
Das Display benötigt zu Beginn einen Reset, wie eine Art "Startimpuls".
Dies bekommt es zeitgleich mit dem Controller am Resetpin.
Ohne diese Maßnahme ist es mir nicht gelungen das Display in Betrieb zu nehmen.

Das ist auch der Grund, warum ich den Plan diesbezüglich nicht ändere.



Mich würde aber mal interessieren.....
Wie hast du es denn ohne die Reset-Verbindung zum Laufen bekommen?
Wenn es eine andere Möglichkeit gibt, dann stell die hier doch mit ein!
Zeichne einen Anschlussplan und stelle den Code sowie Bilder hier rein.
Ich werde dann auch gern einen Link von meinem Beitrag zu deinem Beitrag erstellen. :)

Grüße,
Cassio
 
habe nichts besonderes gemacht, sondern nur den /RD an +5V angehängt...

und hier sehe ich bei dir auch kein /RD an das RESET Pin des µC angeschlossen, oder täusche ich mich?

http://www.avr-praxis.de/forum/attachment.php?attachmentid=1710&d=1261945862

anyway, bei mir funkt

eine andere Frage: bei der negativ Spannung Ausgang bekoome ich nur ca. -3,7V. wie könnte ich diese ein wenig größer machen? (-4,5V z.B.).
in deiner Zeichnung weiteroben sehe ich auch keine Dioden. Kann es sein, dass diese die Spannung verringern?

danke!
 
Hallo Ramses!

Ich habe noch mal ins Datenblatt geschaut und die betreffenden Seiten stell ich hier nun mal mit ein.....
Dort ist z.B. auch das Timing und die Abhängigkeit des /RD(E)-Pins mit dem Reset des Controllers zu sehen.

SED1520-Seite9.gif SED1520-Seite10.gif



und hier sehe ich bei dir auch kein /RD an das RESET Pin des µC angeschlossen, oder täusche ich mich?

Ja, da täuscht du dich! :cool:
Der Controller auf dem Foto ist ein Mega16 und der Reset liegt etwas mittiger (blauer Widerstand). Von dort aus geht eine gelbe Leitung zum /RD(E)-Pin des Displays.



anyway, bei mir funkt

Ist ja schön zu lesen...... wundert mich aber nun doch ein wenig. :hmmmm:

Warum wurde dein Controller denn immer resettet?
Wie hast du das denn rausgefunden?



in deiner Zeichnung weiteroben sehe ich auch keine Dioden. Kann es sein, dass diese die Spannung verringern?

Welche Zeichnung mit Dioden meinst du denn? :hmmmm:
Hast du denn auch einen NE555 genommen, oder einen ICL7660?

Grüße,
Cassio
 
ich lese aus deinen Infos, dass /RD auf low gezogen werden muss, wenn man Daten aus dem LCD-Controller auslesen möchte.
da ich das nicht benötige, kann man IMHO /RD getrost auf HI lassen.

aber anscheinend hattest du auch ähnliche Probleme am Anfang :D
http://www.avr-praxis.de/forum/showthread.php?t=480&highlight=SED1520

Wie hast du das denn rausgefunden?
ähnlich wie du, mit einer LED. solange die /RD an RESET hängte hat sich bei der LED nichts getan.


Welche Zeichnung mit Dioden meinst du denn?

diese hier
http://www.avr-praxis.de/forum/attachment.php?attachmentid=1615&d=1259869083

und hier sind aber keine Dioden sichtbar. Oder du hast hier den ICL7660 verwendet?
http://www.avr-praxis.de/forum/attachment.php?attachmentid=1711&d=1261946147

ich verwende den NE555.
 
ich lese aus deinen Infos, dass /RD auf low gezogen werden muss, wenn man Daten aus dem LCD-Controller auslesen möchte.
da ich das nicht benötige, kann man IMHO /RD getrost auf HI lassen.


Hallo Ramses!

Wenn es bei dir so funktioniert, dann stell die "Unterlagen" zusammen....... und rein damit in diesen Thread. ;)

Bei mir klappt das mit dem permanenten Highpegel jedenfalls nicht.

So haben wir aber beide Varianten hier im Forum!



aber anscheinend hattest du auch ähnliche Probleme am Anfang

Oh ja, das kleine GLCD hat mich bei den ersten Versuchen mächtig geärgert.....
Letztlich hat es dann aber doch geklappt. ;)



ähnlich wie du, mit einer LED. solange die /RD an RESET hängte hat sich bei der LED nichts getan.

Den Effekt kenne ich zwar auch..... allerdings stand mein Programm, weil es keine Rückmeldung bekam.
Von einem ständigen Resetten kann ich nichts berichten.



und hier sind aber keine Dioden sichtbar. Oder du hast hier den ICL7660 verwendet?

Ja, bei dem zweiten Aufbau.... extra noch einmal für Neuuser.... stand mir ein ICL7660 zur Verfügung, den ich dann verwendet hatte.
Aus dem Grunde entfallen die Dioden für die Ladepumpenschaltung mit dem NE555.


Grüße,
Cassio
 
eine andere Frage: bei der negativ Spannung Ausgang bekoome ich nur ca. -3,7V. wie könnte ich diese ein wenig größer machen? (-4,5V z.B.).
in deiner Zeichnung weiteroben sehe ich auch keine Dioden. Kann es sein, dass diese die Spannung verringern?

danke!

gibt es eine Lösung dafür (NE555) ?
 
Hallo Ramses!

Welche Spannung erreichst du denn, wenn du den Ausgang gar nicht belastest?

Wenn du allerdings aus +5V gerne -5V machen möchtest, dann kann ich dir nur zu einem ICL7660 raten.
Bei der Schaltung mit dem NE555 wird es leider immer eine Differenz geben.
-4,7V wirst du damit wohl nicht erreichen..... es sei denn, du legst +6V an die Schaltung des NE555.


Grüße,
Cassio
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)