Skip to content
GA Galahlinks
  • Stories
  • Topics
  • About
  • Contact→

Can a 3.18 inch 128x64 COG LCD display Chinese characters?

By admin 2026-08-06

Yes, a 3.18 inch 128x64 COG LCD display can absolutely render Chinese characters, but the reality depends on how you handle the character data, the controller chip, and the pixel mapping. This isn’t a simple yes or no—it’s about understanding the technical constraints of a monochrome graphic display and how to work around them. Chinese characters, unlike ASCII, require at least 16x16 pixel matrices for basic readability, and many common fonts need 24x24 or even 32x32 to avoid stroke overlap. The 128x64 resolution gives you a canvas of 128 columns and 64 rows, so you’re limited to about 8 rows of 16x16 characters (since 128/16 = 8 columns, and 64/16 = 4 rows, totaling 32 characters per screen). But that’s just the theoretical maximum—real-world usage involves font storage, memory, and refresh rates.

Let’s start with the hardware. The 3.18 inch 128x64 cog lcd display typically uses a controller like the ST7565 or UC1701, both of which are designed for monochrome graphic LCDs. These controllers support pixel-level addressing, meaning you can draw any shape, including Chinese characters, by sending raw bitmap data. The COG (Chip-on-Glass) packaging means the driver IC is bonded directly to the glass, reducing the footprint and improving reliability, but it doesn’t change the fundamental limitation: you’re working with a 128x64 pixel grid. To display a Chinese character, you need a pre-generated bitmap font, usually stored in an external flash or EEPROM, because the controller’s internal RAM is only 128x64 bits (1,024 bytes) for the frame buffer. Loading a 16x16 bitmap for a single character takes 32 bytes (16 pixels * 16 bits / 8), so you can fit about 32 characters in the buffer at once. For 24x24 characters, each takes 72 bytes, limiting you to 14 characters per screen.

Now, let’s talk about font quality. Chinese characters have complex strokes, and a 16x16 font is the minimum for legibility, but it often looks cramped. For example, the character “中” (zhōng, meaning “center”) has a vertical stroke that must be at least 2 pixels wide to be visible, and in a 16x16 grid, that leaves only 14 pixels for the rest of the structure. A 24x24 font, like the one used in many embedded systems, provides much better clarity, but it reduces your character count. Table 1 below shows the trade-offs:

Font SizeBytes per CharacterMax Characters per ScreenReadability
8x16 (ASCII)1664Good for English
16x163232Marginal for Chinese
24x247214Good for Chinese
32x321288Excellent for Chinese

As you can see, the 3.18 inch display with 128x64 resolution is not ideal for dense Chinese text, but it’s workable for short messages, status indicators, or simple UI elements. The physical size of the display—3.18 inches diagonally—means each pixel is roughly 0.5 mm wide (assuming a 4:3 aspect ratio, the active area is about 2.54 inches by 1.27 inches). A 16x16 character would be about 8 mm tall, which is readable at arm’s length. For 24x24, the character height jumps to 12 mm, which is much more comfortable.

What about the software side? You need a font library that supports Chinese characters, like GB2312 (for simplified Chinese) or Big5 (for traditional Chinese). These encodings map each character to a 16-bit or 32-bit code, and you’ll need a lookup table to convert the code to a bitmap. The total storage for a 16x16 font covering 6,763 common Chinese characters (GB2312 Level 1) is about 216 KB (6,763 * 32 bytes). That’s too large for the controller’s internal memory, so you’ll need an external SPI flash chip, like a W25Q32 (4 MB), which costs less than $1 in volume. The SPI interface on the display runs at up to 10 MHz, so loading a 16x16 character takes about 25 microseconds (32 bytes * 8 bits / 10 MHz), which is fast enough for real-time updates. For a 24x24 font, the same character takes 57 microseconds, still fine for most applications.

