Willkommen in unserer Community

Werde Teil unserer Community und registriere dich jetzt kostenlos ...

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

LCDs und GLCDs anschließen und ansteuern (BASCOM)

Dieses Thema im Forum "FAQ" wurde erstellt von Cassio, 4. April 2009.

  1. Cassio

    Cassio Moderator

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    4.023
    Zustimmungen:
    15
    Ort:
    Region Hannover
    Sprachen:
    BascomAVR
    Map
    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
    
     
  2. Cassio

    Cassio Moderator

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    4.023
    Zustimmungen:
    15
    Ort:
    Region Hannover
    Sprachen:
    BascomAVR
    Map
    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
     
  3. Cassio

    Cassio Moderator

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    4.023
    Zustimmungen:
    15
    Ort:
    Region Hannover
    Sprachen:
    BascomAVR
    Map
    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"
    
    
     
  4. dino03

    dino03 Moderator

    Registriert seit:
    27. Oktober 2008
    Beiträge:
    6.656
    Zustimmungen:
    11
    Sprachen:
    BascomAVR, Assembler
    Map
    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
     
  5. Cassio

    Cassio Moderator

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    4.023
    Zustimmungen:
    15
    Ort:
    Region Hannover
    Sprachen:
    BascomAVR
    Map
    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
     
  6. dino03

    dino03 Moderator

    Registriert seit:
    27. Oktober 2008
    Beiträge:
    6.656
    Zustimmungen:
    11
    Sprachen:
    BascomAVR, Assembler
    Map
    Hi Cassio,

    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
     
  7. Kani

    Kani Neues Mitglied

    Registriert seit:
    7. Januar 2009
    Beiträge:
    339
    Zustimmungen:
    0
    Ort:
    Spenge
    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.
     
  8. Nomis3000

    Nomis3000 Neues Mitglied

    Registriert seit:
    29. April 2008
    Beiträge:
    415
    Zustimmungen:
    0
    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.
     
  9. Kani

    Kani Neues Mitglied

    Registriert seit:
    7. Januar 2009
    Beiträge:
    339
    Zustimmungen:
    0
    Ort:
    Spenge
    Ne Nomis. Ich bin nicht verrückt :cool:
    (Nicht so wie die anderen:D:D - ;))

    Hab nur wegen der Hardware gefragt.
     
  10. Nomis3000

    Nomis3000 Neues Mitglied

    Registriert seit:
    29. April 2008
    Beiträge:
    415
    Zustimmungen:
    0
    Puh! Glück gehabt.:D
     
  11. Cassio

    Cassio Moderator

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    4.023
    Zustimmungen:
    15
    Ort:
    Region Hannover
    Sprachen:
    BascomAVR
    Map
    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:

  12. Cassio

    Cassio Moderator

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    4.023
    Zustimmungen:
    15
    Ort:
    Region Hannover
    Sprachen:
    BascomAVR
    Map
    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:

  13. Cassio

    Cassio Moderator

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    4.023
    Zustimmungen:
    15
    Ort:
    Region Hannover
    Sprachen:
    BascomAVR
    Map
    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.
     
  14. Cassio

    Cassio Moderator

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    4.023
    Zustimmungen:
    15
    Ort:
    Region Hannover
    Sprachen:
    BascomAVR
    Map
    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
     
  15. Grandpa

    Grandpa Aktives Mitglied

    Registriert seit:
    24. Juli 2008
    Beiträge:
    1.029
    Zustimmungen:
    1
    Ort:
    Hannover
    Sprachen:
    BascomAVR
    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
     
  16. dino03

    dino03 Moderator

    Registriert seit:
    27. Oktober 2008
    Beiträge:
    6.656
    Zustimmungen:
    11
    Sprachen:
    BascomAVR, Assembler
    Map
    Hallo,

    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
     
  17. Grandpa

    Grandpa Aktives Mitglied

    Registriert seit:
    24. Juli 2008
    Beiträge:
    1.029
    Zustimmungen:
    1
    Ort:
    Hannover
    Sprachen:
    BascomAVR
    Hi Dino,

    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
     
  18. adelinde

    adelinde Mitglied

    Registriert seit:
    21. Februar 2009
    Beiträge:
    56
    Zustimmungen:
    2
    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
     
  19. Cassio

    Cassio Moderator

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    4.023
    Zustimmungen:
    15
    Ort:
    Region Hannover
    Sprachen:
    BascomAVR
    Map
    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
     
  20. Jürgen

    Jürgen Neues Mitglied

    Registriert seit:
    18. Juni 2008
    Beiträge:
    10
    Zustimmungen:
    0
    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
     

Diese Seite empfehlen

  • Über uns

    Unsere immer weiter wachsende Community beschäftigt sich mit Themenbereichen rund um Mikrocontroller- und Kleinstrechnersysteme. Neben den Themen Design von Schaltungen, Layout und Software, beschäftigen wir uns auch mit der herkömmlichen Elektrotechnik.

    Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  • Coffee Time

    Unser makerconnect-Team arbeitet hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und unser eigener makerconnekt-Server regelmäßig gewartet wird. Wir nehmen das Thema Datensicherung und Datenschutz sehr ernst und sind hier sehr aktiv, auch sorgen wir uns darum, dass alles Drumherum stimmt!

    Dir gefällt das Forum und die Arbeit unseres Teams und du möchtest es unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft, unser Team freut sich auch über eine Spende für die Kaffeekasse :-)
    Vielen Dank!
    Dein makerconnect-Team

    Spende uns! (Paypal)