PIC16f877-DS18b20-LCDDisplayFunctions

by Marwen Maghrebi
// Initialize LCD for 4-bit mode
void lcd_initialize(void) {
    lcd_command(0x02); // Return cursor to home position
    lcd_command(0x28); // Set 4-bit mode, 2-line display, 5x8 font
    lcd_command(0x06); // Set entry mode with auto-increment
    lcd_command(0x0C); // Display ON, cursor OFF
    lcd_command(0x01); // Clear display
    __delay_ms(2);     // Short delay for clear screen command
}

// Send data to LCD
void lcd_data(unsigned char data) {
    RS = 1; RW = 0;       // Set to data mode and write
    PORTD = (data & 0xF0); // Send upper nibble
    EN = 1;
    __delay_ms(2);
    EN = 0;
    
    PORTD = ((data << 4) & 0xF0); // Send lower nibble
    EN = 1;
    __delay_ms(2);
    EN = 0;
}

// Send string to LCD
void lcd_string(const char *str, unsigned char len) {
    for(unsigned char i = 0; i < len; i++) {
        lcd_data(str[i]);
    }
}

// Send command to LCD
void lcd_command(unsigned char cmd) {
    RS = 0; RW = 0;       // Set to command mode and write
    PORTD = (cmd & 0xF0); // Send upper nibble
    EN = 1;
    __delay_ms(2);
    EN = 0;
    
    PORTD = ((cmd << 4) & 0xF0); // Send lower nibble
    EN = 1;
    __delay_ms(2);
    EN = 0;
}
Are you sure want to unlock this post?
Unlock left : 0
Are you sure want to cancel subscription?
-
00:00
00:00
Update Required Flash plugin
-
00:00
00:00