Skip to content

What is the resolution and size of a 1.77 inch 128x160 TFT display?

The screen size is exactly 1.77 inches measured diagonally, and the resolution is 128 pixels wide by 160 pixels tall. That gives you a pixel density of roughly 116 pixels per inch (PPI) on a display with an active area of about 28.03 mm by 35.04 mm. The aspect ratio is 4:5, which is closer to square than most modern smartphone screens but perfectly suited for simple interfaces, status indicators, or low-power embedded projects. The actual physical dimensions of the glass panel including the bezel and frame typically come in around 34.7 mm by 46.1 mm, with a thickness of about 2.5 mm to 3.0 mm depending on whether you get the version with a pre-attached PCB or just the bare glass. If you want to dive into the exact pinout and electrical specs, check out the 1.77 inch 128x160 tft display product page for the full datasheet.

This display uses the ST7735S driver IC, which is a common controller for small TFT panels. The ST7735S supports 16-bit color depth (65,536 colors) via RGB565 format, meaning each pixel gets 5 bits for red, 6 bits for green, and 5 bits for blue. That’s enough for smooth gradients and decent color reproduction on a screen this size. The interface is SPI (Serial Peripheral Interface), which uses just 4 data lines plus power and ground—typically MISO, MOSI, SCLK, and CS, plus a separate DC (data/command) pin and a RESET pin. That makes it easy to wire up to almost any microcontroller, including Arduino, ESP32, STM32, or Raspberry Pi Pico. The SPI clock speed can go up to 15 MHz on most implementations, so you can refresh the full 128x160 buffer at around 30 frames per second without any noticeable lag.

Let’s break down the physical dimensions in more detail. The active area (where pixels actually light up) is 28.03 mm wide and 35.04 mm tall. That’s about 1.10 inches by 1.38 inches. The viewable area is slightly smaller if you account for the black border around the edges, but the datasheet specifies the active area as the exact pixel boundary. The glass substrate itself is 0.4 mm thick, and the polarizer adds another 0.2 mm. The total module thickness including the backlight and flex cable is usually 2.8 mm ± 0.2 mm. The backlight is a single white LED with a typical forward voltage of 3.0 V to 3.3 V and a current draw of around 20 mA to 30 mA depending on brightness. You can adjust brightness via PWM on the LED pin, but running it at full brightness gives you about 250 cd/m² (nits) of luminance, which is readable in indoor lighting but not great in direct sunlight.

The pixel layout is RGB stripe, meaning each pixel has three sub-pixels for red, green, and blue arranged in vertical stripes. The sub-pixel size is about 0.219 mm by 0.219 mm, which is fairly large compared to modern smartphone displays (which are often under 0.05 mm per sub-pixel). That’s why the display looks a bit blocky up close—you can easily see individual pixels if you hold it within 10 inches of your face. But for applications like a smart thermostat, a digital clock, a simple game console, or a status display on a 3D printer, that’s perfectly fine. The viewing angle is rated at 80 degrees in all directions (left, right, up, down), but in practice, the contrast drops off noticeably past 60 degrees, especially in the vertical direction. The contrast ratio is typically 300:1 to 400:1, which is standard for a-TFT (amorphous silicon) panels of this size.

Now, let’s talk about the resolution in practical terms. 128x160 pixels means you have 20,480 total pixels. That’s enough to display a 16x20 character grid if you use an 8x8 pixel font, or an 8x10 character grid with a 16x16 pixel font. For text, you can comfortably fit 8 lines of 20 characters each using a 6x8 pixel font, which is common in embedded systems. For images, the low resolution means you can’t show much detail, but it’s fine for icons, simple graphics, or monochrome bitmaps. The frame buffer size is 40,960 bytes if you use 16-bit color (2 bytes per pixel), or 20,480 bytes if you use 8-bit color (1 byte per pixel, 256 colors). The ST7735S also supports 12-bit color (4,096 colors) and 18-bit color (262,144 colors), but 16-bit is the most common because it balances color depth with memory usage.