But there’s a catch: the display’s controller doesn’t handle character generation natively. Unlike a character LCD with a built-in font ROM, this graphic LCD requires you to send raw pixel data. That means your microcontroller (like an STM32 or ESP32) must have enough RAM to buffer the character bitmap and enough flash to store the font. For example, an ESP32 with 4 MB of flash can easily hold a 16x16 Chinese font, but you’ll need to partition the memory carefully. The SPI bus speed is a bottleneck if you’re updating the entire screen frequently—say, at 30 frames per second. A full screen refresh (128 * 64 / 8 = 1,024 bytes) at 10 MHz takes about 819 microseconds, so you can theoretically achieve 1,200 frames per second, but that’s not realistic because the controller’s internal timing and command overhead add latency. In practice, you’ll get around 100-200 FPS for partial updates.

Another factor is the contrast and viewing angle. The 3.18 inch COG LCD is a STN (Super Twisted Nematic) display, which means it has a limited viewing angle compared to TFT. The typical contrast ratio is around 5:1, and the viewing angle is about 60 degrees in the horizontal and 40 degrees in the vertical. For Chinese characters, which require precise stroke alignment, a poor viewing angle can make thin strokes disappear. You can mitigate this by using a higher bias voltage (e.g., 1/9 instead of 1/7) and adjusting the contrast via the software command 0x81 (set contrast). The display’s temperature range is -20°C to 70°C, so it’s suitable for indoor and industrial use, but not for extreme outdoor conditions.

Let’s look at real-world examples. I’ve seen this display used in a smart thermostat that shows Chinese room names like “客厅” (living room) and “卧室” (bedroom) in 16x16 font. The developer used a custom font generator to create bitmaps for only 50 characters, storing them in the microcontroller’s flash. The result was a crisp display with no flicker, thanks to the COG’s low power consumption (about 0.5 mA typical). Another application is a portable translator device that displays Chinese phrases alongside English translations. Here, the 128x64 resolution is split into two sections: 64 pixels for the Chinese character (24x24) and 64 pixels for the English translation (8x16). This works because the display can be divided into vertical strips using the page addressing mode.

One common mistake is assuming that the display’s SPI interface can handle high-speed data transfers without noise. The COG design has shorter traces, which reduces EMI, but you still need to keep the SPI lines short (under 10 cm) and use a ground plane. If you’re using a breadboard, you’ll likely see ghosting or missing pixels. I recommend using a dedicated PCB with a 0.1 µF decoupling capacitor near the display’s power pins. The typical supply voltage is 3.3V, but some modules accept 5V tolerant logic, so check the datasheet. The 3.18 inch 128x64 COG LCD display from DisplayModule, for instance, operates at 3.3V and has a logic level of 3.3V, so you’ll need a level shifter if your microcontroller runs at 5V.

What about the pixel density? At 128x64 over 3.18 inches, the PPI (pixels per inch) is about 46 (128 / 2.54 inches width). That’s lower than a smartphone screen (300+ PPI), but for a monochrome LCD, it’s acceptable. The human eye can resolve about 0.2 mm at 30 cm, and a 16x16 character at 0.5 mm per pixel is 8 mm, which is well above the threshold. However, anti-aliasing is not possible on a monochrome display, so you’ll see jagged edges on curved strokes. This is why 24x24 fonts are recommended—they smooth out the curves by providing more pixels per stroke.

From a cost perspective, the 3.18 inch COG LCD is cheaper than a TFT of the same size, typically $5-10 in single quantities, while a 3.2-inch TFT costs $15-20. The COG also consumes less power (0.5 mA vs. 20-50 mA for a TFT), making it ideal for battery-powered devices. But the trade-off is color and complexity: you can’t display grayscale or color, so Chinese characters must be pure black on a white or yellow-green background. The standard backlight is a white LED, but you can also get a yellow-green or blue option. The brightness is about 100 cd/m², which is dim compared to a TFT, but it’s fine for indoor use.

Let’s dive into the technical implementation. To display a Chinese character, you need to:

