LCDs und GLCDs anschließen und ansteuern (BASCOM)

Cassio

Aktives Mitglied
29. Okt. 2008
4.027
17
38
Region Hannover
Sprachen
  1. BascomAVR
Hallo zusammen!

Ich werde hier mal ein paar Beispiele einstellen, wie man diverse Typen von LCDs bzw. GLCDs anschließt und unter BASCOM ansteuert.


Als erstes geht es um ein günstiges Text-Display mit 27 x 4 Zeichen von Pollin:

HIER ist der Link zum Display.
(Ist inzwischen leider ausverkauft! Oktober 2010)



Dies ist der Anschlussplan---> lcd-27-4.GIF


Nun noch ein Beispielbild vom funktionierenden Display:

IMG_0398.JPG


Und hier jetzt noch die wichtigsten Auszüge vom Programmcode zur Ansteuerung:

Code:
' Configuriere das LCD
Config Lcd = 40 * 4
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , E2 = Portc.4 , Rs = Portc.6
Config Lcdbus = 4
Cursor Off

'---------------------------------------------------
' einmaliges Initialisieren des Displays
Dim ___lcdno As Byte                                        ' LCD-Controller-Schalter


___lcdno = 0
Initlcd
Cursor Off
Cls

___lcdno = 1
Initlcd
Cursor Off
Cls
'---------------------------------------------------


' ###############################################
' Arbeitsschleife

Do
' obere zwei Zeilen
___lcdno = 0
Locate 1 , 1
Lcd "Uhr= " ; Time$ ; "  Temp.: " ; Ist_temp ; Chr(0)

Locate 2 , 1
Lcd Wtag ; " der " ; Date$ ; "        "

' =====================================================
' untere zwei Zeilen
___lcdno = 1
Locate 1 , 1
Lcd "Impuls: " ; Imp_s

Locate 1 , 19
Lcd "Pause: " ; Pause_s

Locate 2 , 1
Lcd "Dcfs:" ; Time(dcf_sec) ; " Dcfd:" ; Date(dcf_day)

Loop
' ################################################
End
 
Hallo !

Weiter geht es mit einem 128 x 64 Pixel Grafik-Display.
Das Display hat einen KS0108 Chipsatz und dieser muss später im BASCOM-Code mit angegeben werden!

HIER ist der Link zum beschriebenen Display.


Dies ist mein Anschlussplan---> glcd-128-64-neu.GIF


Nun noch zwei Bilder vom Display:

IMG_0400.JPG und IMG_0401.JPG


Und hier die wichtigsten Auszüge zur Ansteuerung:
(für Systemtakte bis 8MHz !)
Code:
' Configuriere das LCD
'some routines to control the display are in the glcdKS108.lib file
$lib "glcdKS108.lbx"

'First we define that we use a graphic LCD
Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Portd , Cd = 0 , Rd = 1 , Ce = 3 , Ce2 = 2 , Enable = 4 , Reset = 5
'CE =CS1  Chip select
'CE2=CS2  Chip select second chip
'CD=Data/instruction
'RD=Read
'RESET = reset
'ENABLE= Chip Enable

Dim X As Byte , Y As Byte , Z1 As Byte , Z2 As Byte

Setfont Font8x8

'---------------------------------------------------------------------
' Arbeitsschleife
Do
Gosub Lcd_cls2
Wait 1

For Z1 = 1 To 8
Lcdat Z1 , 1 , "--Testschrift!--"
Waitms 500
Next


For Z2 = 0 To 63
Line(0 , Z2) -(127 , Z2) , 1                                'make line
Waitms 50
Next

For Z1 = 8 To 1 Step -1
Lcdat Z1 , 1 , "Test invertiert!" , 1                       ' will inverse the text
Waitms 500
Next

Wait 2

For Z2 = 63 To 0 Step -1
Line(0 , Z2) -(127 , Z2) , 0                                'make line
Waitms 25
Next


For Z2 = 0 To 62 Step 4
Line(0 , Z2) -(127 , Z2) , 1                                'make line
Waitms 250
Next

For Z2 = 0 To 124 Step 4
Line(z2 , 0) -(z2 , 63) , 1                                 'make line
Waitms 250
Next

Wait 2

For Y = 1 To 30
   Circle(63 , 31) , Y , 1
   Waitms 100
Next

Wait 2

For Y = 30 To 1 Step -1
   Circle(63 , 31) , Y , 0
   Waitms 100