The SPI interface uses a 4-wire or 5-wire configuration. The 4-wire version uses MOSI, SCLK, CS, and DC, with MISO being optional (many implementations leave it unconnected because the display doesn’t send data back to the microcontroller). The 5-wire version adds a separate RESET pin, but you can also tie RESET to the microcontroller’s reset line or a GPIO pin. The command set for the ST7735S is well-documented and includes commands for sleep mode, gamma correction, inversion, and partial display update. The display supports a 1.65V to 3.3V logic voltage, but the backlight typically needs 3.0V to 3.3V. Some modules include a built-in voltage regulator to handle 5V logic, but most are 3.3V only—so if you’re using a 5V Arduino, you’ll need a level shifter.

Let’s look at some common applications and how the resolution and size play into them. For a wearable device like a smartwatch or fitness tracker, the 1.77-inch diagonal is a bit small for a wrist-worn screen (most smartwatches are 1.3 to 1.5 inches), but it can work for a simple step counter or notification display. The 128x160 resolution is actually the same as many early smartwatches, like the Pebble (which used a 144x168 monochrome memory LCD). For a handheld game console, the resolution is low enough that you can render sprites and tile maps without needing a powerful GPU. Many retro-style games use 128x160 or 128x128 resolution, so this display is a natural fit. For a 3D printer controller, the screen can show a menu, print status, and temperature readouts without any issues. The SPI interface is fast enough to update the display in real time, even with animations.

Now, let’s get into the electrical characteristics with a table for clarity:

ParameterMinTypicalMaxUnit
Logic Voltage (VDD)1.652.83.3V
Backlight Voltage (LED)2.83.03.3V
Backlight Current152030mA
SPI Clock Frequency01015MHz
Operating Temperature-202570°C
Storage Temperature-302580°C

The display consumes about 40 mA total when the backlight is at full brightness and the screen is showing a white image (all pixels at maximum brightness). If you’re showing a dark image, the current drops to around 20 mA because the TFT pixels themselves draw less power when they’re off. The ST7735S has a sleep mode that reduces current to under 1 mA, which is useful for battery-powered projects. The wake-up time from sleep mode is about 5 ms, so you can cycle the display on and off quickly to save power without noticeable delay.

Let’s talk about the physical interface. The display usually comes with a 14-pin or 16-pin FPC (flexible printed circuit) connector, with a pitch of 0.5 mm or 1.0 mm depending on the manufacturer. The pinout is standardized for most ST7735S modules, but always double-check the datasheet. A typical pinout looks like this:

PinNameFunction
1LEDBacklight anode
2SCLSPI clock
3SDASPI data (MOSI)
4DCData/command select
5RESReset
6CSChip select
7GNDGround
8VCCPower (3.3V)

Some modules add extra pins for MISO (if you want to read from the display) or for a touch panel if the display includes a resistive touch layer. But the standard 1.77-inch 128x160 TFT display does not include touch—it’s just a pure display. If you need touch, you’ll have to add a separate touch controller or use a different module.

The display’s response time is around 10 ms to 15 ms for a full gray-to-gray transition, which is fast enough for video playback at 30 fps. However, the pixel response time is not consistent across all colors—red transitions are slightly slower than blue or green due to the liquid crystal chemistry. This is typical for a-TFT panels and not a problem for most applications. The refresh rate is controlled by the MCU, not the display itself. The ST7735S can handle a frame rate up to 60 Hz if you send data fast enough, but with SPI at 10 MHz, you’re limited to about 30 Hz for a full frame update. If you only update partial regions of the screen, you can achieve higher effective refresh rates.

Let’s look at the color depth in more detail. With 16-bit color, each pixel is represented by 2 bytes: the first byte contains the high 5 bits of red and the low 3 bits of green, and the second byte contains the low 3 bits of green and the 5 bits of blue. That’s the RGB565 format. The green channel gets 6 bits because the human eye is more sensitive to green, which gives you 64 shades of green versus 32 shades each of red and blue. The total color count is 32 x 64 x 32 = 65,536 colors. If you use 18-bit color (RGB666), you get 262,144 colors, but the ST7735S only supports 18-bit via a specific command, and most libraries don’t implement it because it doubles the memory bandwidth. In practice, 16-bit color is more than enough for simple graphics and text.

The display’s gamma curve is set by default in the ST7735S, but you can adjust it via the gamma correction registers. The default gamma is set for a linear response, but you can tweak it to improve contrast or color balance. The gamma correction is done in hardware, so it doesn’t affect performance. The display also supports inversion mode, which flips all pixels to their opposite color—useful for testing or for creating a negative image effect.

