- Labornetzteil AliExpress         
Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 44

Thema: LCD- Ansteuerung mit ATMEGA48 funzt nicht :(

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    02.11.2008
    Beiträge
    57

    LCD- Ansteuerung mit ATMEGA48 funzt nicht :(

    Anzeige

    Powerstation Test
    Hallo Leute!

    Ich habe ein kleines Problem...mein LCD will nicht an meinem mega48.
    Es handelt sich dabei um ein LM16A211 LCD mit einem HD44780UA Controller.
    Das Programm wurde im BASCOM- AVR geschrieben und compiliert, anschliessend mit PonyProg übertragen. Ich habe Kontroll- Led's programmiert und angeschlossen, diese funktionieren. Also an der Uebertragung oder den Fuse- Bit's kann es nicht liegen.
    Auch an den Datenleitungen zum LCD habe ich nach mehreren Leerläufen LED's angeschlossen, welche auch nach dem Schema des Simulators, in dem alles funtioniert, leuchten.
    Am LCD sehe ich nur einen Cursor blinken im ersten Feld der oberen Linie. Eigentlich sollte da aber etwas stehen, was leider nicht der Fall ist.
    Ich betreibe das LCD im Pin- Modus, 4- Bitig also.
    Das Programm sieht so aus:

    Code:
    $regfile = "m48def.dat"
    $crystal = 4000000
    $baud = 9600
    
    Config Portc = Output                                       'PORTC als Ausgang definieren
    Config Portb = Output                                       'PORTB als Ausgang definieren
    
    
    Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1
    Config Lcd = 16 * 2                                         'LCD Konfigurieren
    
    
    Cls                                                         'Löscht das LCD
    Home                                                        'Geht zum Beginn der Zeile
    Upperline                                                   'Obere Linie
    Lcd "Hello World!"                                          'Schreibe "" auf das LCD
    Waitms 1000                                                      'Warte eine Sekunde
    
    
    sbi Portb, 1                                                'Ist das Programm  ausgeführt, zeigt diese LED dies an
    End
    Durch das Einsetzen in diesem Beitrag hat es das Vormat geändert, jedoch habe ich dies im Programm Korrekt - keine Syntaxfehler oder sonstige Fehler.
    Könnt ihr mir sagen was hier nicht gehen soll??

    Mit freundlichen Grüssen
    Andi

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    benutze doch die "[ c o d e ] dein code [ / c o d e ]" tags, lass einfach nur die leerzeichen weg dann bleibt der Text auch im Format auch wie im editor

    "C", im BASCOM- AVR
    wie bitte? das hab ich nicht ganz verstanden Bascom und C sind 2 unterschiedliche sachen oder meinst was anderes ?

    was für eine bibliothek hast du benutzt ? dass der cursor blinkt ist schonmal ein gutes zeichen, hast du die timings eingehalten beim initialisieren ? dem muss man doch 2-3 mal das konfigurationsbyte zusenden damit das LCD richtig funktioniert und dabei die timings möglichst genau einhalten

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    20.06.2007
    Ort
    ja
    Beiträge
    53
    Hallo,

    du hast den R/W auf Masse gelegt?

    An deinem Programm ist mir jetzt spontan nicht so ganz viel Falsches aufgefallen.
    Probier mal folgendes: Füge nach "Config Lcd = 16 * 2 'LCD Konfigurieren"
    ein "waitms 200", also eine Verzögerung ein. Eventuell braucht die Anzeige einige Millisekunden zum Initialisieren. Schaden kann es jedenfalls nichts

    Gruß
    Magic

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    02.11.2008
    Beiträge
    57
    Also.. das Programm wurde in BASCOM- AVR geschrieben....ein IDE von Atmel zur Verfügung gestellt. Und wenn ich nicht alles falsch verstanden habe, schreibt man in diesem Programm mit der Sprache "C", also kein Assembler oder sonst was.

    Hier ist nochmal der Quelltext:
    Code:
    $regfile = "m48def.dat"
    $crystal = 4000000
    $baud = 9600
    
    
    Config Portc = Output                                       'PORTC als Ausgang definieren
    Config Portb = Output                                       'PORTB als Ausgang definieren
    
    
    Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1
    Config Lcd = 16 * 2                                         'LCD Konfigurieren
    Waitms 1000
    
    Cls                                                         'Löscht das LCD
    Home                                                        'Geht zum Beginn der Zeile
    Upperline                                                   'Obere Linie
    Lcd "Hello World!"                                          'Schreibe "" auf das LCD
    Waitms 1000                                                 'Warte eine Sekunde
    
    
    sbi portb, 1                                                'Ist das Programm ausgeführt, zeigt diese lED dies an
    End
    Also alles was ich benutze an Bibliotheken und sonstigen Include- files steht im Quelltext.
    Das ist lediglich diese Datei $regfile = "m48def.dat" und die ist in der Bibliothek im Programm zu finden. Also ein Produkt von Atmel.

    Ich hab jetzt diese 200ms auf 1000ms gerundet, kann ja nicht schaden und unterhalb nochmal ne Sekunde warten eingefügt, das Kontroll- LED leuchtet mir sonst zu schnell Der Cursor blinkt noch immer genau gleich wie vorhin schon. R/W ist auf Masse, das stimmt auch. Der Kontrastabgleich mit einem Poti geht auch wunderbar, nur meinText fehlt mir noch immer. Und soll ich die Datenleitungen welche ich nicht brauche (Db0- Db3) auf Masse legen?

    MfG

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    bascom ist ein "basic"-derivat, C schreibt sich erheblich anders ^^
    ich seh grad Bascom hat ja auch schon funktionen für LCD integriert ... mh kann cih net viel sagen ich programmier alles in c meist ohne bibliothek wo bleibt sonst der lerneffekt ^^

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    02.11.2008
    Beiträge
    57
    hehe ja ich hab mir das Buch von Helmut Erlenkötter "C, Programmieren von Anfang an" gekauft und üb mich n wenig darin.... ich habe vorhin PIC's mit Assembler programmiert und wollte einfach mal die AVR's ausprobieren, welche n paar Vorzüge gegenüber den PIC's haben

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    02.11.2008
    Beiträge
    57
    Ich habe auch schon anderee Befehle ausprobiert, nur um einmal ein Text sehen zu können.

    Code:
    $regfile = "m48def.dat"
    $crystal = 4000000
    $baud = 9600
    
    
    Config Portc = Output                                       'PORTC als Ausgang definieren
    Config Portb = Output                                       'PORTB als Ausgang definieren
    
    Waitms 1000
    Config Lcdpin = Pin , Db4 = Pinc.2 , Db5 = Pinc.3 , Db6 = Pinc.4 , Db7 = Pinc.5 , E = Pinc.0 , Rs = Pinc.1
    Waitms 200
    Config Lcd = 16 * 2                                         'LCD Konfigurieren
    Waitms 1000
    
    Initlcd
    
    Cls                                                         'Löscht das LCD
    Home                                                        'Geht zum Beginn der Zeile
    Upperline
    Display On                                                  'Obere Linie
    Print "Hello World!"
    Waitms 1000
    Cls
    Lcd "hallooo"
                                               'Schreibe "" auf das LCD
    Waitms 1000
    
    Display Off                                                 'Warte eine Sekunde
    
    
    sbi portb, 1                                                'Ist das Programm ausgeführt, zeigt diese lED dies an
    End
    ...alles um sonst, nichts geht ausser diesem Cursor der ständig an erster Stelle blinkt.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.01.2007
    Ort
    westliches Pannonien
    Beiträge
    123
    Hallo!

    Schau mal in der Bascom Hilfe unter "Config Lcd" wie da z.B.
    der "Home"-Befehl angewendet wird.

    Mfg
    caargoo

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    02.11.2008
    Beiträge
    57
    Ja das habe ich mal nachgeschaut...es geht auf keine Weise...ich muss dazu sagen dass ich das LCD mal verdreht rum betrieben habe..also Pin1 = Pin14 und andersrum.
    Kann es sein dass es dadurch zerstört wurde?
    Aber der Cursor Trotzdem blinkt?

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    36
    Beiträge
    235
    Meines Erachtens feht da noch die Fontdefinition oder ist das nur bei LCDAT nötig?

    Code:
    $regfile = "m48def.dat" 
    $crystal = 4000000 
    $baud = 9600 
    
    
    Config Portc = Output                                       'PORTC als Ausgang definieren 
    Config Portb = Output                                       'PORTB als Ausgang definieren 
    
    Waitms 1000 
    Config Lcdpin = Pin , Db4 = Pinc.2 , Db5 = Pinc.3 , Db6 = Pinc.4 , Db7 = Pinc.5 , E = Pinc.0 , Rs = Pinc.1 
    Waitms 200 
    Config Lcd = 16 * 2                                         'LCD Konfigurieren 
    Waitms 1000 
    
    Setfont Font8x8
    
    Initlcd 
    
    Cls                                                         'Löscht das LCD 
    Home                                                        'Geht zum Beginn der Zeile 
    Upperline 
    Display On                                                  'Obere Linie 
    Print "Hello World!" 
    Waitms 1000 
    Cls 
    Lcd "hallooo" 
                                               'Schreibe "" auf das LCD 
    Waitms 1000 
    
    Display Off                                                 'Warte eine Sekunde 
    
    
    sbi portb, 1                                                'Ist das Programm ausgeführt, zeigt diese lED dies an 
    End 
    
    $include "Font8x8.font"
    Elektronische Bauteile funktionieren mit Rauch. Lässt man den Rauch raus, sind sie kaputt.

Seite 1 von 5 123 ... LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress