# Capacitive screen module, TFT LCD, 1.54 inch, ST7789, 3.3V, 3 Wire, 9BIT

> 1.54 inch color TFT LCD display module with capacitive touch, 240x240 pixel resolution, IPS panel with 80 degree viewing angle. ST7789V LCD controller with 3-wire SPI interface, 9-bit transfer (no DC pin), capacitive touch with FT6236 driver over I2C interface. Supply voltage 2.5-3.3 VDC, logic voltage 3.3 VDC. Standard 2.54 mm pins, breadboard compatible. Not 5V tolerant.

- Page: https://sigmanortec.ro/en/capacitive-screen-module-tft-lcd-154-inch-st7789-33v-3-wire-9bit
- Price: 81.06 RON
- Availability: In stock; 1-2 zile
- Reference: 9917 · EAN: 5948505168656
- Category: Mechatronics and IoT > Sensors and Modules > Display and LCD > TFT Displays
- Specifications: Input Voltage: 3.3 V; Input Voltage Type: “DC” in Romanian can mean **“de ce”**, which translates to **“why”** in English.
- Package (shipping data): 0.014 kg
- Updated: 2026-09-14
- Shop: [Sigmanortec.ro](https://sigmanortec.ro/en/llms.txt)
- Prices: RON, VAT included; prices and stock as of 2026-10-22 05:21 (Europe/Bucharest)

## Description

1.54 inch TFT color display with capacitive touch, ideal for compact graphical interfaces in IoT projects and portable devices. Offers 240x240 resolution and IPS panel for vivid colors and wide viewing angle, ST7789V controller with 9-bit 3-wire SPI communication without DC pin, FT6236 capacitive touch on I2C for simple and responsive touch control.
1.54 inch color TFT LCD display module with capacitive touch, offering a resolution of 240×240 pixels, ideal for applications that require a compact, modern and interactive display.
The display uses IPS technology, ensuring a wide viewing angle of up to 80° in all directions, with clear images and vivid colors regardless of the viewing angle.
The display part integrates the ST7789V controller, using a 3-wire SPI interface with 9-bit transfer, where the selection between commands and data is made through the additional bit in the protocol (without a separate DC pin).
The touch part is made with a capacitive touch panel, controlled by the FT6236 circuit, which communicates via the I²C interface (SCL and SDA), accessible through the side connector.
The small size makes this module suitable for wearable device projects, graphical user interfaces (GUI), IoT, automation or other applications where space is limited.
The display is mounted on a ready-to-use module, equipped with standard 2.54 mm pins, compatible with breadboard and development boards such as Arduino, ESP32, STM32, etc.
The module is not 5V tolerant! Used with 5V boards (UNO, Nano, etc...) it is necessary to add a logic level converter on the signal pins!
Technical specifications:
Supply voltage: 2.5 – 3.3 VDC
Logic voltage: 3.3 VDC
LCD type: TFT color, 1.54 inch
Resolution: 240(RGB) × 240 pixels
Colors: RGB, 65K
Display type: IPS / Transmissive / Normal White
Viewing angle: 80°
LCD Driver IC: ST7789V
Active area: 27.72 × 27.72 mm
Display interface: SPI 3-wire, 9-bit
Backlight: White LED x3
Touch panel type: Capacitive
Touch driver IC: FT6236
Touch interface: I²C (IIC)
Maximum number of touches: 1 point + gestures
Touch area: 28.12 × 28.12 mm
Touch panel dimensions: 40.2 × 40.5 mm
Surface hardness: 6H
Operating temperature: -20°C ~ +70°C
Overall dimensions: 40.2 × 40.5 × 3.44 mm
Pinout module with ESP32 Wroom DevKitC:
Module pin | Function | ESP32 pin (example) | Observations
GND | Mass | GND | Common table
VCC | feeding | 3V3 | Only 3.3V
SCL | SPI Clock | GPIO18 | SPI Clock (SCK)
SDA | SPI Date | GPIO23 | SPI Data (MOSI)
CS | Chip Select | GPIO5 | Display selection
RES | Reset | GPIO17 | Hardware reset
BL / BLO | Backlight | GPIO4 or 3V3 | PWM or permanent ON
⚠️ Note: The display uses the 3-wire SPI protocol with 9-bit transfer. The DC pin is not used for command/data selection, this is done through the additional bit in the protocol.
Test code with ESP32 via Arduino IDE:
This test code can be used to test the screen (screen only, no touch):
// ESP32 Wroom DevKitC + ST7789 (SPI 3-wire, 9-bit)
\#include
\#define SCL 18
\#define SDA 23
\#define CS 5
\#define RST 17
\#define BL 4 // or -1 if BL is at 3V3
\#define W 240
\#define H 240
static inline void clk() { digitalWrite(SCL,1); digitalWrite(SCL,0); }
static inline void send9(bool dc, uint8_t v) { uint16_t w=(uint16_t(dc)<<8)|v; for(int i=8;i>=0;i--){ digitalWrite(SDA,(w>>i)&1); clk(); } }
static inline void cmd(uint8_t c) { digitalWrite(CS,0); send9(0,c); digitalWrite(CS,1); }
static inline void dat(uint8_t d) { digitalWrite(CS,0); send9(1,d); digitalWrite(CS,1); }
static inline void datN(const uint8_t* p, size_t n){ digitalWrite(CS,0); for(size_t i=0;i
static void rst() { pinMode(RST,OUTPUT); digitalWrite(RST,1); delay(10); digitalWrite(RST,0); delay(20); digitalWrite(RST,1); delay(120); }
static void bl() { if(BL>=0){ pinMode(BL,OUTPUT); digitalWrite(BL,1); } }
static void win(uint16_t x0,uint16_t y0,uint16_t x1,uint16_t y1){
cmd(0x2A); uint8_t a [4] = {uint8_t(x0>>8),uint8_t(x0),uint8_t(x1>>8),uint8_t(x1)} ; givenN(a,4);
cmd(0x2B); uint8_t b [4] = {uint8_t(y0>>8),uint8_t(y0),uint8_t(y1>>8),uint8_t(y1)} ; givenN(b,4);
cmd(0x2C);
}
static void fill(uint16_t c){
win(0,0,W-1,H-1); uint8_t hi=c>>8, lo=c&0xFF; digitalWrite(CS,0);
for(uint32_t i=0;i<(uint32_t)W*H;i++) { send9(1,hi); send9(1,lo); } digitalWrite(CS,1);
}
static void init7789(){
cmd(0x01); delay(150); cmd(0x11); delay(120);
cmd(0x3A); given(0x55); cmd(0x36); given(0x00);
cmd(0x29); delay(50);
}
static const uint16_t pal[]= {0xF800,0x07E0,0x001F,0xFFE0,0xF81F,0x07FF,0xFFFF} ;
// minimal font 5x7 only for " Sigmanortec.ro " (S igmanortec .)
static const uint8_t F [][5] = {
{0x46,0x49,0x49,0x49,0x31} , // S
{0x00,0x44,0x7D,0x40,0x00} , // i
{0x0C,0x52,0x52,0x52,0x3E} , // g
{0x7C,0x04,0x18,0x04,0x78} , // m
{0x20,0x54,0x54,0x54,0x78} , // a
{0x7C,0x08,0x04,0x04,0x78} , // n
{0x38,0x44,0x44,0x44,0x38} , // o
{0x7C,0x08,0x04,0x04,0x08} , // r
{0x01,0x01,0x7F,0x01,0x01} , // t
{0x38,0x54,0x54,0x54,0x18} , // e
{0x38,0x44,0x44,0x44,0x20} , // c
{0x00,0x60,0x60,0x00,0x00} // .
};
static int idx(char ch){
switch(ch){
case 'S': return 0; case 'i': return 1; case 'g': return 2; case 'm': return 3;
case 'a': return 4; case 'n': return 5; case 'o': return 6; case 'r': return 7;
case 't': return 8; case 'e': return 9; case 'c': return 10; case '.': return 11;
default: return 11;
}
static void px(int x,int y,uint16_t c) { if(x<0||y<0||x>=W||y>=H) return; win(x,y,x,y); digitalWrite(CS,0); send9(1,c>>8); send9(1,c&0xFF); digitalWrite(CS,1); }
static void ch5x7(int x,int y,char ch,uint16_t col,uint8_t sc){
int k=idx(ch);
for(int c=0;c<5;c++){ uint8_t b=F [k] [c] ;
for(int r=0;r<7;r++) if(b&(1<
for(int dx=0;dx
}
void setup(){
pinMode(CS,OUTPUT); pinMode(SCL,OUTPUT); pinMode(SDA,OUTPUT);
digitalWrite(CS,1); digitalWrite(SCL,0);
bl(); rst(); init7789(); fill(0x0000);
const char* t=" Sigmanortec.ro "; uint8_t sc=2; int cw=(5+1)*sc;
int x=(W-(int)strlen(t)*cw)/2, y=(H-7*sc)/2;
for(int i=0;t [i] ;i++) { ch5x7(x+i*cw,y,t[i],pal[i%7],sc); delay(120); }
}
void loop(){}
