- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 10

Thema: Mehrere Displays mit einem Atmel Mega 8 ansteuern

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2005
    Ort
    NRW
    Alter
    47
    Beiträge
    142

    Mehrere Displays mit einem Atmel Mega 8 ansteuern

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    habe gerade ein Problem mit der Ansteuerung von 4 LCD Displays über 4 bit. Alle Datenleitungen sind Parallel und die Enable einzeln auf Ports geschaltet.

    Wenn ich die displays mit Config lcdpin initialisieren will,kann ich ja nur mit E= einen Port angeben, ich benötige aber 4 um alle Displays zu initialisieren.
    Schalte ich alle Enableports vor der init auf 1 geht keines der displays
    Bitte um schnelle Hilfe.

    Danke euch

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Das geht ganz sicher nur wenn Du jedes Bit selbst bewegst ohne Bascom LCD -Code.Und mit Bit meine ich jedes Zeichen selbst zu Fuß übertragen.

    Gento

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2005
    Ort
    NRW
    Alter
    47
    Beiträge
    142
    hast du da einen quellcode für mich ?

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    34
    Beiträge
    485
    Hi,
    wenn ich das richtig verstehe sind die Datenleitungen die selben?
    Also das Wintek von Pollin hat ja auch 2 Controller und wird auch wie 2 LCDs angesteuert. Ich schick dir mal den Code wie ich das Display ansteuere:
    Code:
    Config Lcdpin = Pin , E = Portc.1 , E2 = Portc.2 , Rs = Portc.0 , Db4 = Portd.7 , Db5 = Portb.0 , Db6 = Portb.2 , Db7 = Portd.4
    Config Lcd = 40 * 4
    
    ___lcdno = 0
    Initlcd
    Cls
    Cursor Off
    
    ___lcdno = 1
    Initlcd
    Cls
    Cursor Off
    Das wäre die Initialisierung. Wenn du nun was ausgeben willst, musst du ___lcdno die Nummer des Displays übergeben. Also um auf dem Display welches an E2 hängt (Enable Leitung) auszugeben, musst du folgendes schreiben:

    Code:
    ___lcdno = 1
    Locate 1 , 1
    Lcd "Hallo"
    Hoffe du hast es verstanden.

    MfG

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2005
    Ort
    NRW
    Alter
    47
    Beiträge
    142
    an der Geschichte sind wir auch gerade dran.
    leider haben wir ja 4 Displays

    und mit 2en wills nicht funktionieren, da wir eine andere Initialisation benötigen. es sind DOG-M Displays

    hat jemand sonst noch eine idee?

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Wo liegt Dein Problem @mirco99 ?

    Kannst Du kein Datenblatt vom LCD lesen und das selbst umsetzen oder läßt Du lieber andere Deine Arbeit machen aus Kostengründen ?

    Gento

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2005
    Ort
    NRW
    Alter
    47
    Beiträge
    142
    Hi Gento,

    ich dachte das ist hier ein Forum, wo man gerne hilft!
    Ich bin Anfänger in der Programmierung. Wenn ein erfahrener Programmierer das hier liest und die Augen verdreht, da er es aus dem ff beherscht, dann soll er sich entweder die Zeit nehmen und es erklären oder gleich weiterklicken.
    Ich habe nun mal Privat ein größeres Projekt vor. Ob ich damit jemals was verdienen könnte, ist weit entfernt. Ich versuche es so zu entwickeln, als wäre es bereits ein kommerzielles Produkt. Und träumen darf doch noch jeder oder? Ich könnte mich über solche sprüche nur aufregen, aber est ist noch zu früh, da ich gestern sehr lange an diesem Problem gesessen habe und gefrustet für diesen Tag aufgegeben habe.


    Wenn ich nur ein Display mit der richtigen initialisierung anspreche mit

    Config Lcdpin = Pin , E = Portc.1 , Rs = Portc.0 , Db4 = Portd.7 , Db5 = Portb.0 , Db6 = Portb.2 , Db7 = Portd.4

    dann funktioniert es.

    An dem Beispiel was mir coco geschickt hat, kann ich 2 Displays betreiben, diese bleiben bei mir dann aber ohne funktion.

    jetzt bin ich gerade an der bit für bit programmierung,da ich 4 Displays ansprechen muss, leider noch ohne Erfolg.


    Die initialisierung habe ich aus einem anderen Beitrag umgeschrieben.

    $regfile = "m168def.dat"
    'ATmega168
    $crystal = 1000000 'Quarz: 1
    MHz
    Config Portc = Output
    'DOG 162, 4bit, 5 Volt
    'Portc.0 = D4
    'Portc.1 = D5
    'Portc.2 = D6
    'Portc.3 = D7
    'Portc.4 = E
    'Portc.5 = RS

    ' ---------------------- LCD DOG162 Init ---------------------
    Dog:
    Portc = &B00000011 : Gosub Enbl : Waitms 2 ' dummy Funktion Set
    Portc = &B00000011 : Gosub Enbl : Waitms 2 ' dummy Funktion Set
    Portc = &B00000011 : Gosub Enbl : Waitms 2 ' dummy Funktion Set
    Portc = &B00000010 : Gosub Enbl : Waitms 1 ' dummy Funktion Set
    Portc = &B00000010 : Gosub Enbl : Waitms 1 ' Funktion Set 1
    Portc = &B00001001 : Gosub Enbl : Waitms 1 ' Funktion Set 2
    Portc = &B00000001 : Gosub Enbl : Waitms 1 ' Bias 1
    Portc = &B00001100 : Gosub Enbl : Waitms 1 ' Bias 2
    Portc = &H5 : Gosub Enbl : Waitms 1 'Power/Icon/Contrast 1
    Portc = &H2 : Gosub Enbl : Waitms 1 'Power/Icon/Contrast 2
    Portc = &H6 : Gosub Enbl : Waitms 1 ' Follower control 1
    Portc = &H9 : Gosub Enbl : Waitms 1 ' Follower control 2
    Portc = &H7 : Gosub Enbl : Waitms 1 ' Contrast Set 1
    Portc = &H4 : Gosub Enbl : Waitms 1 ' Contrast Set 2
    Portc = &B00000000 : Gosub Enbl : Waitms 1 ' Display On 1
    Portc = &B00001111 : Gosub Enbl : Waitms 1 ' Display On 2
    Portc = &B00000000 : Gosub Enbl : Waitms 1 ' Clear Display 1
    Portc = &B00000001 : Gosub Enbl : Waitms 2 ' Clear Display 2
    Portc = &B00000000 : Gosub Enbl : Waitms 1 ' Entry Mode Set 1
    Portc = &B00000110 : Gosub Enbl : Waitms 1 ' Entry Mode Set 2
    Portc = &B00000000
    Return
    Enbl: ' Enable ein
    Set Portc.4
    Waitus 400 ' Enable aus
    Reset Portc.4
    Return

    Nach datenblatt wollte ich testweise ein Zeichen ausgeben.
    Bin gerade in der Firma und da habe ich den Quellcode nicht.
    Ich beachte RS , E , und R/W
    Aber irgendwas mache ich da noch falsch.

    Benutze diese allgemeine Anleitung:

    http://sprut.de/electronic/lcd/index.htm

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    ich hatte mal 10 8*2 LCD Displays an einem Mega 32 betrieben.
    Allerdings mit 8 Bit Ansteuerung. Code finde ich bestimmt nicht mehr.
    Hilft dir also erstmal nicht viel weiter
    Aber wenigstens kann ich dir sagen, daß es grundsätzlich geht, also probier' mal weiter, klappt bestimmt noch.
    Die LCD Befehle von Bascom bringen dir aber gar nix, wie schon gesagt wurde.
    Mußt das eben "zu Fuß" machen.
    Die DOG Displays übernehmen, soweit ich mich erinnere, ihre Einstellungen für Kontrast etc. nur nach einem Reset des Displays.
    Wenn du also nur ein neues Programm in den µC schickst, ohne das Display zu resetten, tut sich nix...

    Gruß
    Christopher

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    23.02.2006
    Beiträge
    40
    Hallo ich hab mal 2 displays angesteuert indem ich das Enable
    über 2 externe und-Gatter geschaltet habe und dann
    vor dem LCD-Befehl über 2 Controller-Ausgänge das jeweilige
    Display ausgewählt habe. Hat einwandfrei funktioniert.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2005
    Ort
    NRW
    Alter
    47
    Beiträge
    142
    Zitat Zitat von chr-mt
    Hi,

    Die DOG Displays übernehmen, soweit ich mich erinnere, ihre Einstellungen für Kontrast etc. nur nach einem Reset des Displays.
    Wenn du also nur ein neues Programm in den µC schickst, ohne das Display zu resetten, tut sich nix...

    Gruß
    Christopher
    Ja am timig des Res und E liegt es auf jeden Fall.
    Ich berichte euch, wenn es fortschritte gibt.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress