Liste der Anhänge anzeigen (Anzahl: 1)
LCD 4x20 KS0073 Hardwareproblem?
Hallo,
Bin noch ziehmlicher Neuling in sachen MCU. Habe vor zwei Jahren schonmal angefangen und mir ein Board gebaut. Jetzt blüht das Ganze neu auf.
Habe mir am We ein neues Board gefertigt mit LCD. Dieses versuche ich nun anzusteuern.
Nachdem ich mir etliche Themen hierzu im Internet durchgeselen habe und auch schon mehrere Initialisierungen versucht habe, wende ich mich mal an Euch.
Könntet Ihr euch mal die Hardware anschauen ob dort vll. ein Fehler ist?
Der Resetpin macht mir leichte sorgen? Dieser liegt bei mir immer auf +5V. Habe ich so gelesen, dass man das wohl so machen kann?!
Fakt ist. Das Display zeigt mir in allen 4 Zeilen die 20 Zeichen als Balken an und es passiert nichts. Nach dem Initialisieren, wo auch das Display gelöscht wird sollten die Balken ja schon mal weg sein, oder nicht?
Nunja, daher schließe ich auf Hardwarefehler.
MC ist ein mega 16 und das Display-Datenblatt ist auf http://www.lcd-module.de/deu/pdf/doma/dip204-4.pdf
Würde mich wirklich sehr über Hilfe freuen.
Gruß
Jannik
Liste der Anhänge anzeigen (Anzahl: 1)
Habe nun ein Poti eingelötet. Der Kontrast lässt sich doch gleich viel besser einstellen :)
Leider passiert immer noch rein garnichts.
Im Anhang habe ich auch noch mal den kompletten Schaltplan. Mit dem Reset meinte ich eigentlich den Reset von dem LCD, den ich auf +5V gelegt habe.
Die Hardware hat außenrum sicherlich noch kleine fehler, aber das wichtigste (denke ich zummindest) läuft erstmal.
Ich poste auch mal meine initialisierung. Mehr möchte ich ja erstmal garnicht haben. Nur ein kleiner blinkender Cursor - ein Lebenszeichen ;)
Code:
#include <avr/io.h>
#include <util/delay.h>
#define lcd_data PORTC
void lcd_init(void) {
DDRC = 0xff; //LCD-data als Ausgang
DDRD = 0xe0; //Port D als Ausgang für RS EN RW
PORTD = 0x00;
//lt. datenblatt bsp.
_delay_ms(20);
lcd_data = 0x34; //function set 8Bit, extension bit re = 1
_delay_us(39);
lcd_data = 0x09; //ext. function set 4zeilen modus
_delay_us(39);
lcd_data = 0x0f; //display on, cursor ein, cursor blinken
_delay_us(39);
lcd_data = 0x01; //clear display
_delay_us(1530);
lcd_data = 0x06; //entry mode set
}
void main (void) {
lcd_init();
}
Ich konnte im Datenblatt keine Hinweise zum setzen von dem Enable Bit finden? Wann muss dieser high, wann low? vor jedem Befehl?
Bei der Initialisierung habe ich mich ziehmlich strikt ans Datenblatt gehalten.
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich experimentiere derzeit ebenfalls mit meinem Display, allerdings scheint ein KS0070 drauf zu sein. Ich habe mal für meinen ATMega8 ein Ansteuerung über 8Bit in Assembler zusammengebastelt.
Du müsstest nur die Ports und die MC-Frequenz anpassen. Sollte aber kein Problem sein, Assembler ist ja leichter als C ;-)
Also einfach mal ausprobieren und Rückmeldung geben