Display and controller


This section is about displays. Mainly different types of controllers (with or without display panels). Refer to another menu for more about display panels and quality.

FT80x and FT81x

The FT800 is a graphic controller targeted for embedded applications to generate high-quality UIs. It has a rich programming API and contains built-in antialiasing, color dither, sprites, fonts etc. It also has built-in audio capabilities. It only supports 512×512 pixels.

FT801 is basically a FT801 with capacitive touch screen support with up to 5 touches and gesture detection. The FT800 pins for resisitive touch are replaced by pins for  touch controller I2C interface(such as FT5x06). According to docs, existing touch code shall be compatible.  It’s compatible with Azoteq and focaltech. More info about touch capabilities can be found in this document.

New: Oct 2015, The new FT810, FT811, FT812 and FT813 ICs provide up to 800×600 resolution for sharper imagery, increased speed for faster data transfer and image/video loading, and larger memory capacity. This is welcome news, because it makes it possible to use the FT series also for 7″ displays. Press release.

New: 2019: New generation EVE3, BT81x

Gameduino2 uses FT800. I could use this solution and try to glue the sensors and a Arduino on the main board. This can give relatively compact and thin hardware. Maybe a bit overkill for my application. It’s not cheap, but compared to the cost for a LCD and shield used in the prototype, its not that bad. Two things I really like (except for great and fast graphics possibilities) is better concept for touch control and built-in support for showing jpg (saved space). There is also a SDcard reader and a accelerometer(!). The latter can be used to change display depending on orientation of the screen 🙂 Gameduino is available at Seeedstudios.

I’m not terribly impressed by the screen quality of Gameduino2 when it comes to viewing angle. According to the designer, he tried several screens that all had similar problems. There is a register that flips the screen upside-down, which gives some more options for mounting the screen. It could help some.

gameduino2

New:Dec2017: Gameduino 3 using FT81x is now in the works by James Bowman.

Alternative version of the gdlib: https://github.com/lightcalamar/GD23Z: “This is the first library that unifies different MCUs. The adjustments are simple depending on your choice, however we can help you solve your doubts and problems related to our community of http://ft81xmania.com forums”

Another alternative is to examine a FTDI delevlopment board for the FT800 chip or MikroElektronika Eve click or Connect Eve with display. 4DSystems also have FT800 with displays.

FT800_VM800C50A-Deve_click_thumb

Another solution is to use a basic board such as Atomsofts AtomEVE. I believe it’s 3.3v only,  with built-in backlight and a simple audio output, all on a very small PCB. Parts of the design is influenced by the Gameduino2. There are two versions according to AtomSoft: FT800 for resistive touch and FT801 for capacitive touch. Available on Tindie(no longer available, feb 2016)

atomeve

There are already people out there that has started using Gameduino2 with alternativ software such as this.

(2017 jan) I’ve experimented with FT810 with 7″ capacitive touch panel and Gameduino2 library here.

This example even shows PCB/schematics for a FT800 shield for Arduino.

www.glyn.com has several so-called Advanced Display Application Module Advanced Display Application Module based on FT800/801.

RA8875

RA8875 is a text/graphic mixed display with 2 layers TFT LCD controller. It is designed to meet the requirement of middle size TFT module up to 800×480 pixels with characters or 2D graphic application. Read more at Raio.com.

RA8875 seems to be a bit more flexible regarding resolution, has a range of hardware-accelerated shapes such as lines, rectangles, triangles, ellipses, built in and round-rects. There is also a built in English/European font set. This makes it possible to draw fast even over SPI. But it is not as capable as FT800 when it comes to smooth graphics. There are several 7″ displays with this chip, i.e. this from Buydisplay.com. I’ve experimented with this display.

Adafruit has a board and additional software for it.
ra8875

Buydisplay has a arduino shield for it.

er-as-ra8875-_shield_for_tft_lcd_with_ra8875_controller_and_arduino_due_mega_uno

I also found this experiment with a RA8875 based screen via this discussion on Adafruit forum.

This completely open hardware and open source software cell phone uses RA8875.

There are experiments with an modified Adafruit_mfGFX to show large custom fonts.

adafruit mfGFX_large_font

RA8872
There is also a “little brother” of RA8875, the RA8872 that is designed to meet the requirement of middle size TFT module up to 320×240 pixels. One use is an handheld oscilloscope. However, I really don’t see why I should chose this controller over the FT800… Especially when price is not that important.

SSD1963

SSD1963 is a display controller that supports up to 864 x 480 x 24bit graphics content. It has parallel MCU interfaces. This is the controller that is on the LCD of my first prototype. More or less basic graphical LCD/TFT driver/controller with minimum extras. Supported by Henning Karlsens great UTFT library. It has proved to work, but I would really like something more fancy…

ILI9341

