Forum: Mikrocontroller und Digitale Elektronik Atmega8 und LCD


von Heinz peter P. (poschi8)


Lesenswert?

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

von Bernadette (Gast)


Lesenswert?

welche Sprache ?

BASCOM kann ich dir anbieten.

B.

von Dussel (Gast)


Lesenswert?

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.

von Heinz peter P. (poschi8)


Lesenswert?

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

von Heinz peter P. (poschi8)


Lesenswert?

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

von C. S. (Gast)


Lesenswert?

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

von Heinz peter P. (poschi8)


Lesenswert?

Danke für den Hinweis, jetzt hats geklappt!!! freu

Poschi

von Bernadette (Gast)


Lesenswert?

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

von Heinz peter P. (poschi8)


Lesenswert?

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

von pacer (Gast)


Lesenswert?

Es wäre schon hilfreich zu wissen welches Display du verwendest.
Stichwort: Controller

von Karl H. (kbuchegg)


Lesenswert?

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

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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.

von Phantomix X. (phantomix)


Lesenswert?

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

von Heinz peter P. (poschi8)


Angehängte Dateien:

Lesenswert?

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

von Christian D. (schlenz)


Angehängte Dateien:

Lesenswert?

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

von Dirk M. (dmd)


Angehängte Dateien:

Lesenswert?

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

von Christian D. (schlenz)


Lesenswert?

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
Noch kein Account? Hier anmelden.