Next

Wait 2

Gosub Lcd_cls2

Showpic 0 , 0 , Plaatje                                     'show a comnpressed picture
Wait 5

Loop

End                                                         'end program

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

$include "font8x8.font"

'---------------------------------------------------------------------
Plaatje:
'include the picture data
$bgf "ks108.bgf"


HINWEIS!
Bei einem Systemtakt größer 8MHz gibt es Probleme bei der Darstellung (wirre Zeichen auf dem Display)!
Es gibt zu dem Problem eine Lösung die HIER beschrieben ist!
Es sind also nur kleine zeitliche Anpassungen in der LIB notwendig!



Grüße,
Cassio
 
Hallo !

Ein weiteres günstiges Grafik-Display mit 122 x 32 Pixel habe ich noch.....
was mir auch ein paar Stunden Kopfzerbrechen gemacht hat. ;)
Es hat einen SED1520(DAA) Chipsatz und dieser wird auch von BASCOM unterstützt.

Das Display benötigt eine negative Kontrastspannung, die ich mit einem separaten NE555 erzeuge (siehe Schaltplan).
Natürlich kann man diese Spannung mit einem ICL7660 viel einfacher erzeugen....
wer aber dieses Bauteil gerade nicht zur Hand hat, kann sich mit ein paar Standartbauteilen auch behelfen. ;)

Die benötigte 2kHz Clock wird ebenfalls mit einem NE555 erzeugt.
Pollin legt aber schon die benötigten Bauteile in SMD-Ausführung bei und im Lieferumfang befindet sich sogar eine Adapterplatine nebst Leitgummi!
Auf der Adapterplatine wird also nicht nur das Display angeschlossen, sondern es finden auch die SMD-Bauteile Platz. Damit muss man sich nicht mehr extern um die 2kHz-Clock kümmern. :)

HIER ist der Link zu dem kleinen Display!


Hier noch der Anschlussplan....
Bitte den Anschlussplan unbedingt beachten!!!


glcd-122-32.GIF


Natürlich gibt es auch hiervon mal zwei Bilder:

IMG_0414.JPG und IMG_0413.JPG
Und Nachts mit EL: kl-GLCD+EL.jpg .....Hier ein paar Hinweise dazu.


Auch für dieses Display stelle ich hier einen Code-Auszug mit ein:
Code:
' *****************************************************
$lib "glcdSED1520.lib"

Config Graphlcd = 120 * 64sed , Dataport = Portc , 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


'------------------------------------------------------------------
' Arbeitsschleife
Do
Sec_s = Str(_sec)
Sec_s = Format(sec_s , "00")
Min_s = Str(_min)
Min_s = Format(min_s , "00")
Std_s = Str(_hour)
Std_s = Format(std_s , "00")

Portb.0 = Puls

If Z1 < 10 Then
   Setfont Font16x16
   Lcdat 1 , 1 , " " ; Std_s ; ":" ; Min_s ; " " , 0
   Setfont Font8x8
   Lcdat 2 , 98 , ":" ; Sec_s , 0
   Lcdat 3 , 1 , " AVR-Praxis.de "
   Lcdat 4 , 1 , "    " ; Date$ ; "    " , 0
Else
   Setfont Font16x16
   Lcdat 1 , 1 , "A V R - " , 0
   Lcdat 3 , 1 , "Praxis  " , 0
   Wait 3
End If

Loop


End                                                         'end program

' ------------------------------------------------------------------
Sectic:
Toggle Puls
If Z1 < 10 Then
Incr Z1
Else
Z1 = 0
End If
Return
' ------------------------------------------------------------------

$include "font8x8.font"
$include "font16x16.font"
 
Hi Cassio,

die Infos zum Grafik-Display mit dem SED1520 kommen noch ?
Sonst aber schon recht nett. Sollte ich mal meine Routinen in Assembler
für das PC-1602 von Pollin und das 24x8Chr mit M50530-Ctrl mit
anfügen ...

--- Edit ---
Ich sehe, eshat sich gerade erledigt. da ist es schon :D

Gratulation ! :flowers: Sieg über die Technik ;)

Noch nen Edit ... Ist dieser Thread nicht bei FAQ oder LCDs besser aufgehoben ?

Gruß
Dino
 
Noch nen Edit ... Ist dieser Thread nicht bei FAQ oder LCDs besser aufgehoben ?

Hi Dino !

Hast Recht.....
Könnten wir auch zu den FAQs schieben. ;)

Da es Harware, Software und Schaltpläne waren hatte ich mich zwar für den Projektbereich entschieden, aber bei den FAQs ist es auch gut aufgehoben.

Kannst es also gerne rüber schieben. ;)

Gruß,
Cassio
 
Hi Cassio,

Könnten wir auch zu den FAQs schieben. ;)

....

Kannst es also gerne rüber schieben. ;)
bist doch selber Moderator ... Selbst ist der Mann ... :D
Oder aus meiner Sicht ...
Wenn ich nicht will das ich was tu dann leit ichs einem andern zu :rolleyes:

... und verschoben ... war ich mal selbst der Mann :D
Ne Info im Ursprungsbereich brauchen wir wohl nicht. Das Thema war ja noch jung.
Und nu geh ich ins Bett - So schwere Arbeit macht müde :D ... Gut Nacht ...

Gruß
Dino
 
Hi Cassio,

ich habe das erste Display auch zuhause. Wie hast du die Anschlüsse von dem Flachbandkabel auf die Platine gebracht? Ich finde das schon etwas eng um Drähte an das Flachband zu löten.
 
Oh Gott Kani!:eek:
Nicht du auch noch.:(
Bitte sag dass du dich nur verirrt hast.:cray:
Oder willst du mich hintergehen?:mad:
Du bist hier in einem Bascom-thread, wenn du es schnell machst kannst du den Post noch löschen bevor jemand etwas merkt.:stop:
Ich könnts nicht ertragen wenn du jetzt tatsächlich zu den Bascom Programmierern gewechselt wärst.
 
Ne Nomis. Ich bin nicht verrückt :cool:
(Nicht so wie die anderen:D:D - ;))

Hab nur wegen der Hardware gefragt.
 
Hi Cassio,

ich habe das erste Display auch zuhause. Wie hast du die Anschlüsse von dem Flachbandkabel auf die Platine gebracht? Ich finde das schon etwas eng um Drähte an das Flachband zu löten.

Hallo Kani!

Ich habe das zwar schon einmal in einem anderen Thread gezeigt, aber ich hänge unten noch einmal die Bilder für dich an. ;)


Wie zu erkennen, habe ich mir eine kleine Platine geäzt und das Flachkabel mit den offenen Kontakten auf die Kupferbahnen "fest geklemmt".

Das Rastermaß des Flachkabels ist 1,27mm!


Gruß,
Cassio


PS:
Ach Kani...... Rom wurde auch nicht an einem Tag erbaut....
Also wirst du vielleicht auch eines Tages mal vernünftig werden und in BASCOM programmieren. ;)

Ich wünsche HIER sonst keine weiteren Beiträge zu diesem Thema!
 

Anhänge

  • IMG_0393 [800x600].JPG
    IMG_0393 [800x600].JPG
    89,5 KB · Aufrufe: 431
  • IMG_0394.JPG
    IMG_0394.JPG
    29,5 KB · Aufrufe: 317
Hallo !

Ups.....
Ich habe gerade gesehen, dass auf den Fotos noch der "alte" LCD-Adapter zu sehen ist!
Hatte beim ersten Layout leider die Nummerierung der Pins und den Kontrastregler seitenverkehrt erstellt. :rolleyes:

Im Anhang befindet sich nun das neue und seitenrichtige Layout! :)

Die Auflösung für den Druck ist 300dpi.... dann sollten die Größenverhältnisse auch wieder passen.


Schöne Ostertage,
Cassio
 

Anhänge

  • 27x4LCD-Adapter.gif
    27x4LCD-Adapter.gif
    10,7 KB · Aufrufe: 235
Hallo!

Da das kleine 122x32 Pixel Grafik-Display (mit SED1520 Controller) eine EL-Folie als Hintergrundbeleuchtung hat..... und ich den passenden Inverter nun erst bekommen habe, kann ich auch jetzt erst ein passendes Bild hier einstellen.

kl-GLCD+EL.jpg


Erwähnen möchte ich noch, dass der Inverter trotz seiner 120V / 400Hz Spannung keine Störungen verursacht... auch nicht beim DCF77 Empfang. ;)


Grüße,
Cassio



PS:
Ggf. wäre eine EL-Folie auch eine Möglichkeit der Beleuchtung für das 27x4 LCD.
Dies habe ich aber noch nicht ausprobieren können.
 
