ESP32 LCD Driver v1.0
LCD Driver Documenation
Loading...
Searching...
No Matches
ESP32 LCD Driver


esp-idf buildDocumentation pages-build-deploymentGitHub Page

Description

This repository contains a custom lcd driver for 16x02 lcd. The driver has the most common function calls that are use for LCDs. ESP32 have limited GPIO pins, therefore 4-bit mode was use as it requires a total of 6 GPIO pins. However, there are two configurations for the driver: default and custom. The default configurations uses this pinout while the custom allows the user to select whichever GPIO are avaiable simple by using lcdCtor().

ESP32 Pinout

+-----------------------+
| O | USB | O |
| ------- |
3V3 | [ ] [ ] | VIN
GND | [ ] [ ] | GND
Touch3 / HSPI_CS0 / ADC2_3 / GPIO15 | [ ] [ ] | GPIO13 / ADC2_4 / HSPI_ID / Touch4
CS / Touch2 / HSPI_WP / ADC2_2 / GPIO2 | [ ] [ ] | GPIO12 / ADC2_5 / HSPI_Q / Touch5
Touch0 / HSPI_HD / ADC2_0 / GPIO4 | [ ] [ ] | GPIO14 / ADC2_6 / HSPI_CLK / Touch6
U2_RXD / GPIO16 | [ ] [ ] | GPIO27 / ADC2_7 / Touch7
U2_TXD / GPIO17 | [ ] [ ] | GPIO26 / ADC2_9 / DAC2
V_SPI_CS0 / GPIO5 | [ ] ___________ [ ] | GPIO25 / ADC2_8 / DAC1
SCK / V_SPI_CLK / GPIO18 | [ ] | | [ ] | GPIO33 / ADC1_5 / Touch8 / XTAL32
U0_CTS / MSIO / V_SPI_Q / GPIO19 | [ ] | | [ ] | GPIO32 / ADC1_4 / Touch9 / XTAL32
SDA / V_SPI_HD / GPIO21 | [ ] | | [ ] | GPIO35 / ADC1_7
CLK2 / U0_RXD / GPIO3 | [ ] | | [ ] | GPIO34 / ADC1_6
CLK3 / U0_TXD / GPIO1 | [ ] | | [ ] | GPIO39 / ADC1_3 / SensVN
SCL / U0_RTS / V_SPI_WP / GPIO22 | [ ] | | [ ] | GPIO36 / ADC1_0 / SensVP
MOSI / V_SPI_WP / GPIO23 | [ ] |___________| [ ] | EN
| |
| | | ____ ____ | |
| | | | | | | | |
| |__|__| |__| |__| |
| O O |
+-----------------------+

LCD 16x02 Pinout

The following pinout is the default configuration of the ESP-LCD driver. However, the driver is customizable to allow users to change GPIO pins if necessary.

ESP32 Pins LCD Pin Description
GND, 10k Potentiometer Output (V±) 1 GND
VCC, 10k Potentiometer Output (V±) 2 VCC
10k Potentiometer Output (Vo) 3 Contrast
GPIO23 4 RS (Register Select): 0–Command, 1-Data
GND 5 R/W (Read/Write): 0 – Write, 1 - Read
GPIO22 6 Clock Enable
NC 7 Data 0
NC 8 Data 1
NC 9 Data 2
NC 10 Data 3
GPIO19 11 Data 4
GPIO18 12 Data 5
GPIO17 13 Data 6
GPIO16 14 Data 7
100Ω to VCC 15 Backlight Anode (+)
GND 16 Backlight Cathode (-)
  • LCD default pin configuration

LCD Main Functions

Function Description
lcdDefault() Default pinout
lcdCtor() Customizable pinout constructor
lcdSetText() Set text
lcdSetInt() Set integer
lcdClear() Clear previous data
lcdFree() Free LCD pins
assert_lcd() Check lcd status

Simple Example Code

The follow section of code demostrate how to use the lcd driver with default configuration.

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/esp_lcd.h"
/* LCD task */
void lcd_task(void *pvParameters){
/* Create LCD object */
lcd_t lcd;
/* Set lcd to default pins */
lcdDefault(&lcd);
/* Initialize LCD object */
lcdInit(&lcd);
/* Clear previous data on LCD */
lcdClear(&lcd);
while(1){
/* Display text */
lcdSetText(&lcd, "Hello World!", 0,0);
/* 1 second delay */
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void app_main(void)
{
/* Create LCD task */
xTaskCreate(lcd_task, "LCD task", 2048, NULL, 4, NULL);
}
void app_main(void)
Definition: main.c:108
void lcd_task(void *pvParameters)
Definition: main.c:23
lcd_err_t lcdSetText(lcd_t *const lcd, char *text, int x, int y)
Set text.
Definition: esp_lcd.c:240
void lcdInit(lcd_t *const lcd)
Initialize LCD object.
Definition: esp_lcd.c:105
lcd_err_t lcdClear(lcd_t *const lcd)
Clear LCD screen Detailed description starts here.
Definition: esp_lcd.c:306
void lcdDefault(lcd_t *const lcd)
LCD default constructor.
Definition: esp_lcd.c:154
LCD object.
Definition: esp_lcd.h:48

ESP32 LCD Driver Test

Add ESP-LCD to ESP32 Project

1) Copy driver folder 2) Paste into esp project 3) Edit project CMakeLists.txt to use esp_lcd:

idf_component_register(SRCS "main.c"
"driver/esp_lcd.c"
INCLUDE_DIRS ".")

Development

Microcontroller Software Enviroment Operating System
ESP32 C Language Visual Studio Code FreeRTOS

License and Release

License Release
License: MIT Release

Author