If you’re wiring up a 1.77 inch 128x160 TFT display, the pinout is the first thing you need to nail down. Most of these modules, especially those using the ST7735S or similar controller like the ILI9163, come in a standard 8-pin or 9-pin configuration. The most common pinout for a 1.77 inch 128x160 TFT display with an SPI interface is: pin 1 (VCC or 3.3V), pin 2 (GND), pin 3 (CS or chip select), pin 4 (RESET or RST), pin 5 (RS or DC, data/command select), pin 6 (SDI or MOSI), pin 7 (SCK or SCLK), and pin 8 (LED or backlight control). Some boards add a ninth pin for SDO or MISO if you need readback, but that’s less common on budget modules. Always check the silkscreen on your specific board, because manufacturers sometimes swap pin 1 and pin 8 positions, or combine RESET and RS into a single pin on 6-pin variants. For a reliable reference, you can grab the datasheet for the 1.77 inch 128x160 tft display from a reputable supplier, which gives you exact pin assignments and timing diagrams.

Let’s break down the hardware side with more depth. The ST7735S controller inside these displays is a 262K-color single-chip driver, supporting a resolution of 128x160 pixels with a 1.77-inch diagonal. The active area is roughly 28.03 mm by 35.04 mm, with a pixel pitch of about 0.219 mm. The SPI interface runs at up to 15 MHz typically, but many Arduino libraries cap it at 8 MHz for stability. The logic voltage is 3.3V, but some modules include an onboard 3.3V regulator, so you can feed them 5V on VCC. However, the data lines must stay at 3.3V logic—feeding 5V into MOSI or SCK can fry the controller. The backlight LED is usually a series of white LEDs drawing around 20 mA to 40 mA at 3.3V, and you can control it with a PWM pin on your microcontroller for dimming.

Here’s a typical pinout table for a 1.77 inch 128x160 TFT display with an 8-pin interface:

Pin Number Label Function Notes
1 VCC Power supply (3.3V or 5V) Check regulator; some modules accept 5V
2 GND Ground Common ground with microcontroller
3 CS Chip select (active low) Pull high when not in use
4 RESET Reset (active low) Can be tied to microcontroller reset or GPIO
5 RS/DC Data/command select Low for command, high for data
6 SDI/MOSI SPI data input Connect to microcontroller MOSI
7 SCK/SCLK SPI clock Up to 15 MHz, but 8 MHz is common
8 LED/BL Backlight control PWM capable; some modules have a series resistor

Some modules add a ninth pin labeled SDO or MISO, which is used for reading back display data or the frame buffer. This is optional for most projects, because you rarely need to read from the display. If you’re using a library like Adafruit_ST7735 or TFT_eSPI, you can leave MISO unconnected or set it to -1 in the configuration. The pinout can also vary by vendor. For example, a common 1.77 inch 128x160 TFT display from Waveshare or HiLetgo might have pin 1 as LED and pin 8 as VCC, so always verify with a multimeter. The VCC pin usually has a diode or regulator near it, and the GND pin is often connected to a large copper pour on the board.

Now, let’s talk about the electrical characteristics. The ST7735S operates at a supply voltage range of 1.8V to 3.3V for the logic core, but the I/O pins can tolerate up to 3.6V. The backlight driver is separate, typically a constant current source that can handle 20 mA to 30 mA per LED. The total power consumption of the display with backlight on is around 50 mA to 80 mA at 3.3V, depending on the brightness. The sleep mode current drops to below 1 mA, which is useful for battery-powered projects. The SPI timing requires a minimum SCK high and low time of 33 ns each, so the maximum clock frequency is about 15 MHz. However, the interface is 4-wire SPI, meaning you don’t need a separate MISO line unless you’re doing reads. The RS pin toggles between command and data modes, and the CS pin must be low for the entire transaction.

For a deeper dive into the communication protocol, the ST7735S initialization sequence is critical. You need to send about 20 to 30 commands to wake up the display, set the orientation, gamma curves, and frame rate. Common commands include: 0x11 (sleep out), 0x36 (memory access control for rotation), 0x3A (interface pixel format, set to 0x05 for 16-bit color), and 0x29 (display on). The pixel format is 16-bit RGB565, which gives you 65,536 colors. The frame rate is typically 60 Hz, but you can adjust it via the 0xB1 command for the frame rate control. The display supports partial display mode and vertical scrolling, which are useful for animation or text scrolling without redrawing the whole screen.

Let’s look at a real-world wiring example for an Arduino Uno. Connect VCC to 3.3V or 5V (check your module), GND to GND, CS to digital pin 10, RESET to pin 9, RS/DC to pin 8, SDI/MOSI to pin 11, SCK to pin 13, and LED to pin 6 with a 100-ohm resistor in series. If you’re using a 5V Arduino, you need a level shifter for the data lines, or you can use a voltage divider with 1k and 2k resistors to drop 5V to 3.3V. Some modules have built-in level shifters, but most cheap ones don’t. The SPI frequency in the Arduino library should be set to 4 MHz or 8 MHz to avoid signal integrity issues with long wires.

