/* Initialisation LCD */
delay_01ms(80); //Delay 8 ms
put_command_lcd(0x03);
delay_01ms(10); //Delay 1 ms
put_command_lcd(0x03);
delay_01ms(1); //Delay 0,1 ms
put_command_lcd(0x03);
delay_01ms(40); //Delay 4 ms
put_command_lcd(0x02);
delay_01ms(1); //Delay 0,1 ms
put_command_lcd(0x28); //Set 4-bit mode, set 2-line & 5*8 dots
put_command_lcd(0x0c); //Display on
put_command_lcd(0x06); //Entry mode set
void put_address_lcd(BYTE address) {
address|=0x80;
LCD_DATA_PORT=address; //High nibble
LCD_COM_PORT=LCD_COM_IN_PORT & ~RS_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT | E_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT & ~E_CODE;
LCD_DATA_PORT=address << 4; //Low nibble
LCD_COM_PORT=LCD_COM_IN_PORT | E_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT & ~E_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT | RS_CODE;
}
void put_symbol_lcd(BYTE symbol) {
symbol=char_to_code(symbol);
LCD_DATA_PORT=symbol; //High nibble
LCD_COM_PORT=LCD_COM_IN_PORT | RS_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT | E_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT & ~E_CODE;
LCD_DATA_PORT=symbol << 4; //Low nibble
LCD_COM_PORT=LCD_COM_IN_PORT | E_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT & ~E_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT | RS_CODE;
}
void put_spec_symbol_lcd(BYTE symbol) {
LCD_DATA_PORT=symbol; //High nibble
LCD_COM_PORT=LCD_COM_IN_PORT | RS_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT | E_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT & ~E_CODE;
LCD_DATA_PORT=symbol << 4; //Low nibble
LCD_COM_PORT=LCD_COM_IN_PORT | E_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT & ~E_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT | RS_CODE;
}
void put_command_lcd(BYTE command) {
LCD_DATA_PORT=command; //High nibble
LCD_COM_PORT=LCD_COM_IN_PORT & ~RS_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT | E_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT & ~E_CODE;
LCD_DATA_PORT=command << 4; //Low nibble
LCD_COM_PORT=LCD_COM_IN_PORT | E_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT & ~E_CODE;
LCD_COM_PORT=LCD_COM_IN_PORT | RS_CODE;
}