From 7b66af9006b3d99cb9b737b04a261f4ddc72d286 Mon Sep 17 00:00:00 2001 From: "Christian L. V. Madsen" Date: Sat, 17 Aug 2024 13:42:12 +0200 Subject: [PATCH] test --- lcd_hd44780.c | 40 ++++++++++++++++++++++++++++++++++------ lcd_hd44780.h | 8 ++++---- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/lcd_hd44780.c b/lcd_hd44780.c index 8183196..c8b3f6c 100644 --- a/lcd_hd44780.c +++ b/lcd_hd44780.c @@ -20,7 +20,7 @@ void lcd_hd44780_printf(lcd_hd44780_t *inst, char *string){ }*/ -static void lcd_writeCmd_disp(lcd_hd44780_t *inst, hd44780_cmd_t cmd, hd44780_setGet_t getSet){ +static void lcd_writeCmd_disp(cm_lcd_hd44780_t *inst, hd44780_cmd_t cmd, hd44780_setGet_t getSet){ inst->gpio_data.data_bus = cmd; @@ -48,7 +48,7 @@ static void lcd_writeCmd_disp(lcd_hd44780_t *inst, hd44780_cmd_t cmd, hd44780_se } -void lcd_hd44780_initDisp(lcd_hd44780_t *inst){ +void lcd_hd44780_initDisp_8bit(cm_lcd_hd44780_t *inst){ // Wait for more than 15ms after VCC rise.. // Delay(15) @@ -67,14 +67,29 @@ void lcd_hd44780_initDisp(lcd_hd44780_t *inst){ } -void lcd_hd44780_regGpioEvt(lcd_hd44780_t *inst, setGet_Gpio_Event_fpt getGpioEvt_fpt){ +void lcd_hd44780_initDisp_4bit(cm_lcd_hd44780_t *inst){ + + // Wait for more than 15ms after VCC rise.. + // Delay(15) + lcd_writeCmd_disp(inst, LCD_HD44780_FUNCTION_SET >> 4,LCD_HD44780_SET); + + // Delay(4) + + lcd_writeCmd_disp(inst, LCD_HD44780_FUNCTION_SET >> 4,LCD_HD44780_SET); + + // Delay(4) + + lcd_writeCmd_disp(inst, LCD_HD44780_FUNCTION_SET >> 4,LCD_HD44780_SET); +} + +void lcd_hd44780_regGpioEvt(cm_lcd_hd44780_t *inst, setGet_Gpio_Event_fpt getGpioEvt_fpt){ //if(inst == NULL)return; inst->setGetGpio_event = getGpioEvt_fpt; } -void lcd_hd44780_regWaitEvt(lcd_hd44780_t *inst, wait_ms_Event_fpt waitEvt_fpt){ +void lcd_hd44780_regWaitEvt(cm_lcd_hd44780_t *inst, wait_ms_Event_fpt waitEvt_fpt){ //if(inst == NULL)return; @@ -82,7 +97,7 @@ void lcd_hd44780_regWaitEvt(lcd_hd44780_t *inst, wait_ms_Event_fpt waitEvt_fpt){ } -void lcd_hd44780_init(lcd_hd44780_t *inst, lcd_hd44780_bitmode bit_mode){ +void lcd_hd44780_init(cm_lcd_hd44780_t *inst, lcd_hd44780_bitmode bit_mode){ //inst->gpio_data = 0x00; inst->bit_mode = bit_mode; @@ -94,10 +109,23 @@ void lcd_hd44780_init(lcd_hd44780_t *inst, lcd_hd44780_bitmode bit_mode){ inst->setGetGpio_event(&(inst->gpio_data), 1);*/ - lcd_hd44780_initDisp(inst); + //lcd_hd44780_initDisp(inst); //lcd_writeCmd_disp(inst,LCD_HD44780_CLEAR_DISP,LCD_HD44780_SET); //lcd_writeCmd_disp(inst,LCD_HD44780_DISP_ONOFF_CTL,LCD_HD44780_SET); + switch (inst->bit_mode) { + case LCD_BITMODE_8BIT: + lcd_hd44780_initDisp_8bit(inst); + break; + + case LCD_BITMODE_4BIT: + break; + + + default: + break; + } + return; } diff --git a/lcd_hd44780.h b/lcd_hd44780.h index a1c8ab1..362af42 100644 --- a/lcd_hd44780.h +++ b/lcd_hd44780.h @@ -62,11 +62,11 @@ typedef struct{ hd44780_gpioset_t gpio_data; -}lcd_hd44780_t; +}cm_lcd_hd44780_t; -void lcd_hd44780_init(lcd_hd44780_t *inst,lcd_hd44780_bitmode bit_mode); -void lcd_hd44780_regGpioEvt(lcd_hd44780_t *inst, setGet_Gpio_Event_fpt getGpioEvt_fpt); -void lcd_hd44780_regWaitEvt(lcd_hd44780_t *inst, wait_ms_Event_fpt waitEvt_fpt); +void lcd_hd44780_init(cm_lcd_hd44780_t *inst,lcd_hd44780_bitmode bit_mode); +void lcd_hd44780_regGpioEvt(cm_lcd_hd44780_t *inst, setGet_Gpio_Event_fpt getGpioEvt_fpt); +void lcd_hd44780_regWaitEvt(cm_lcd_hd44780_t *inst, wait_ms_Event_fpt waitEvt_fpt); #endif /*LCD_HD44780_H_*/