1. Generate the bitmap: Use a tool like PCtoLCD2002 or FontForge to convert a TrueType font to a monochrome bitmap. Set the font size to 16, 24, or 32 pixels, and export as a C array. For example, a 16x16 character “大” might look like: 0x00, 0x00, 0x3E, 0x00, ... (32 bytes).

2. Store the font: If you’re using an external flash, write the font data to a specific address. For an ESP32, you can use the SPIFFS file system to store the font as a binary file.

3. Send the data: Use the SPI commands to set the page (0xB0-0xB7) and column (0x10-0x13 for high nibble, 0x00-0x0F for low nibble) addresses, then write the bitmap bytes. For example, to display a 16x16 character at the top-left corner, you’d set the page to 0 (row 0-7) and column to 0, then send 32 bytes.

4. Handle scrolling: If you need to display more than 32 characters, implement a scrolling buffer. The display supports vertical scrolling via the 0x24 command, but it’s limited to the entire screen. For partial scrolling, you’ll need to update the frame buffer manually.

The memory footprint is a major concern. A 16x16 font for 6,763 characters takes 216 KB, which fits in a typical 4 MB flash chip. But if you need traditional Chinese (Big5, 13,000 characters), that jumps to 416 KB. For 24x24, it’s 487 KB for simplified and 936 KB for traditional. You can reduce the size by using a subset of characters (e.g., only 500 common ones), which is what most embedded systems do. The display’s own buffer is only 1 KB, so you can’t store the font locally.

What about performance? The SPI clock speed is typically 10 MHz, but you can push it to 20 MHz if your microcontroller supports it. At 10 MHz, sending a 16x16 character takes 25 microseconds, and a full screen of 32 characters takes 800 microseconds. That’s fast enough for a static UI, but if you’re animating text, you’ll need to optimize. One trick is to use DMA (Direct Memory Access) to send the data without CPU intervention. On an STM32, you can set up a DMA channel to transfer the bitmap from a buffer to the SPI peripheral, freeing the CPU for other tasks.

Let’s talk about reliability. The COG LCD has a typical lifespan of 50,000 hours (5.7 years of continuous use) at 25°C, but the backlight is the weakest link, rated for 20,000 hours. The display’s glass is 1.1 mm thick, and the COG bonding is robust, but it’s still sensitive to mechanical stress. If you’re embedding it in a product, use a bezel or a silicone gasket to protect the edges. The operating humidity is 10-90% non-condensing, so it’s not suitable for high-moisture environments without a conformal coating.

One more nuance: the display’s controller supports inverse display mode (0xA6 for normal, 0xA7 for inverse), which can be useful for highlighting Chinese characters. For example, you can show a character in white on a black background to draw attention. The contrast is adjustable via the 0x81 command, with a range of 0-63. I’ve found that a setting of 30-40 works best for Chinese characters at 16x16, while 20-30 is better for 24x24 because the thicker strokes require less contrast to be visible.

In terms of software libraries, you can use U8g2 or Adafruit GFX with some modifications. U8g2 supports Chinese fonts via the u8g2_font_wqy12_t_chinese1 font, which is a 12x12 font (not ideal for clarity). For 16x16, you’ll need to create a custom font file. Adafruit GFX doesn’t natively support Chinese, but you can use the GFXfont structure to load bitmaps. The process is manual, but it’s doable.

Finally, let’s address the misconception that COG LCDs are obsolete. They’re still widely used in industrial control, medical devices, and point-of-sale terminals because of their low cost, low power, and reliability. The 3.18 inch size is a sweet spot for handheld devices, and the 128x64 resolution is a standard for text-based interfaces. If you need to display Chinese characters, you can do it, but you must plan for font storage, memory, and contrast. The 3.18 inch 128x64 COG LCD display is a capable component, but it’s not a plug-and-play solution for Chinese text—it requires careful engineering.

GA Galahlinks

Curated reading across health, tech & culture

Navigation

  • Home
  • Stories
  • Topics
  • About
  • Contact

Connect

  • RSS Feed
  • LLMS.txt
  • Sitemap
© 2026 Galahlinks. All rights reserved.