Hallo alle zusammen!!! Ich möchte mit meinem ATMEGA8 ein 8x2 LCD ansteuern, fürs erste möchte ich nur mal nen einfach Text rausschreiben. Im Internet habe Ich bereits viele Sourcen gefunden da sind aber immer mehrere Datein und Ich weis nicht wie man die zusammen in ein Hex-File bekommt. Es wäre toll wenn ihr mir dabei helfen könntet. Poschi
Normalerweise muss man die alle dem aktiven Projekt hinzufügen und dann einfach kompilieren. Ob das bei Assembler auch so geht, weiß ich jetzt nicht.
Es ist AVR GCC... Naja Bascom wär auch eine Lösung aber mir wäre AVR GCC lieber da wir auch un der Schule damit arbeiten werden, aber zum Testen wäre das schon Toll. :) Poschi
Das mit dem hinzufügen und kompilieren funktioniert nicht, Ich bekomme immer folgenden Fehler. Poschi Build started 20.2.2010 at 15:13:32 avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT LCD.o -MF dep/LCD.o.d -c ../LCD.c avr-gcc -mmcu=atmega8 -Wl,-Map=LCD.map LCD.o -o LCD.elf c:/winavr-20090313/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr4/crt m8.o:(.init9+0x0): undefined reference to `main' make: *** [LCD.elf] Error 1 Build failed with 1 errors and 0 warnings...
Heinz peter Posch schrieb: > c:/winavr-20090313/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr4/crt m8.o:(.init9+0x0): > undefined reference to `main' davon kann ich dir ein Lied singen ;) schau mal links oben, ich nehme an du arbeitest z.b. mit AVR STudio, dort musst du alle .c source Files und alle Header Dateien .h nochmal extra angeben. Die Dateien nur zu Öffnen im Programm allein reicht nicht aus Gruß Christian
Einfach LCD-Ausgabe in BASCOM '======================================================= ' ' LCD-Ausgabe am Port D ' 4-Bit Mode,E=Portd.5, Rs=Portd.4, R/W=GND(fest) ' '======================================================= $regfile = "m8def.dat" $crystal = 10001666 'Mini-Atmega 4-Platine mit B-C-D-Port $hwstack = 32 'default use 32 for the hardware stack $swstack = 10 'default use 10 for the SW stack $framesize = 40 'default use 40 for the frame space Config Lcdbus = 4 Config Lcd = 16 * 2 'Lcd Initialisieren (geht auch mit 8 Char/Zeile) Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4 Cls 'clear Screen Lcd "Test" 'Ausgabe End
Also das mit Bascom hat nicht Funktioniert, aber Ich habe es bereits in C geschafft. Jedoch kommt bei mir immer nur ein schwarzer Balken am LCD sonst nichts. Hat jemand ein Programm Beispiel für mich, mit Pinbelegung?! Poschi
Es wäre schon hilfreich zu wissen welches Display du verwendest. Stichwort: Controller
Heinz peter Posch schrieb:
> Hat jemand ein Programm Beispiel für mich, mit Pinbelegung?!
Die Pinbelegung ist die, die du benutzt.
Die kann hier keiner wissen.
Ansonsten:
Im Tutorial gibt es LCD-Beispielcode
Heinz peter Posch schrieb:
> Jedoch kommt bei mir immer nur ein schwarzer Balken am LCD sonst nichts.
Wenn der schwarze Balken nur über einen Teil des LCDs ist, dann mal den
Kontrast verstellen.
> > Jedoch kommt bei mir immer nur ein schwarzer > > Balken am LCD sonst nichts. > Wenn der schwarze Balken nur über einen Teil des LCDs ist, > dann mal den Kontrast verstellen. Er hat ein 8x2. Meine Glaskugel sagt mir, dass die erste Zeile schwarz ist, was auf eine nicht geglückte Initialisierung hindeutet. Einen solchen schwarzen Balken erhält man übrigens, sobald das Display Strom hat. Ursachen warums nicht geht kann das viele haben. Bitte um mehr Informationen: - Displaytyp inkl. Displacontroller - AVR-Typ - Beschaltung des Displays (4bit-Modus? 8bit-Modus? Welcher pin wo dran?) - Quellcode. Mindestens die komplette Initialisierung und Ansteuerung. Und die Main-Funktion. Lieber wäre noch der komplette Quellcode
Display hat nen KS0066 Controller oder ähnlich (laut Datenblatt) http://www.produktinfo.conrad.com/datenblaetter/175000-199999/183369-da-01-en-LCD_Modul_8x2_Zeichen.pdf AVR: ATMega8-16PU Beschaltung im 4 Bit Modus (siehe code) Ist aus dem Tutorial 1 Vss GND 2 Vcc 5V 3 Vee GND oder Poti (siehe oben) 4 RS PD4 am AVR 5 RW GND 6 E PD5 am AVR 7 DB0 offen 8 DB1 offen 9 DB2 offen 10 DB3 offen 11 DB4 PD0 am AVR 12 DB5 PD1 am AVR 13 DB6 PD2 am AVR 14 DB7 PD3 am AVR
Hallo, sitze gerade an meinem neuen 2x16 LCD von Displaytech (LCD 162C) und bekomme einfach kein zeichen angezeigt. Irgendwas muss mit meiner Initialisierung nicht stimmen. Das LCD soll mit einem Atmega8 mit 8Mhz angesteuert werden. Die Ansteuerung soll im 4bit Modus erfolgen. DB4..DB7 des LCD hängen an PORTC0..3, RS an PORTC4, E an PORTC5 und R/W auf GND. Kontrasteinstellung über Poti. Die Verschaltung ist richtig, habe es mehrmals überprüft. Das LCD funktioniert auch bei Einschalten der Versorgung (erste Zeile zeigt ausgefüllte Kästchen an bei erhöhtem Kontrast). Es kann also nur am Code liegen - meiner Meinung nach an der Init, da wahrscheinlich nicht auf 4bit umgeschalten wird. Die Einstellung für 2 Zeilen wird ja auch nicht übernommen. Bin aber inzwischen mit meinem Latein am Ende. Habe schon großzügige Pausen eingeplant, hat aber nichts gebracht. Vielleicht findet ja jemand einen Fehler im Code. Gruß Christian
Hallo Christian, hier ist mal mein Init-Code. Der funktioniert bei mir tadellos auf einem Mega8 mit 3,686 Mhz. Die UP's für die Wartezeiten habe ich umbenannt, damit du deine Zeitschleifen anpassen kannst. Vielleicht hilft's ja... Dirk
Bin leider jetzt am Wochenende erst dazu gekommen, es nochmal zu probieren. Leider funktioniert es mit deiner Initialisierung auch nicht. Es wird absolut nichts angezeigt. Hatte das Display die Woche mit bei einem Bekannten, der sein LCD mit einem Arduino Nano ansteuert...dort hat es funktioniert, es ist also nicht defekt. Bin gerade dabei, mir die c++ - libraries des Arduino zur Initialisierung anzusehen. Vielleicht fällt mir ja noch etwas auf, was ich in meinem Code nicht berücksichtigt habe.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.