Single-chip SOC driver for a-TFT liquid crystal display with resolution of 240RGBx320
dots. Has some graphics capabilities such as (to be described…)

ILI9341 supports parallel and serial peripheral interface (SPI). The moving picture area can be specified in internal GRAM by window address function. The specified window area can be updated selectively, so that moving picture can be displayed simultaneously independent of still picture area.

Itead Nextion

https://www.itead.cc/display/nextion.html Nextion LCD TFT HMI Displays are “intelligent” displays supported by a IDE to make it easy to design interfaces. Seems to gain popularity because it significantly speeds up development time for UI. See more for example in this video from educ8s.tv. Most of the displays are resisitive touch, but there are also some capacitive.

Riverdi

http://riverdi.com/ has several interesting LCDs with various sizes, touch technologies and built in controllers, i.e. FT80x and FT81x. They also have arduino shield for some of the displays as well including software examples. The prices are a bit high, such as a 7″ with FT813 at apprx. $100.

Hotmcu/Thaoyu
Hotmcu/Thaoyu has a several LCDs. An interresting one is the $38 capacitive touch 5″ display with built-in FT811 graphics controller. If you dont need more than 480×272 resolution you can get away with a $28 5″ display with built-in FT800! They also have several capacitive LCDs without graphics controller such as the 7″ HY070CTP and 10″ HY101CTP.

Newhaven

Newhaven have several displays. Here list of displays with built in FT8xx graphics controller: http://www.newhavendisplay.com/eve2-tft-modules-c-1_990_992.html?zenid=0a73h2fg73mq06u3jk232rjpf0 . They tend to be more expensive that the buydisplay and Thaouy versions.

Himax
Several uses the some variants of Himax controller such as this HX8369 based IPS 4.3″ from Newhaven. Newhaven also have arduino code for it. Not sure if it is supported by the UTFT library that at least supports HX8352-A according to doc.

4D Systems
4D Systems has a lot of displays. An interresting one has an embedded FT800.

MatrixOrbital

MatrixOrbital sells several types of displays including ones with built in EVE2-3 processors such as a 5″ capacitive touch https://www.matrixorbital.com/ftdi-eve/eve-ft812/eve2-50g.

Manga Screen
I came across this project when reading about thing-printer. A side project of Thing is a small HDMI display. Read more here and some development history here describing development and testing of screen, touch and drivers. General discussion of search for a 4.3″ display. The display is LQ043Y1DX07 (same as HTC desire HD) with driver HX8363-A from Himax.
It also uses capacitive touch sensor. The designers of Manga Screen claims that the feel of mXT224 is much better that the “chinese copies”.
mangascreen-back-2-500x500

arLCD
arLCD from earthmake combines LCD from Earthlcd with arduino as one combined unit.
arLCD

SmartGPU 2
vizictechnologies has several LCDs such as SmartGPU 2 – LCD480X272 – 4.3″.  From their description: “The SmartGPU 2 is a powerful easy to use, intellectual property, graphics, audio, touchscreen and full datalogger processor embedded in a state-of-the-art ARM Cortex-M3 chip; this is mounted on a board with a touchscreen color LCD”. Guess that means they have their own graphics processor programmed into that Cortex chip.

smart_gpu

itron SMART TFT TU modules
http://www.noritake-itron.com/NewWeb/TFT/Overview/Overview.asp. Haven’t investigated further.

Open Source 3.2″ TFT Smart Display
Open Source 3.2″ TFT Smart Display used i.e. in open source DDS generator. The board is based on a PIC32 and a 3.2′ TFT with touchscreen (ILI9320 controller, using 16bits PMP). The software has two main parts. One that produces the 2D functions and a GUI with various widgets (buttons, check boxes, sliders etc)

STM32
I do also consider using a fast RISC processor such as stm32f4 to do all the work, including driving the display. The STM32F10xxx devices have an embedded FSMC (flexible static memory controller) which can be used together with the on-chip DMA controller to implement a direct drive for TFT-LCDs. However, thinking about hand-soldering that beast of a chip… well… Read more about details in this application note.

e-ink
I.e. Embedded Artists sell e-ink displays. e-ink could be interresting if you want to battery operated.
disp_arduino_250

Various others
Powertip has a range of TFT LCDs with capacitive touch panels. I don’t know anything about them but they look interesting because they use FT5x06 series controller.

http://www.waveshare.com has a 7″ capacitive LCD (800×480) with FT5206GE1 controller at $45.

Cellphone screen / reverse engineering
An option is to use a cellphone display. Andy Brown has a lot of examples on his webpage. The Manga Screen also uses screen from a cellphone.

Adafruit has an interesting post pointing to a list that correlates a lot of older mobile phones with their specific LCDs, LCD controllers, dimensions, serial bus, etc.

Other relevant screen stuff
AtomSoft has a separate LCD category with lots of info.

