//------------------------------------------------------------------------------------------------- // // Procedura inicjalizacji kontrolera HD44780. // //------------------------------------------------------------------------------------------------- void LCD_Initalize(void) { unsigned char i; LCD_DB4_DIR |= LCD_DB4; // Konfiguracja kierunku pracy wyprowadze� 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; // _delay_ms(15); // oczekiwanie na ustalibizowanie si� napiecia zasilajacego LCD_RS_PORT &= ~LCD_RS; // wyzerowanie linii RS LCD_E_PORT &= ~LCD_E; // wyzerowanie linii E for(i = 0; i < 3; i++) // trzykrotne powt�rzenie bloku instrukcji { LCD_E_PORT |= LCD_E; // E = 1 _LCD_OutNibble(0x03); // tryb 8-bitowy LCD_E_PORT &= ~LCD_E; // E = 0 _delay_ms(5); // czekaj 5ms } LCD_E_PORT |= LCD_E; // E = 1 _LCD_OutNibble(0x02); // tryb 4-bitowy LCD_E_PORT &= ~LCD_E; // E = 0 _delay_ms(1); // czekaj 1ms LCD_WriteCommand(HD44780_FUNCTION_SET | HD44780_FONT5x7 | HD44780_TWO_LINE | HD44780_4_BIT); // interfejs 4-bity, 2-linie, znak 5x7 LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_OFF); // wy��czenie wyswietlacza LCD_WriteCommand(HD44780_CLEAR); // czyszczenie zawartos�i pamieci DDRAM _delay_ms(2); LCD_WriteCommand(HD44780_ENTRY_MODE | HD44780_EM_SHIFT_CURSOR | HD44780_EM_INCREMENT);// inkrementaja adresu i przesuwanie kursora LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_ON | HD44780_CURSOR_OFF | HD44780_CURSOR_NOBLINK); // w��cz LCD, bez kursora i mrugania }
//------------------------------------- // Display initialization //------------------------------------- void LCD_Initialize(void) { unsigned char i; 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; _delay_ms(15); LCD_RS_PORT &= ~LCD_RS; LCD_E_PORT &= ~LCD_E; for(i = 0; i < 3; i++) { LCD_E_PORT |= LCD_E; _LCD_OutNibble(0x03); LCD_E_PORT &= ~LCD_E; _delay_ms(5); } LCD_E_PORT |= LCD_E; _LCD_OutNibble(0x02); LCD_E_PORT &= ~LCD_E; _delay_ms(1); LCD_WriteCommand(HD44780_FUNCTION_SET | HD44780_FONT5x7 | HD44780_TWO_LINE | HD44780_4_BIT); LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_OFF); LCD_WriteCommand(HD44780_CLEAR); _delay_ms(2); LCD_WriteCommand(HD44780_ENTRY_MODE | HD44780_EM_SHIFT_CURSOR | HD44780_EM_INCREMENT); LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_ON | HD44780_CURSOR_OFF | HD44780_CURSOR_NOBLINK); }
//------------------------------------------------------------------------------------------------- // // Funkcja zapisu bajtu do wy�wietacza (bez rozr�nienia instrukcja/dane). // //------------------------------------------------------------------------------------------------- void _LCD_Write(unsigned char dataToWrite) { LCD_E_PORT |= LCD_E; _LCD_OutNibble(dataToWrite >> 4); LCD_E_PORT &= ~LCD_E; LCD_E_PORT |= LCD_E; _LCD_OutNibble(dataToWrite); LCD_E_PORT &= ~LCD_E; _delay_us(50); }
void _LCD_Write(unsigned char dataToWrite) { LCD_DB4_DIR |= LCD_DB4; LCD_DB5_DIR |= LCD_DB5; LCD_DB6_DIR |= LCD_DB6; LCD_DB7_DIR |= LCD_DB7; LCD_RW_PORT &= ~LCD_RW; LCD_E_PORT |= LCD_E; _LCD_OutNibble(dataToWrite >> 4); LCD_E_PORT &= ~LCD_E; LCD_E_PORT |= LCD_E; _LCD_OutNibble(dataToWrite); LCD_E_PORT &= ~LCD_E; while(LCD_ReadStatus()&0x80); }