Now, let’s talk about the backlight in more detail. The backlight is a single white LED with a typical forward voltage of 3.0 V and a current of 20 mA. The LED is driven directly by the VCC pin on some modules, but on others, it’s controlled by a separate pin. If you want to dim the backlight, you can use PWM on the LED pin with a frequency of 100 Hz to 1 kHz. The LED’s brightness is roughly linear with current, so a 50% duty cycle gives you about 50% brightness. The maximum brightness is around 250 cd/m², which is comparable to a typical computer monitor. The color temperature of the backlight is around 6500 K to 7000 K, which is slightly cool (bluish-white). If you want a warmer tone, you can add a color filter or use a different backlight module.

The display’s viewing angle is specified as 80 degrees in all directions, but that’s the angle at which the contrast ratio drops to 10:1. At 60 degrees, the contrast ratio is still above 50:1, which is acceptable for most applications. The viewing angle is asymmetric: the horizontal viewing angle is slightly better than the vertical, because the liquid crystal molecules are aligned in a specific direction. If you’re mounting the display in a device, you should orient it so that the viewer is looking at it from the front, not from the side. The display also has a slight color shift when viewed from an angle—whites may appear slightly yellow or blue. This is normal for a-TFT panels and not a defect.

The display’s reliability is rated for 50,000 hours of continuous operation at 25°C. That’s about 5.7 years of 24/7 use. The backlight LED has a similar lifetime, but it will gradually dim over time. The display’s glass is made of soda-lime glass, which is not as strong as gorilla glass but is adequate for indoor use. The glass is 0.4 mm thick, so it’s fragile—you should handle it carefully and avoid bending the flex cable. The flex cable is rated for 10,000 bends, but repeated bending will eventually cause the traces to crack. If you’re using the display in a product, you should secure the flex cable with a strain relief.

Let’s talk about the software side. The ST7735S is supported by almost every graphics library for microcontrollers, including Adafruit’s ST7735 library, TFT_eSPI, u8g2, and LVGL. The initialization sequence is well-documented and consists of about 20 commands to set up the display for 16-bit color, 128x160 resolution, and normal orientation. The display supports hardware scrolling, which allows you to scroll the entire screen vertically or horizontally without updating the frame buffer. The scroll area can be set to any rectangular region, which is useful for creating a scrolling text effect or a game with a moving background. The display also supports partial display update, which lets you update only a small region of the screen without rewriting the entire frame buffer. This can save power and bandwidth.

The display’s memory is organized as a 128x160 matrix of 16-bit values. The data is written to the display via the SPI bus, and the display automatically increments the column and row addresses. You can set the column and row start and end addresses using the CASET and RASET commands, which define a rectangular window. Any data written after that will only affect pixels within that window. This is useful for updating small areas quickly. The display also supports a read command, which allows you to read back the pixel data from the frame buffer. This is useful for implementing a double buffer or for checking if a pixel has changed.

The display’s power consumption is low enough that it can be powered directly from a microcontroller’s 3.3V output pin, as long as the total current draw is under 100 mA. The display draws about 40 mA with the backlight on, so you can power it from an Arduino’s 3.3V pin (which can supply up to 150 mA on most boards). If you’re using a battery, you should use a voltage regulator to ensure a stable 3.3V supply. The display’s standby current is under 1 mA, so you can leave it connected to a battery without draining it quickly. The display’s sleep mode is activated by sending a command, and the display will wake up in about 5 ms.

Now, let’s talk about the display’s physical mounting options. The display comes with a flex cable that can be soldered directly to a PCB, or you can use a connector. The flex cable is 0.5 mm pitch, so you’ll need a matching connector or a soldering iron with a fine tip. Some modules come with a pre-soldered header, which makes it easier to prototype on a breadboard. The display’s glass is 0.4 mm thick, so you should mount it in a bezel or frame to protect it from impact. The display’s back is usually black or white, depending on the manufacturer. The backlight is visible from the back, so you should cover the back with a sticker or a housing to prevent light leakage.

The display’s resolution of 128x160 is also used in many other small TFT displays, including the 1.44-inch, 1.8-inch, and 2.0-inch variants. The 1.77-inch version is a middle ground between the 1.44-inch (128x128) and the 1.8-inch (128x160) but with a slightly larger pixel size. The pixel pitch is 0.219 mm, compared to 0.184 mm on a 1.44-inch display and