Capacitive Touch
Most of the touch screens for hobby usage are resistive. I want capacitive ones. I’ve found:

Separate touch panels (without the LCD screen) are also available such as GLS1680 based  5″ or FT5312 based 7″ from BuyDisplay.

It was relatively easy to write software driver for FT5xx6, some information can be found in my blog entry 7″ LCD with capacitive multitouch up’n running (Note that according to https://github.com/hampussandberg/HexConnect/wiki/Touch-Controller, the FT5x06 has firmware that are tailored to specific displays so I don’t know how easy it will be to buy a separate FT5206 and connect it to another LCD). More or less the same driver was also used for the FT5306 based standalone touch panel, ref. my blog entry 7″ standalone capacitive multitouch panel (800×480).

GSL1680 was tricker, but with help from a thread at forum.pjrc.com, I managed to get it up’n running on an Arduino MEGA.

According to the datasheet, the FT801 chip supports FT5x06 or Azoteq IQS5xx chips. The IQS550-TS43 (more in this video) 4.3″ is available at Mouser for $10(?) (Note, April 2015: Current price at Mouser seems to be closer to $20 in single quantities…) including controller. Combining this with a cheap $10 4.3″ from buydisplay can be a cost effective solution at $20. Almost 1/3 of the Newhaven. Might be that the Newhaven is a better display though.

iqs550-ts43

Adafruit now have a 2.8″ capacitive touch display using FT2606.

Here is a link explaining the difference between capacitive and resistive touch.

Panel, drivers, controllers – confused ???

I’ve been a bit confused about all various LCD panels, corresponding controllers etc. What the different parts actually do. I’ve come to this (preliminary) explanation for myself (feel free to correct me in the comments field below):

Bare LCD and driver

The bare lcd panel itself needs a driver. If it was just a raw LCD it would need hundreds of connections to control the pixel matrix. So the driver takes care of those signals. The interface to the driver is often referred to as 8 (or whatever) bits RGB with sync (VSYNC/HSYNC) and clock. An example of a bare lcd with driver is NHD-4.3-480272EF-ATXL#-T from NewHeaven. It is driven by Himax HX8257-A. The connector to a LCD/driver combo is normally(?) a 0.5mm pitch 40-pin. Controlling the sync clock etc. signals requires significant computing power and timing. An introduction can be read here.

NHD-4.3-bare-lcd
Bare lcd and driver with 24-bit Parallel RGB Interface

In order to make it possible to use such a display(with driver) from i.e. an arduino, an additional controller is needed. Examples are FT800/FT801 and RA8875. These controller generates the sync signals and RGB signals. The arduino only has to write images or commands to the controller by parallel or serial interface.

Combined LCD driver and controller

Or, maybe more often, there are many displays that has combined driver and controller. Example is NHD-4.3-480800EF-CTXP that has a HX8369 controller. It comes with 0.5mm pitch 40-pin connector. a Another example is this 3.2″ from Coldtears that uses HX8352 and is soldered to a board with 40 pins header that is a bit easier to work with. The arduino communicates with the controllers through serial or parallel interface, but there are typically some differences in how they are programmed. Luckily, Henning Karlsen have a unified library (UTFT) that supports many of the controllers (i.e. the 3.2″ from Coldtears), so you don’t have to write them from scratch. To save some valuable memory it might be wise to remove the ones you do not need. Take a look at the UTFT source code to see what registers are used on the different controllers. There are also some that have modified/reduced the library to speed things up such as this C++ vs Assembler performance on AVR. There are also other separate code out there tailored to specific controllers. But I think UTFT is a good starting point for beginners.

Coldtears LCD  with 40 pin header
Newhaven with small connector
Newhaven LCD with small 0.5mm pitch  connector

For beginners, I recommend buying a LCD with controller that is supported by the UTFT library. Make sure you buy one that has the controller pins available as a 40 pin connector at the end (not 0.5mm pitch!). Makes it easier to connect to an arduino. A problem is that the LCDs I/O are often 3.3V. The LCD also needs power for LCD backlight. Luckily there exists so-called arduino breakout boards that contains the 5V to 3.3V conversion, backlight driver and often also a memory card slot. You then end up with a layer of Arduino(UNO/MEGA) -> LCD breakout card -> LCD with driver and controller. Such as my prototype. This video by Dejan Nedelkovski looks like a good intro to such a combo. From there, you might chose to buy only a bare display(with driver) and a separate controller board and wire it yourself. The adafruit RA8875 controller board and This 5.0″ TFT screen is a nice combo that has software and support. You then only need to connect wires from arduino to the controller board. Note that Adafruit calls the RA8875 board a “driver” board. In my terminology above, it is a “controller” board. Might be that my terminology is not correct… or maybe there are no strict definitions on what is controller and what is driver

A relevant newbie thread about this can be found here

4 thoughts on “Display and controller

Leave a comment