Now, let’s talk about the physical dimensions. The 1.77 inch 128x160 TFT display module itself is usually about 34 mm wide, 45 mm tall, and 3.5 mm thick, including the PCB. The glass panel is 28 mm by 35 mm, with a 1.5 mm border. The connector is a 1.0 mm pitch pin header, often with 8 or 9 pins. The viewing angle is typically 120 degrees in all directions, but the contrast ratio is around 500:1. The brightness is about 250 cd/m² with the backlight at full power. The display is transmissive, so it needs the backlight on to be readable indoors. In direct sunlight, it’s nearly invisible without a polarizer upgrade.

One common issue with these displays is the pinout labeling on the PCB. Some manufacturers print the pin numbers on the back, but they might be in a different order than the datasheet. For example, a module from a Chinese supplier might have pin 1 as VCC, but the next pin might be GND, then CS, then RESET, then RS, then MOSI, then SCK, then LED. But another batch might have pin 1 as LED, then SCK, then MOSI, then RS, then RESET, then CS, then GND, then VCC. Always use a continuity tester to check which pin connects to the regulator input or the backlight resistor. The backlight pin usually has a 10-ohm to 100-ohm resistor in series, so you can identify it by measuring resistance to ground.

For advanced users, the ST7735S supports 4-wire SPI with a 9-bit mode, but most libraries use 8-bit data with a separate RS line. The command set includes 0x2A (column address set) and 0x2B (row address set) for windowing, which lets you update only a portion of the screen. This is crucial for fast partial updates, like in a digital clock or a game. The display also supports a 12-bit color mode (RGB444) for lower memory usage, but it reduces color quality. The gamma correction is set via commands 0xE0 and 0xE1, with 16-bit gamma values for positive and negative calibration. The default gamma is usually good enough for general use, but you can tweak it for better contrast in specific lighting conditions.

Let’s add some data on the SPI bus timing. The ST7735S requires a setup time of 10 ns for data before the clock edge, and a hold time of 10 ns after. The clock duty cycle should be between 40% and 60%. The CS line must be low for at least 5 ns before the first clock edge. The RESET line needs a low pulse of at least 10 microseconds to initialize the controller. After power-up, you must wait 120 ms before sending any commands, then send the sleep out command and wait another 120 ms. The display on command requires a 20 ms delay. These timing requirements are often ignored in hobbyist code, but they affect reliability, especially at higher clock speeds.

Here’s a quick reference table for the initialization sequence timing:

Step Action Delay
1 Power up VCC and backlight 10 ms
2 Toggle RESET low for 10 µs, then high 120 ms
3 Send command 0x11 (sleep out) 120 ms
4 Send command 0x36 (memory access control) 0 ms
5 Send command 0x3A (pixel format, 0x05 for 16-bit) 0 ms
6 Send command 0x29 (display on) 20 ms

The pinout also affects how you handle the backlight. Some modules have a dedicated backlight enable pin that requires a high signal to turn on, while others use a PWM pin with a transistor. If your module has a 9-pin header, the ninth pin might be a backlight enable or a test point. In rare cases, the backlight is always on when VCC is applied, and you need to cut a trace to control it. Always check the schematic if available. For the ST7735S, the backlight is not controlled by the SPI interface, so you need a separate GPIO pin for PWM dimming.

For those using a Raspberry Pi, the pinout is similar but you need to use the hardware SPI pins: MOSI on GPIO 10 (physical pin 19), SCK on GPIO 11 (pin 23), CS on GPIO 8 (pin 24), and you can use any GPIO for RESET and RS. The logic voltage on the Pi is 3.3V, so no level shifting is needed. The backlight can be controlled with a PWM pin like GPIO 18 (pin 12). The SPI frequency on the Pi can go up to 32 MHz, but the ST7735S might not be stable above 15 MHz, so set it to 8 MHz or 16 MHz in the device tree overlay. The initialization sequence is the same as on Arduino, but you need to use the wiringPi or pigpio library for timing.

One more detail: the pinout for the 1.77 inch 128x160 TFT display can be different if it uses a 6-pin interface. In that case, the pins are usually VCC, GND, CS, MOSI, SCK, and a combined RS/RESET pin. This is less common but found on some ultra-cheap modules. The combined pin requires a specific sequence to differentiate between reset and data/command, which is a pain to implement. Stick with the 8-pin version for easier debugging.

To wrap up the technical details, the ST7735S has a built-in charge pump for the LCD voltage, so you don’t need external capacitors. The display supports 1.8V logic for low-power applications, but most modules are designed for 3.3V. The sleep mode current is 0.1 mA, and the idle mode current is 0.5 mA. The display can be turned off via the 0x28 command, which blanks the screen but keeps the backlight on. The backlight can be turned off separately by pulling the LED pin low. For battery life, you can cycle between sleep and active modes, but the wake-up time is 120 ms, so it’s not suitable for fast toggling.

Finally, if you’re troubleshooting a non-working display, check the pinout with a multimeter. Measure voltage on VCC and GND, then check if the backlight pin has 3.3V. If the backlight is on but no image, verify the SPI lines with an oscilloscope. The CS line should go low during transactions, and the SCK should show a clean square wave. The RS line should toggle between high and low. If you see garbage on the screen, the initialization sequence might be wrong, or the pixel format is set to 18-bit instead of 16-bit. The 1.77 inch 128x160 TFT display is a robust part, but it’s sensitive to voltage spikes, so use a 100 µF capacitor on VCC near the display if you have long wires.