Sprache: English | Deutsch | 中国的       Change Country
SEGGER Microcontroller

emWin (Graphics Software and GUI) » 3.xx.xx

Get an online QUOTE.
emWin (Graphics Software and GUI) - 3.xx.xx

Graphic Package and GUI (emWin™)

One of the most challenging aspects of many development projects is designing an attractive and useful display. Besides creating images that look exactly how you want them to appear, the implementation of windows techniques, complex drawing routines, different fonts and flicker-free updates are also expected.

The developer has to implement this complex functionality in short time periods, which can take up to months or even years of development time. emWin, probably the most efficient and comprehensive embedded GUI packages available, helps developers beat their timelines and cut their development costs. It is written in ANSI "C" and supports any black and white, grayscale or color display. Drivers for most common LCD controllers are available. All types of graphical displays (STN-LCD, TFT, CRT, OLED, Plasma, ...) are supported.


  • Any 8/16/32-bit CPU; only an ANSI "C" compiler is required.
  • Any (monochrome, grayscale or color) LCD with any controller supported (if the right driver is available).
  • May work without LCD controller on smaller displays.
  • Any interface supported using configuration macros.
  • Display-size configurable.
  • Characters and bitmaps may be written at any point on the LCD, not just on even-numbered byte addresses.
  • Routines are optimized for both size and speed.
  • Compile time switches allow for different optimizations.
  • For slower LCD controllers, LCD can be cached in memory, reducing access to a minimum and resulting in very high speed.
  • Clear structure.
  • Virtual display support; the virtual display can be larger than the actual display.

Software structure & components

emWin structure

emWin components

Optional widgets for PC look and feel

Widgets (window objects, also known as controls) are available. They generally operate automatically and are simple to use.

Window Manager

The window manager supplies a set of routines which allow you to easily create, move, resize, and otherwise manipulate any number of windows. It also provides lower-level support by managing the layering of windows on the display and by alerting your application to display changes that affect its windows.


A dialog box (or dialog) is normally a window that appears in order to request input from the user. This widget is included in the Window Manager/Widget package which is optional.

Touch screen & mouse support

Touch screen support for analog touch panels is available. This includes a low level driver,which handles the analog input (from an 8 bit or better AD-converter), debouncing and calibration of the touch screen. The window manager deals with touch messages and widgets such as button objects. It takes no more than one line of code to create a button or another widget, which then automatically handles touch messages and reacts accordingly. * For window objects such as the button widget, emWin offers touch-screen and mouse support.

Memory device contexts

Memory device contexts allow creation of a section to output to the display in the memory of the CPU. All drawing operations can be used. When the image has been build completely, it is transferred to the display in a single operation, allowing flicker free updates even with slow CPUs or slow displays.

VNC Support

VNC stands for "Virtual Network Computing". It is, in essence, a client server system based on a simple display protocol which allows the user to view a computing ´desktop´ environment not only on the machine where it is running, but from anywhere on the Internet and from a wide variety of machine architectures. Client and server communicate via TCP/IP. emWin VNC support is available as a separate package.

The Drivers (Layer 1)

A display driver supports a particular family of display controllers (typically LCD controllers) and all displays which are connected to one or more of these controllers.

Multilayer / multi display support

More and more graphic controller manufacturer (Fujitsu/Toshiba) offer a flexible layer concept. The multiple layer/multiple display feature allows you to access more than one layer.


Antialiasing is the smoothing of lines and curves. It reduces the jagged, stair-step appearance of any line that is not exactly horizontal or vertical. emWin supports dif- ferent antialiasing qualities, antialiased fonts and high-resolution coordinates. It is an optional package.

emWin Windows simulation using Microsoft Visual C++

A simulation environment under MSVC++ is available. It can be used to write and test the entire user-interface on the PC (all routines are 100% identical to your embedded application, no matter what CPU or LCD you are using).

Touch screen simulation

The touch screen simulation is integrated into the regular emWin simulation. Mouse events are used to simulate the touch screen. The simulation can be used to write the user interface of your application and can be send as a simple exe file to anybody for discussion, demonstration or verification.

Related software

Available PC Tools

  • Simulation plus viewer.
  • Bitmap converter.
  • Font converter.

emWin Starterkits

"Ready-to-go" starterkits allow you to work on real hardware and get familiar with emWin as well as with the microcontroller and other development tools.

emWin samples

A lot of samples "C" code are provided to demonstrate the emWin features. and can also be used by customers in similar applications.

Graphics library (GUI)

  • Bitmaps of different color depths supported.
  • Bitmap converter included.
  • Absolutely no floating-point usage.
  • Fast line/point drawing (without floating-point usage).
  • Very fast drawing of circles/polygons.
  • Different drawing modes.
  • Variety of Fonts included
  • Touch-screen and Mouse support included
  • Simulation included

All LCDs can be supported

Drivers can be written for all types of LCDs, including monochrome, gray scale passive and active color(TFT) displays. LCD drivers for all common LCDs already exist.

List of supported display controllers


  • A variety of different fonts are shipped with the basic software: 4*6, 6*8, 6*9, 8*8, 8*9, 8*16, 8*17, 8*18, 24*32, and proportional fonts with pixel-heights of 8, 10, 13, 16.
  • New fonts can be defined and simply linked in.
  • Only the fonts used by the application are actually linked to the resulting executable, resulting in minimum ROM usage.
  • Fonts are fully scalable, separately in X and Y.
  • Font converter available; any font available on your host system (i.e. Microsoft Windows) can be converted.

Color management

emWin features an integrated, very efficient color management system. This system allows conversion of logical colors (RGB format) into the physical colors which your LCD can display at run time. This way your application does not really need to be concerned to much with the available colors, LCDs can easily be interchanged. For optimized applications, the system can also display bitmaps using indices generated at (pre-)compile time by the application programmer or by the bitmap converter.

Small memory footprint

emWin has been designed to have a memory footprint as small as possible. Various configuration switches allow tailoring the software to perfectly match your needs, reducing memory consumption to a minimum. The memory requirements vary depending on which parts of the software are used and how efficient your target compiler is. It is therefore not possible to specify precise values, but the following applies to typical systems:

Small systems (no window manager)
  • RAM: 100 bytes
  • Stack: 500 bytes
  • ROM: 10-25 kb (depending on the functionality used)
Big systems (incl. window manager and widgets)
  • RAM: 2-6kb (depending on number of windows required)
  • Stack: 1200 bytes
  • ROM: 30-60kb (depending on on the functionality used)

Layer structure

emWin has been redesigned from scratch. It consists of 4 layers, which can be used individually:
Layer 4: Window manager
Layer 3: Widget library
Layer 2: Graphic library
Layer 1: LCD Driver(s)