Witam. Mam problem z wyświetlaczem 2x16 RC1602A Link , a właściwie z samą jego inicjalizacją.
Programuje w AVR GCC, procesor ATMega32 taktowany kwarcem 14,7456 MHz.
Połączenia - ok, kontrast ok, a na wyświetlaczu mam same kwadraciki (więc brak inicjalizacji).
Wyświetlacz ma pracować w trybie 4-bitowym.
Biblioteka której używam to biblioteka p. Radosława Kwietnia, zmodyfikowana jeśli chodzi o wyprowadzenia i w pliku *.c zmieniłem funkcję do inicjalizacji wg noty (link wyżej) -Wyświetlacz natomiast posiada driver ST7066U.
Proszę o pomoc
Programuje w AVR GCC, procesor ATMega32 taktowany kwarcem 14,7456 MHz.
Połączenia - ok, kontrast ok, a na wyświetlaczu mam same kwadraciki (więc brak inicjalizacji).
Wyświetlacz ma pracować w trybie 4-bitowym.
Biblioteka której używam to biblioteka p. Radosława Kwietnia, zmodyfikowana jeśli chodzi o wyprowadzenia i w pliku *.c zmieniłem funkcję do inicjalizacji wg noty (link wyżej) -Wyświetlacz natomiast posiada driver ST7066U.
void LCD_Initalize(void)
{
LCD_DB4_DIR |= LCD_DB4;
LCD_DB5_DIR |= LCD_DB5;
LCD_DB6_DIR |= LCD_DB6;
LCD_DB7_DIR |= LCD_DB7;
LCD_E_DIR |= LCD_E;
LCD_RS_DIR |= LCD_RS;
LCD_RW_DIR |= LCD_RW;
LCD_RS_PORT &= ~LCD_RS;
LCD_RW_PORT &= ~LCD_RW;
LCD_E_PORT &= ~LCD_E;
_delay_ms(5);
_delay_ms(5);
_delay_ms(5);
_delay_ms(5);
_delay_ms(5);
_delay_ms(5);
_delay_ms(5);
_delay_ms(5);
////////// function set //////////////////////////
LCD_RS_PORT &= ~LCD_RS;
LCD_RW_PORT &= ~LCD_RW;
LCD_DB7_PORT &= ~LCD_DB7;
LCD_DB6_PORT &= ~LCD_DB6;
LCD_DB5_PORT |= LCD_DB5;
LCD_DB4_PORT |= LCD_DB4;
LCD_E_PORT |= LCD_E;
_delay_ms(1);
LCD_E_PORT &= ~LCD_E;
_delay_us(40);
for(unsigned int i=0; i<2; i++)
{
LCD_RS_PORT &= ~LCD_RS;
LCD_RW_PORT &= ~LCD_RW;
LCD_DB7_PORT &= ~LCD_DB7;
LCD_DB6_PORT &= ~LCD_DB6;
LCD_DB5_PORT |= LCD_DB5;
LCD_DB4_PORT &= ~LCD_DB4;
LCD_E_PORT |= LCD_E;
_delay_ms(1);
LCD_E_PORT &= ~LCD_E;
_delay_us(40);
LCD_RS_PORT &= ~LCD_RS;
LCD_RW_PORT &= ~LCD_RW;
LCD_DB7_PORT |= ~LCD_DB7; //N
LCD_DB6_PORT |= ~LCD_DB6; //F
LCD_E_PORT |= LCD_E;
_delay_ms(1);
LCD_E_PORT &= ~LCD_E;
_delay_us(40);
}
/////////on off//////////////
LCD_RS_PORT &= ~LCD_RS;
LCD_RW_PORT &= ~LCD_RW;
LCD_DB7_PORT &= ~LCD_DB7;
LCD_DB6_PORT &= ~LCD_DB6;
LCD_DB5_PORT &= ~LCD_DB5;
LCD_DB4_PORT &= ~LCD_DB4;
LCD_E_PORT |= LCD_E;
_delay_ms(1);
LCD_E_PORT &= ~LCD_E;
_delay_us(40);
LCD_RS_PORT &= ~LCD_RS;
LCD_RW_PORT &= ~LCD_RW;
LCD_DB7_PORT |= LCD_DB7;
LCD_DB6_PORT |= LCD_DB6; //D
LCD_DB5_PORT &= ~LCD_DB5; //C
LCD_DB4_PORT &= ~LCD_DB4; //B
LCD_E_PORT |= LCD_E;
_delay_ms(1);
LCD_E_PORT &= ~LCD_E;
////////////////////////////////
_delay_us(40);
///////////////////////clear
LCD_RS_PORT &= ~LCD_RS;
LCD_RW_PORT &= ~LCD_RW;
LCD_DB7_PORT &= ~LCD_DB7;
LCD_DB6_PORT &= ~LCD_DB6;
LCD_DB5_PORT &= ~LCD_DB5;
LCD_DB4_PORT &= ~LCD_DB4;
LCD_E_PORT |= LCD_E;
_delay_ms(1);
LCD_E_PORT &= ~LCD_E;
_delay_us(40);
LCD_RS_PORT &= ~LCD_RS;
LCD_RW_PORT &= ~LCD_RW;
LCD_DB7_PORT &= ~LCD_DB7;
LCD_DB6_PORT &= ~LCD_DB6;
LCD_DB5_PORT &= ~LCD_DB5;
LCD_DB4_PORT |= LCD_DB4;
LCD_E_PORT |= LCD_E;
_delay_ms(1);
LCD_E_PORT &= ~LCD_E;
//////////////////////////////
_delay_ms(3);
/////////////////entry mode set
LCD_RS_PORT &= ~LCD_RS;
LCD_RW_PORT &= ~LCD_RW;
LCD_DB7_PORT &= ~LCD_DB7;
LCD_DB6_PORT &= ~LCD_DB6;
LCD_DB5_PORT &= ~LCD_DB5;
LCD_DB4_PORT &= ~LCD_DB4;
LCD_E_PORT |= LCD_E;
_delay_ms(1);
LCD_E_PORT &= ~LCD_E;
_delay_us(40);
LCD_RS_PORT &= ~LCD_RS;
LCD_RW_PORT &= ~LCD_RW;
LCD_DB7_PORT &= ~LCD_DB7;
LCD_DB6_PORT |= LCD_DB6;
LCD_DB5_PORT |= LCD_DB5; //ID
LCD_DB4_PORT |= LCD_DB4; //SH
LCD_E_PORT |= LCD_E;
_delay_ms(1);
LCD_E_PORT &= ~LCD_E;
}
Proszę o pomoc