A UART smart display puts a touchscreen UI on almost any microcontroller. The display module stores the graphics and runs the touch panel. Your host sends short serial messages that say what changed, not the pixels themselves. This guide is for hardware and embedded engineers. It explains how these modules work, the bandwidth and memory math behind them, how to pick between TTL, RS-232 and RS-485, how to design a robust host protocol, and when a UART display is the wrong tool.
In this guide
- 1. Why UART smart displays exist
- 2. How a UART smart display works
- 3. Send state, not pixels: the bandwidth math
- 4. Serial link calculator
- 5. TTL, RS-232 or RS-485?
- 6. Designing the host protocol
- 7. UI assets, flash budget and updates
- 8. Power, touch, optics and environment
- 9. When UART is the wrong choice
- 10. Bring-up and common failure modes
- 11. Quick-reference checklist
- 12. DCLTEK UART smart displays
- Frequently asked questions
1. Why UART smart displays exist
Most products that need a screen are controlled by a microcontroller: a pump controller, a charger, a dispenser, a test fixture, a piece of kitchen or medical equipment. The panels that suit those products increasingly use RGB, MIPI DSI or LVDS interfaces. Driving one directly means a processor with an LCD controller, megabytes of frame-buffer RAM, a graphics library, a touch driver and a font engine. That is a different class of hardware and firmware than the product needs for its real job.
A UART smart display moves all of that onto the display module. The module has its own controller, flash memory with the UI graphics, a panel driver and a touch controller. The host keeps doing what it is good at: reading sensors, running the control loop and making decisions. When something changes, it sends a few bytes over a serial port.
- Keep your MCU. No LCD controller, external RAM or graphics stack on the host. Any MCU with a spare UART will do.
- Faster first prototype. The UI is designed on a PC and loaded into the module. Host firmware only needs to read and write values.
- Separate UI and control. UI changes (new screens, a new language, a rebrand) can often ship without touching the control firmware.
- Hide the panel interface. Whether the panel behind the board is SPI, RGB, MIPI or LVDS, your host sees the same serial port. That also helps when a panel goes end-of-life.
Who this is for: hardware engineers, firmware leads and product managers adding a touchscreen to an MCU-based product, or replacing a character LCD, segment display or membrane keypad with a graphical UI.
2. How a UART smart display works
2.1 The building blocks
- UI engine. Draws pages built from images, text, numbers, gauges, bars, buttons and sliders. Each widget is tied to a value in the module’s variable memory.
- Variable memory. Values the host writes (a temperature, a status code, a page number) and values the display writes (a button press, a slider position, a keypad entry).
- Flash. Holds the images, fonts and page layouts produced by the PC design tool.
- Panel and touch. The board drives the TFT through its native interface and scans the capacitive touch panel. Neither is visible to your host.
2.2 The development flow
- Design the screens in the vendor’s PC tool, using artwork from your industrial designer.
- Assign each dynamic element (a number, an icon state, a button) to a variable address.
- Compile and load the UI into the module’s flash, usually from an SD card, USB or the serial port.
- Write host firmware that writes variables and handles the touch events the display reports.
- Freeze the variable map as an interface control document (ICD), so UI and firmware can change independently.
Tip. The variable map is the contract between your UI designer and your firmware engineer. Write it down before either starts, version it, and have the host check the UI version at power-up (see section 6).
3. Send state, not pixels: the bandwidth math
A UART is slow by display standards. That is why the smart display model works only when the host sends state (values and commands) and never pixels.
With the common 8N1 framing (1 start bit, 8 data bits, 1 stop bit), every byte costs 10 bits on the wire. At 115,200 baud that is 11,520 bytes per second.
| Resolution | One full frame at 16-bit color | Time to send it at 115,200 baud | Time to send a 10-byte value update |
|---|---|---|---|
| 240 × 320 | 153,600 bytes | 13.3 s | 0.87 ms |
| 800 × 480 | 768,000 bytes | 66.7 s | 0.87 ms |
| 1024 × 600 | 1,228,800 bytes | 106.7 s | 0.87 ms |
| 1024 × 768 | 1,572,864 bytes | 136.5 s | 0.87 ms |
For comparison, a parallel RGB link refreshing an 800 × 480 panel at 60 Hz with 16-bit color moves about 369 Mbit/s of pixel data, roughly 3,200 times what a 115,200-baud UART carries. The frame-buffer column is also the RAM your host would need just to hold one screen if it drove the panel directly.
Warning. Avoid designs that stream images or redraw graphics over the UART at run time. If a screen needs a new picture, store it in the module’s flash at design time and switch to it with a single command.
4. Serial link calculator
Use this to check link load and latency before choosing a baud rate. It assumes 8N1 framing (10 bits per byte).
As a rule of thumb, keep average load under about 30 to 50 percent. That leaves room for touch events coming back, retries and bursts such as a page change that updates many values at once.
5. TTL, RS-232 or RS-485?
The protocol is the same in all three cases; only the electrical layer changes. Many DCLTEK UART modules offer all three on one board, so you can choose based on where the display sits relative to the host.
| Interface | Signaling | Typical reach | Nodes | Best for |
|---|---|---|---|---|
| UART TTL (3.3 V or 5 V logic) | Single-ended, logic level | On-board or a short harness, well under 1 m | Point-to-point | Display mounted on or next to the controller board |
| RS-232 | Single-ended, bipolar (±3 V to ±15 V) | About 15 m (50 ft) at modest baud rates | Point-to-point | Short cable runs inside a cabinet; legacy controllers |
| RS-485 | Differential, twisted pair | Up to about 1,200 m (4,000 ft) at low baud rates | Multi-drop, typically up to 32 unit loads | Remote displays, electrically noisy equipment, several displays on one bus |
5.1 TTL
- Match logic levels. A 5 V TX into a 3.3 V-only RX can damage the receiver; a 3.3 V TX may not meet a 5 V receiver’s high threshold.
- Cross TX and RX, and share a solid ground. A missing or long ground return is the most common cause of corrupted data.
- Keep the harness short and away from motor drives, relays and backlight wiring.
5.2 RS-232
- Requires a level-shifting transceiver on the host side (the display board usually includes its own).
- Single-ended signaling picks up noise and ground offsets on long runs. Lower the baud rate if the cable is long.
5.3 RS-485
- Most smart displays use two-wire, half-duplex RS-485. The host must drive the transceiver’s direction (DE/RE) pin and release the bus as soon as its last stop bit has gone out.
- Terminate both ends of the bus with 120 Ω, and add failsafe biasing so the idle bus reads as a valid logic state.
- Run a ground or signal-reference conductor with the pair. For long runs between separately powered equipment, use an isolated transceiver.
- With several displays on one bus, give each an address and have the host poll them. Only one device may talk at a time.
Tip. If the display may later move off the main board, for example into a door, a remote panel or a separate enclosure, lay out for RS-485 from day one. Changing the electrical layer late forces a board spin.
6. Designing the host protocol
Each smart display controller has its own command set, but robust designs share the same structure. Write these rules into your ICD.
6.1 Message framing
A typical command frame looks like this:
| Header | Length | Command | Address | Data | Check |
|---|---|---|---|---|---|
| 1 to 2 fixed bytes, so the receiver can find the start | Bytes that follow | Write, read, page change, etc. | Variable or register | Value(s) | CRC-16 or checksum (often optional; turn it on) |
- Always enable the CRC if the module supports one. A corrupted value written to the wrong address is worse than a dropped message.
- Resynchronize on the header. If a frame fails its length or CRC check, discard bytes until the next header.
- Use a receive timeout (for example, a gap longer than a few character times ends a frame), so a partial frame cannot block the parser.
A CRC-16/MODBUS routine is a common choice and is small enough for any MCU:
uint16_t crc16_modbus(const uint8_t *p, size_t n)
{
uint16_t crc = 0xFFFF;
while (n--) {
crc ^= *p++;
for (int i = 0; i < 8; i++)
crc = (crc & 1) ? (crc >> 1) ^ 0xA001 : crc >> 1;
}
return crc; /* check your module's byte order: low byte first is common */
}
6.2 Events: push or poll?
- Display pushes events (key codes or variable changes sent when the user touches something). Lowest latency. Use it on TTL and RS-232 point-to-point links.
- Host polls the display’s variables. Required on shared RS-485 buses, where only one device may transmit at a time. Poll often enough that a button press feels instant, typically every 50 to 100 ms.
6.3 Power-up and recovery
- Handshake at boot. The display may finish booting after your MCU. Wait for a ready message, or retry a harmless read until it answers, before sending the first screen.
- Push full state after any reset. If either side restarts, the host should rewrite every displayed value and select the correct page. Never assume the display remembers.
- Check the UI version. Store a UI version in a variable and have the host read it at boot. Refuse to run, or fall back to a safe screen, if it does not match the firmware’s ICD version.
- Heartbeat. A periodic read or watchdog value lets each side detect a dead link and show a fault rather than stale data.
6.4 Firmware structure
- Use interrupt- or DMA-driven receive into a ring buffer. Never parse frames in the interrupt handler.
- Keep a shadow copy of every displayed value and only send changes. This cuts link load and makes the post-reset resync trivial.
- Rate-limit fast-changing values (a sensor that updates 1,000 times a second only needs to be shown 5 to 10 times a second).
Warning. Safety-related controls, such as an emergency stop, should not depend on the display link. Treat the touchscreen as an operator interface and keep critical interlocks in hardware or in the host’s own logic.
7. UI assets, flash budget and updates
7.1 Budget the flash early
Graphics are the biggest consumer. A full-screen 800 × 480 image at 16-bit color is 768,000 bytes uncompressed, so a 1 Gbit (128 MB) flash holds roughly 170 such images before compression, fonts and layouts. Most UIs reuse a background and overlay small icons, which stretches that a long way.
- Images: design at the panel’s native resolution and orientation. Scaling at run time costs quality and speed.
- Fonts: include only the sizes and character sets you need. Full CJK (Chinese, Japanese, Korean) fonts are large; subset them.
- Languages: plan text as variables or string tables from the start, even if you launch in one language.
7.2 Field updates and production
- Decide how UI files will be updated in the field: SD card, USB or through the host over the serial port. A host-driven update lets you ship UI and firmware together in one package.
- Decide who loads the UI in production and how it is verified, for example by reading the UI version over the serial port in end-of-line test.
- Keep UI source files under version control alongside the firmware. The compiled UI image is a build artifact, just like the firmware binary.
8. Power, touch, optics and environment
8.1 Power
- DCLTEK UART modules run from 5 V or 12 V, depending on size; most specify a 2 A supply. Budget for the backlight, which is usually the largest load, and for start-up inrush.
- Use the module’s brightness command to dim the backlight when idle. It saves power, reduces heat and extends backlight life.
- Route display power separately from sensitive analog circuits, and confirm the supply does not sag when the backlight goes to full brightness.
8.2 Touch and cover glass
- The projected-capacitive (PCAP) controller on the module handles scanning and reports touches. Cover glass thickness, gloves and water on the screen all change how it must be tuned. Specify them before the touch panel is finalized.
- For wet environments (kitchens, beverage equipment, marine) or gloved operators (industrial, EV charging), ask for touch tuning validated on your actual cover lens.
8.3 Optics and environment
- For bright indoor or outdoor use, choose a high-brightness module and consider optical bonding to cut reflections. DCLTEK UART modules range up to 1,050 nits.
- Check the operating temperature against the enclosure’s internal temperature, not the room’s. Most DCLTEK UART modules are rated −20 to 70 °C, with −30 to 85 °C options in several sizes.
- Bar-type, square and round formats let a UART display fit a slot, a knob or a narrow front panel where a standard rectangle will not.
9. When UART is the wrong choice
A UART display is a UI appliance, not a general-purpose screen. Pick a different smart display architecture when the job calls for it.
| You need | Better fit | Why |
|---|---|---|
| Fixed screens, buttons, numbers, gauges on an MCU | UART smart display | Lowest host cost and fastest UI development |
| Your host already has a video output (PC, Raspberry Pi, SoC board) | HDMI smart display | Plug in a standard video signal; render anything |
| Live camera or video feeds (backup cameras, equipment views) | AHD or AV input display | Video goes straight to the screen with no host processing |
| Apps, networking, web content, media playback | Android-board display | A complete computer behind the screen |
| Full control of rendering on a processor with an LCD controller | Raw panel (RGB, MIPI DSI, LVDS) | Lowest unit cost at volume, at the price of more engineering |
Also watch for these limits: smooth full-screen animation and video are not what UART modules are built for, very large and very high-resolution panels usually make more sense with HDMI or a native interface, and UI features depend on what the controller’s design tool supports.
10. Bring-up and common failure modes
10.1 Bring-up order
- Power the module alone and confirm the boot screen appears.
- Connect a USB-to-serial adapter from a PC (matching TTL level, RS-232 or RS-485) and send a known command by hand, such as a brightness change or a page switch.
- Load your compiled UI and step through the pages from the PC.
- Connect the host, confirm the boot handshake and version check, then bring up value writes and touch events.
- Test resets: power-cycle the display alone, then the host alone, and confirm the screen recovers to the right state both times.
10.2 Common failure modes
| Symptom | Likely cause | Fix |
|---|---|---|
| No response at all | TX and RX not crossed; wrong interface selected on the board; no common ground | Check wiring and any interface jumpers; test from a PC first |
| Garbled or random data | Baud rate or framing mismatch; 3.3 V vs 5 V level mismatch | Match settings on both sides; check levels with a scope |
| Works on the bench, fails in the machine | Noise on long TTL or RS-232 runs; missing RS-485 termination or bias; ground offset | Shorter harness, RS-485, termination, isolation |
| Touch presses sometimes lost | Host receive buffer overrun; parsing in the interrupt; RS-485 poll interval too long | DMA or ring buffer; parse in the main loop; poll faster |
| Wrong page or stale values after a power blip | No resync after one side resets | Boot handshake plus full state push (section 6.3) |
| Screen updates feel slow | Sending images or whole pages instead of variables; link overloaded | Store graphics in flash; send only changes; raise baud rate |
| Wrong values after a UI update | Variable addresses changed but firmware not updated | Version the ICD; check UI version at boot |
11. Quick-reference checklist
Architecture
- UART is the right fit (no video, apps or heavy animation)
- Electrical interface chosen for the final mounting distance (TTL, RS-232 or RS-485)
- Baud rate chosen with link load under about 30 to 50 percent
Protocol
- Variable map written as a versioned ICD
- CRC enabled; header resync and receive timeout implemented
- Push or poll event model chosen; RS-485 addressing defined if multi-drop
- Boot handshake, full state resync, UI version check and heartbeat implemented
Assets and production
- Flash budget estimated for images, fonts and languages
- Field update path chosen (SD, USB or serial through the host)
- Production loading and end-of-line UI version check defined
Hardware
- Supply sized for backlight and inrush; dimming used when idle
- Touch tuned for the real cover glass, gloves and water
- Brightness and operating temperature checked against the enclosure
- Safety-critical functions independent of the display link
12. DCLTEK UART smart displays
DCL Technologies, Inc. (DCLTEK) offers UART smart displays from 2.4″ to 15″, including bar-type, square and round formats. Key options across the range:
- Interfaces: UART TTL, with many models also offering RS-232 and RS-485 on the same board.
- Touch: projected-capacitive (PCAP) or no-touch versions.
- Brightness: up to 1,050 nits for bright environments.
- Temperature: most rated −20 to 70 °C, with −30 to 85 °C options.
- Supply format: complete all-in-one assemblies, or SKD (semi-knockdown) kits that you assemble into your own product.
Every DCLTEK salesperson is a qualified display engineer and your single point of contact. We help you choose the module and electrical interface, review power and touch requirements, and plan for lifecycle and supply from the start.
Browse all 22 DCLTEK UART smart displays, the full range of smart displays with UART, HDMI, AHD and Android boards, read the embedded display selection checklist, or see how DCLTEK supports OEM display customers.
Frequently asked questions
What is a UART smart display?
A UART smart display is a TFT module with its own controller, flash memory and touch controller. The UI graphics are stored on the module, and a host microcontroller controls it by sending short serial commands over UART (TTL, RS-232 or RS-485) instead of driving the panel’s pixels directly.
What baud rate should I use for a UART HMI display?
115,200 baud is a common starting point. At 8N1 framing that carries 11,520 bytes per second, enough for hundreds of small value updates per second. Raise it for busy screens on short links; lower it for long RS-232 or RS-485 cables. Keep average link load under about 30 to 50 percent.
Can I send images to a UART display at run time?
It is possible but rarely practical. A full 800 × 480 frame at 16-bit color is 768,000 bytes, which takes over a minute at 115,200 baud. Store images in the module’s flash at design time and switch between them with commands.
Should I use TTL, RS-232 or RS-485?
Use TTL when the display is on or next to the controller board, RS-232 for short cable runs of up to about 15 m, and RS-485 for long runs, noisy equipment or several displays on one bus. RS-485 is differential and can reach about 1,200 m at low baud rates.
When is a UART display the wrong choice?
When you need video, camera feeds, smooth full-screen animation, apps or networking. For those, choose an HDMI, AHD/AV or Android-board smart display, or drive a raw RGB, MIPI DSI or LVDS panel from a processor with an LCD controller.
Adding a touchscreen to an MCU-based product? Talk to a DCLTEK engineer.