Hallo zusammen, ich bin noch totaler Anfänger in Sachen LCD-Display am Mikrocontroller und bitte sehr um eure Hilfe, da ich einfach nicht weiter weiß. Für ein Projekt soll ein 2x40-LCD-Display (ANAG VISION AV4020) mit dem HD44780 kompatiblen KS0066-Controller auf einem Testboard von einem ATMega16 im 4bit-Betrieb angesteuert werden. Der ATMega läuft im Moment noch auf internem 1MHz-Takt, JTAG ist ausgeschaltet, programmiert wird über ISP mittels Atmel AVRISPmkII. Das Display ist wie folgt angeschlossen: LCD-DB7 an PORTC7 LCD-DB6 an PORTC6 LCD-DB5 an PORTC5 LCD-DB4 an PORTC4 LCD-DB3 an GND LCD-DB2 an GND LCD-DB1 an GND LCD-DB0 an GND LCD-RW an GND LCD-RS an PORTB2 LCD-EN an PORTB4 Nach Anlegen der Versorgungsspannung ist nur die erste Zeile schwarz. Die angehängten Quellcodes bringen im AVR Studio4.18 beim Kompilieren keine Fehler, jedoch ändert sich an der Displayanzeige nichts. Was kann das sein?? Ich bin über jede Hilfe sehr dankbar!!
Muss hier vllt. noch F_CPU eingetragen werden, also 1000000? lcd-routines.h:
1 | ////////////////////////////////////////////////////////////////////////////////
|
2 | // Hier die verwendete Taktfrequenz in Hz eintragen, wichtig!
|
3 | |
4 | #ifndef F_CPU
|
5 | #define F_CPU 3686400
|
6 | #endif
|
Ich sehe gerade:
1 | // Pinbelegung für das LCD, an verwendete Pins anpassen
|
2 | // Alle LCD Pins müssen an einem Port angeschlossen sein und die 4
|
3 | // Datenleitungen müssen auf aufeinanderfolgenden Pins liegen
|
Also musst du das LCD erstmal an einen PORT anschließen! Außerdem müssen dann je nach Belegung die DEFINES hier geändert werden
1 | // LCD DB4-DB7 <--> PORTD Bit PD0-PD3
|
2 | #define LCD_PORT PORTD
|
3 | #define LCD_DDR DDRD
|
4 | #define LCD_DB PD0
|
5 | |
6 | // LCD RS <--> PORTD Bit PD4 (RS: 1=Data, 0=Command)
|
7 | #define LCD_RS PD4
|
8 | |
9 | // LCD EN <--> PORTD Bit PD5 (EN: 1-Impuls für Daten)
|
10 | #define LCD_EN PD5
|
Hallo Christian F. ich habe in der lcd-routines.h den F_CPU-Wert auf 1000000 geändert, sowie die Portbelegungen an das Programm angepasst. Es tut sich jedoch weiterhin nichts am Display beim Programmieren des ATMega16, es werden auch keine Fehler ausgegeben. Was kann es noch sein???
Hallo Christian F. Ich musste lcdroutines.h nochmal ändern(Zeile 23: #define LCD_DB PC4).Bringt aber immer noch keine Anzeige.Wenn mir jemand helfen kann wäre ich sehr dankbar
Walter Klevenz schrieb:
> die Portbelegungen an das Programm angepasst.
Hast du nicht.
Denn mit dem Code ist diese Belegung
LCD-DB7 an PORTC7
LCD-DB6 an PORTC6
LCD-DB5 an PORTC5
LCD-DB4 an PORTC4
LCD-RS an PORTB2
LCD-EN an PORTB4
erst mal schlicht und einfach gesagt nicht möglich.
Dieser Code geht davon aus, dass alle LCD-Anschlüsse an EINEM Port
angeschlossen sind.
Lass dich nicht davon täuschen, dass du hier
#define LCD_RS PB2
PB2 geschrieben hast. De facto ist das 'B' in PB2 unwichtig und trägt
nichts bei. PB2 ist ein "anderer Name" für 2. Genauso wie es PC2 oder
PD2 oder PA2 auch ist.
Eine Benennung ala BIT2 unter Verzicht auf PB2, PA2, PD2 und wie sie
alle heißen, wäre besser gewesen, denn genau das steckt da dahinter und
nicht mehr. Dafür ist es jetzt aber schon zu spät, der Zug ist schon vor
langer Zeit abgefahren.
Der Port, an dem sich alles abspielt steckt hier drinnen
#define LCD_PORT PORTC
#define LCD_DDR DDRC
und zwar NUR hier drinnen.
Was du bräuchtest ist also eine Portdefinition, die nur für den RS bzw.
EN Pin gilt. Das kann man machen, ist aber im vorliegenden Code nicht
realisiert.
Vielen Dank Herr Buchegger, ich werde jetzt mal die Belegung von RS und EN auf der Platine ändern, dass alles auf PORTC liegt und danach im Programm wieder zurückändern. Ich sage dann Bescheid, was sich getan,hat. Aber nochmals danke!!
Nicht vergessen: Mega16 und Port C -> JTAGEN Fuse abschalten.
Hi Und D0..D3 vom Display nicht an GND. MfG Spess
Hallo Herr Buchegger, vielen Dank für Ihren Tipp, jetzt funktioniert das Display!!!
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.