16 x 4 LCD lässt sich nicht initialisieren
Posted: Thu Dec 06, 2012 11:08 am
Hi Leute,
ich nutze V5 für AVR und habe ein Problem ein 16x4 LCD mit HD44780 Kontroller zu initialisieren.
Das Display ist von Reichelt, ein LCD 164A BL .
Ich habe ein Projekt mit einem Atmega32 mit einem 16x4 LCD angelegt.
Die Simulation funktioniert super, aber in der Schaltung sind die Zeile 1 und 3 komplett ausgefüllt und die Zeilen 2 und 4 bleiben komplett leer.
In der originalen Schaltung verwende ich einen Atmega32 TQFP 44Pin bei 16 MHz.
Aber mit der 40 Pin DIP Variante auf einem Steckbrett mit einem 2. Display funktionierts genauso (nicht) - die gleichen Sympthome.
Laut google ist das Display wohl nicht korrekt initialisiert.
Wie kann ich das ändern?
Habe leider nur begrenzt Ahnung vom programmieren (deshalb nutze ich ja Flowcode).
Meine Vermutung ist, dass der Abschnitt in der FC5_AVC_LCDDisplay.c falsch ist.
Da steht
...
void Start()
{
/*Macro_Start_Start*/
FC_CAL_Bit_Low_DDR(%a_PORT0, %a_TRIS0, %a_BIT0);
FC_CAL_Bit_Low_DDR(%a_PORT1, %a_TRIS1, %a_BIT1);
FC_CAL_Bit_Low_DDR(%a_PORT2, %a_TRIS2, %a_BIT2);
FC_CAL_Bit_Low_DDR(%a_PORT3, %a_TRIS3, %a_BIT3);
FC_CAL_Bit_Low_DDR(%a_PORT4, %a_TRIS4, %a_RS);
FC_CAL_Bit_Low_DDR(%a_PORT5, %a_TRIS5, %a_E);
Wdt_Delay_Ms(12);
RawSend(0x33, 0);
Wdt_Delay_Ms(2);
RawSend(0x33, 0);
Wdt_Delay_Ms(2);
RawSend(0x32, 0);
Wdt_Delay_Ms(2);
RawSend(0x2c, 0);
Wdt_Delay_Ms(2);
RawSend(0x06, 0);
Wdt_Delay_Ms(2);
RawSend(0x0c, 0);
Wdt_Delay_Ms(2);
//clear the display
RawSend(0x01, 0);
Wdt_Delay_Ms(2);
RawSend(0x02, 0);
Wdt_Delay_Ms(2);
/*Macro_Start_End*/
}
...
Ich denke, dass die Werte nicht für mein Display passen.
Merlin1303
ich nutze V5 für AVR und habe ein Problem ein 16x4 LCD mit HD44780 Kontroller zu initialisieren.
Das Display ist von Reichelt, ein LCD 164A BL .
Ich habe ein Projekt mit einem Atmega32 mit einem 16x4 LCD angelegt.
Die Simulation funktioniert super, aber in der Schaltung sind die Zeile 1 und 3 komplett ausgefüllt und die Zeilen 2 und 4 bleiben komplett leer.
In der originalen Schaltung verwende ich einen Atmega32 TQFP 44Pin bei 16 MHz.
Aber mit der 40 Pin DIP Variante auf einem Steckbrett mit einem 2. Display funktionierts genauso (nicht) - die gleichen Sympthome.
Laut google ist das Display wohl nicht korrekt initialisiert.
Wie kann ich das ändern?
Habe leider nur begrenzt Ahnung vom programmieren (deshalb nutze ich ja Flowcode).
Meine Vermutung ist, dass der Abschnitt in der FC5_AVC_LCDDisplay.c falsch ist.
Da steht
...
void Start()
{
/*Macro_Start_Start*/
FC_CAL_Bit_Low_DDR(%a_PORT0, %a_TRIS0, %a_BIT0);
FC_CAL_Bit_Low_DDR(%a_PORT1, %a_TRIS1, %a_BIT1);
FC_CAL_Bit_Low_DDR(%a_PORT2, %a_TRIS2, %a_BIT2);
FC_CAL_Bit_Low_DDR(%a_PORT3, %a_TRIS3, %a_BIT3);
FC_CAL_Bit_Low_DDR(%a_PORT4, %a_TRIS4, %a_RS);
FC_CAL_Bit_Low_DDR(%a_PORT5, %a_TRIS5, %a_E);
Wdt_Delay_Ms(12);
RawSend(0x33, 0);
Wdt_Delay_Ms(2);
RawSend(0x33, 0);
Wdt_Delay_Ms(2);
RawSend(0x32, 0);
Wdt_Delay_Ms(2);
RawSend(0x2c, 0);
Wdt_Delay_Ms(2);
RawSend(0x06, 0);
Wdt_Delay_Ms(2);
RawSend(0x0c, 0);
Wdt_Delay_Ms(2);
//clear the display
RawSend(0x01, 0);
Wdt_Delay_Ms(2);
RawSend(0x02, 0);
Wdt_Delay_Ms(2);
/*Macro_Start_End*/
}
...
Ich denke, dass die Werte nicht für mein Display passen.
Merlin1303