Hallo !


Nachtrag zum 128x64 Pixel Grafikdisplay!


In meiner angehängten Zeichnung.... und auch im Datenblatt von Pollin für das grau/weiße-Grafikdisplay, sind die Anschlüsse für die Hintergrundbeleuchtung falsch angegeben!

Richtig ist:
Pin 19 = Kathode
Pin 20 = Anode


(Im Datenblatt steht: Pin 19= Anode / Pin 20= Kathode)


Allerdings ist im Datenblatt für das blau/weiße-Grafikdisplay die Pin-Belegung wieder richtig herum angegeben!


Ich wollte das hier nur einstellen, damit nicht noch einer der Meinung ist seine Beleuchtung ggf. zerstört zu haben...... und genau wie ich dann das ganze Display zerlegt um eine alternative Beleuchtung einzubauen. ;)


Grüße,
Cassio
 
Hallo Oskar01,

ich hab mal wieder ein LCD angeschlossen. Diesmal mit den von Dir empfohlenen Widerständen 1K an DB0-DB3 nach Masse. Cassio und ich haben schon gerätselt, welchen Sinn die R's machen. Ich kann so erstmal keinen Unterschied zum Direktanschluss an der Display- Ausgabe feststellen.


Grüsse,

Michael
 
Hallo,

Diesmal mit den von Dir empfohlenen Widerständen 1K an DB0-DB3 nach Masse. Cassio und ich haben schon gerätselt, welchen Sinn die R's machen. Ich kann so erstmal keinen Unterschied zum Direktanschluss an der Display- Ausgabe feststellen.
Im Normalfall gibt es auch keinen Unterschied.
Aber wenn durch nen blöden Zufall die Datentreiber des Displays auf Ausgang
stehen arbeiten die nicht gegen nen Kurzschluß nach GND sondern nur gegen
die 1k Widerstände. Das bekommt denen wesentlich besser ;)

Da hat Oskar schon ganz gut gebastelt. Ich hab mein Dissplay im 4Bit-Modus
auch so angeschlossen. Obwohl man dadurch extra 4 Widerstände verbrät.

Gruß
Dino
 
Hi Dino,

Aber wenn durch nen blöden Zufall die Datentreiber des Displays auf Ausgang
stehen arbeiten die nicht gegen nen Kurzschluß nach GND sondern nur gegen
die 1k Widerstände.
Obwohl man dadurch extra 4 Widerstände verbrät.
Gut, da opfere ich doch gern die Widerstände. Passen auch gut in eine SUB-D-Kappe, sind dann weniger Drähte zum Atmel bzw. auf dem Steckbrett.


Grüsse,

Michael
 
Hallo !

Weiter geht es mit einem 128 x 64 Pixel Grafik-Display.
Das Display hat einen KS0108 Chipsatz und dieser muss später im BASCOM-Code mit angegeben werden!

HIER ist der Link zum beschriebenen Display.

Hallo an alle,

hab endlich dieses Display zum Leben erweckt.

Wie bekomme ich nun eine eigene Grafik drauf?
Ich hab zum Test ein kleines Bild (mit Icon Editor) erstellt, 64*64 Pix, nur schwarz/weis und mit dem Konverter in bgf gespeichert. Kommt aber nur Müll dabei raus.

Gruß Siggi
 
Hallo Siggi!

Entschuldige bitte, dass ich deinen Beitrag heute erst gelesen habe! :adore:

Ich kann dir aber leider nur den Tipp geben, dass du dein kleines Bild in das BGF-Format wandelst und dann mit
Code:
$bgf "DEIN_BILD.bgf"
über eine Subroutine einbindest.

Probiere es doch einfach mal....


Gruß,
Cassio
 
Hallo !

Weiter geht es mit einem 128 x 64 Pixel Grafik-Display.
Das Display hat einen KS0108 Chipsatz und dieser muss später im BASCOM-Code mit angegeben werden!

HIER ist der Link zum beschriebenen Display.


Der Anschlussplan ist wieder unten angehängt !

attachment.php

Hallo Cassio, in deinem Schaltplan für das Grafikdisplay hat sich ein
Fehler eingeschlichen. Das 10K-Poti für den Kontrast wird nicht nach Masse sondern nach VDD angeschlossen. Sehe ich jedenfalls so im Datenblatt und ich werde das Display die Tage mit dieser Beschaltung testen.

Gruß Jürgen
 

Ü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)