itead studio 3.2 tft lcd touch shield for arduino free sample
ITDB02-3.2S V2 display module is a 3.2" TFT LCD with 65K color 320 x 240 resolutions for Arduino microcontroller. The controller of this LCD module is ILI9341. It supports 16bit data interface with control interfaceof four wires. Moreover, this Arduino LCD module contains the touch screen and SD card socket as well.
Arduino 3.2" TFT LCD Touch shield V2 is an Arduino Mega compatible, multicolored TFT display with touch-screen and SD card socket as well. It is available in an Arduino MEGA shield compatible pinout for attachment. The TFT driver is based on ILI9341 with 8bit data and 4bit control interface.
TFT touchscreens are the amazing graphical interface which can be used with microcontrollers such as Atmel, PIC, STM, as it has a wide color range, and good graphical ability and a good mapping of pixels.
This library is the continuation of my ITDB02_Graph, ITDB02_Graph16 and RGB_GLCD libraries for Arduino and chipKit. As the number of supported display modules and controllers started to increase I felt it was time to make a single, universal library as it will be much easier to maintain in the future.
This library supports a number of 8bit, 16bit, and serial graphics displays, and will work with both Arduino, chipKit boards and select TI LaunchPads.
NOTE:Due to the size of the library I do not recommend using it on ATmega328 (Arduino Uno) and ATmega32U4 (Arduino Leonardo) as they only have 32KB of flash memory. It will work, but you will be severely limited in available flash memory for your application.
This is our target, this file has the names of the modules and shields that are supported by this library, you can see in it a list of module names and module names for the UTFT which you should use to define your module.
#include
Sir I wasn"t referring to you. I was referring to the person who made the 8 Bit comment re: Arduino and his obvious lack of knowledge about Arduino and it"s capabilities. There were two links on the original post, the second link at the bottom of that page takes you to The "lesser" of the two displays was described in the original post as Only having an 8 Bit data bus and thus 256 colors... sounded to me as if though a person from Itead Studios was trying to "push" the more expensive of the two Itead products and that generated the energy to re read and confirm prior knowledge about parallel loading color graphic displays and that product specifically as I own one, bought it for $20.00 US
I am not aware of the data bus limiting color abilities. I am aware that the processor (Uno 328) can do int calculations and that the unsigned int declaration is for a 16 bit number. The loading of a 16 Bit number requires some small work to break it into bytes that the controller can use in 8 bit mode however I am not aware of any limitations that are created by using 8 bit mode except the time it take to load a graphic screen. So perhaps in my ignorance my post was inaccurate for this I apologize and should I be guilty of ignorance I will cheerfully remove the "inaccurate post" and apologize for misleading anyone that had the misfortune to read it.
Yes, just using UTFT. Arduino Due with a (saintsmart-isch) 3.2" with SSD1289 ordered from samenkopen.net. Works out of the box. Not using a shield, just wired it directly. There is some documentation in the “UTFT Requirements.PDF” file on the connections.
I did supply it it with 5V, but directly connected the 3.3V pins to the Arduino Due. And connection RST == REST. And supply LED_A with 3,3V, its the backlight. Any miswire wil give white or noisy screens. I had to doublecheck these a few times, its easy to miswire one of the 20+ wires.
I havent been able to find much for others with the similar problem with this setup. That along with >2000 of these screens being sold by the vendor makes me think I may have a non functioning unit.
In this Arduino touch screen tutorial we will learn how to use TFT LCD Touch Screen with Arduino. You can watch the following video or read the written tutorial below.
For this tutorial I composed three examples. The first example is distance measurement using ultrasonic sensor. The output from the sensor, or the distance is printed on the screen and using the touch screen we can select the units, either centimeters or inches.
The next example is controlling an RGB LED using these three RGB sliders. For example if we start to slide the blue slider, the LED will light up in blue and increase the light as we would go to the maximum value. So the sliders can move from 0 to 255 and with their combination we can set any color to the RGB LED, but just keep in mind that the LED cannot represent the colors that much accurate.
The third example is a game. Actually it’s a replica of the popular Flappy Bird game for smartphones. We can play the game using the push button or even using the touch screen itself.
As an example I am using a 3.2” TFT Touch Screen in a combination with a TFT LCD Arduino Mega Shield. We need a shield because the TFT Touch screen works at 3.3V and the Arduino Mega outputs are 5 V. For the first example I have the HC-SR04 ultrasonic sensor, then for the second example an RGB LED with three resistors and a push button for the game example. Also I had to make a custom made pin header like this, by soldering pin headers and bend on of them so I could insert them in between the Arduino Board and the TFT Shield.
Here’s the circuit schematic. We will use the GND pin, the digital pins from 8 to 13, as well as the pin number 14. As the 5V pins are already used by the TFT Screen I will use the pin number 13 as VCC, by setting it right away high in the setup section of code.
As the code is a bit longer and for better understanding I will post the source code of the program in sections with description for each section. And at the end of this article I will post the complete source code.
I will use the UTFT and URTouch libraries made by Henning Karlsen. Here I would like to say thanks to him for the incredible work he has done. The libraries enable really easy use of the TFT Screens, and they work with many different TFT screens sizes, shields and controllers. You can download these libraries from his website, RinkyDinkElectronics.com and also find a lot of demo examples and detailed documentation of how to use them.
After we include the libraries we need to create UTFT and URTouch objects. The parameters of these objects depends on the model of the TFT Screen and Shield and these details can be also found in the documentation of the libraries.
Next we need to define the fonts that are coming with the libraries and also define some variables needed for the program. In the setup section we need to initiate the screen and the touch, define the pin modes for the connected sensor, the led and the button, and initially call the drawHomeSreen() custom function, which will draw the home screen of the program.
So now I will explain how we can make the home screen of the program. With the setBackColor() function we need to set the background color of the text, black one in our case. Then we need to set the color to white, set the big font and using the print() function, we will print the string “Arduino TFT Tutorial” at the center of the screen and 10 pixels down the Y – Axis of the screen. Next we will set the color to red and draw the red line below the text. After that we need to set the color back to white, and print the two other strings, “by HowToMechatronics.com” using the small font and “Select Example” using the big font.
Next is the distance sensor button. First we need to set the color and then using the fillRoundRect() function we will draw the rounded rectangle. Then we will set the color back to white and using the drawRoundRect() function we will draw another rounded rectangle on top of the previous one, but this one will be without a fill so the overall appearance of the button looks like it has a frame. On top of the button we will print the text using the big font and the same background color as the fill of the button. The same procedure goes for the two other buttons.
Now we need to make the buttons functional so that when we press them they would send us to the appropriate example. In the setup section we set the character ‘0’ to the currentPage variable, which will indicate that we are at the home screen. So if that’s true, and if we press on the screen this if statement would become true and using these lines here we will get the X and Y coordinates where the screen has been pressed. If that’s the area that covers the first button we will call the drawDistanceSensor() custom function which will activate the distance sensor example. Also we will set the character ‘1’ to the variable currentPage which will indicate that we are at the first example. The drawFrame() custom function is used for highlighting the button when it’s pressed. The same procedure goes for the two other buttons.
So the drawDistanceSensor() custom function needs to be called only once when the button is pressed in order to draw all the graphics of this example in similar way as we described for the home screen. However, the getDistance() custom function needs to be called repeatedly in order to print the latest results of the distance measured by the sensor.
Here’s that function which uses the ultrasonic sensor to calculate the distance and print the values with SevenSegNum font in green color, either in centimeters or inches. If you need more details how the ultrasonic sensor works you can check my particular tutorialfor that. Back in the loop section we can see what happens when we press the select unit buttons as well as the back button.
Ok next is the RGB LED Control example. If we press the second button, the drawLedControl() custom function will be called only once for drawing the graphic of that example and the setLedColor() custom function will be repeatedly called. In this function we use the touch screen to set the values of the 3 sliders from 0 to 255. With the if statements we confine the area of each slider and get the X value of the slider. So the values of the X coordinate of each slider are from 38 to 310 pixels and we need to map these values into values from 0 to 255 which will be used as a PWM signal for lighting up the LED. If you need more details how the RGB LED works you can check my particular tutorialfor that. The rest of the code in this custom function is for drawing the sliders. Back in the loop section we only have the back button which also turns off the LED when pressed.
In order the code to work and compile you will have to include an addition “.c” file in the same directory with the Arduino sketch. This file is for the third game example and it’s a bitmap of the bird. For more details how this part of the code work you can check my particular tutorial. Here you can download that file:
This post is an introduction to the Nextion display with the Arduino. We’re going to show you how to configure the display for the first time, download the needed resources, and how to integrate it with the Arduino UNO board. We’ll also make a simple graphical user interface to control the Arduino pins.
Nextion is a Human Machine Interface (HMI) solution. Nextion displays are resistive touchscreens that makes it easy to build a Graphical User Interface (GUI). It is a great solution to monitor and control processes, being mainly applied to IoT applications.
The Nextion has a built-in ARM microcontroller that controls the display, for example it takes care of generating the buttons, creating text, store images or change the background. The Nextion communicates with any microcontroller using serial communication at a 9600 baud rate.
The best model for you, will depend on your needs. If you’re just getting started with Nextion, we recommend getting the 3.2” size which is the one used in the Nextion Editor examples (the examples also work with other sizes, but you need to make some changes). Additionally, this is the most used size, which means more open-source examples and resources for this size.
To get started with Nextion, first you need to install Nextion Editor. Go to https://nextion.itead.cc/, select the Resources tab, Download > Nextion Editor and install Nextion Editor. You can either download the .zip file or the .exe file.
Connecting the Nextion display to the Arduino is very straightforward. You just need to make four connections: GND, RX, TX, and +5V. These pins are labeled at the back of your display, as shown in the figure below.
You can power up the Nextion display directly from the Arduino 5V pin, but it is not recommended. Working with insufficient power supply may damage the display. So, you should use an external power source. You should use a 5V/1A power adaptor with a micro USB cable. Along with your Nextion display, you’ll also receive a USB to 2 pin connector, useful to connect the power adaptor to the display.
The best way to get familiar with a new software and a new device is to make a project example. Here we’re going to create a user interface in the Nextion display to control the Arduino pins, and display data.
The user interface has two pages: one controls two LEDs connected to the Arduino pins, and the other shows data gathered from the DHT11 temperature and humidity sensor;
At this moment, you can start adding components to the display area. For our project, drag three buttons, two labels and one slider, as shown in the figure below. Edit their looks as you like.
All components have an attribute called objname. This is the name of the component. Give good names to your components because you’ll need them later for the Arduino code. Also note that each component has one id number that is unique to that component in that page. The figure below shows the objname and id for the slider.
You should trigger an event for the touchable components (the buttons and the slider) so that the Arduino knows that a component was touched. You can trigger events when you press or when you release a component.
To do that, select one of the buttons, and in the event window, select the Touch Release Event tab, and put a tick on the Send Component ID option. Repeat this process for the other button, and the slider.
Notice that we have labels to hold the units like “ºC”, “ºF” and “%”, and empty labels that will be filled with the readings when we have our Arduino code running.
Once the GUI is ready, you need to write the Arduino code so that the Nextion can interact with the Arduino and vice-versa. Writing code to interact with the Nextion display is not straightforward for beginners, but it also isn’t as complicated as it may seem.
A good way to learn how to write code for the Arduino to interact with the Nextion display is to go to the examples folder in the Nextion library folder and explore. You should be able to copy and paste code to make the Arduino do what you want.
The first thing you should do is to take note of your components in the GUI that will interact with the Arduino and take note of their ID, names and page. Here’s a table of all the components the code will interact to (your components may have a different ID depending on the order you’ve added them to the GUI).
Here you use the page ID, the component ID and their name – just check the table above with all the components. To define a text you use NexText, to define a button you use NexButton, for a slider you use NexSlider and for the progress bar you use NexProgressBar.
For the slider (h0), you have the following function that writes the current slider position on the tSlider label and sets led2 brightness accordingly:
Finally, you need a function for the bUpdate (the update button). When you click this button the DHT temperature and humidity sensor reads temperature and humidity and displays them on the corresponding labels, as well as the humidity on the progress bar. That is the bUpdatePopCallback() function.
In the setup(), you need to attach the functions created to the corresponding events. For example, when you click on the bOn button, the bOnPopCallback function will be triggered.
In this post we’ve introduced you to the Nextion display. We’ve also created a simple application user interface in the Nextion display to control the Arduino pins. The application built is just an example for you to understand how to interface different components with the Arduino – we hope you’ve found the instructions as well as the example provided useful.
In our opinion, Nextion is a great display that makes the process of creating user interfaces simple and easy. Although the Nextion Editor has some issues and limitations it is a great choice for building interfaces for your electronics projects. We have a project on how to create a Node-RED physical interface with the Nextion display and an ESP8266 to control outputs. Feel free to take a look.
Do you remember the (almost) full screen sized flicker free and ultra rapid gauge we designed in June? And this without using the built-in Gauge component? If not, it"s time to read this article first, to understand today"s improvements. The June 2022 version does its job perfectly, the needle movement is quick and smooth, and other components can be added close to the outer circle without flickering since there is no background which needs constantly to be redrawn. But there was a minor and only esthetic weak point: The needle was a 1px thin line, sometimes difficult to see. Thus, already a short time after publishing, some readers contacted me and asked if there were a way to make the needle thicker, at least 2 pixels.Recently, when playing with a ESP32 based NodeMCU 32S and especially with its WiFi configuration, I did as (I guess) everybody does: I loaded an example sketch to learn more about the Wifi library. When you set up the ESP32 as an access point, creating its own wireless network, everything is pretty straightforward. You can easily hard code the Wifi name (SSID) and the password. But what about the client mode ? Perhaps one needs to use it in different environments. And then, a hard coded network name and password are definitively not the best solution. Thus, I thought, why not use a Nextion HMI for a dynamic WiFi setup functionality?Although the Nextion MIDI I/O interface has been primarily designed as an add-on for Nextion HMI screens to transform these in fully autonomous MIDI devices as shown in previous blog posts here, it is also of great use for any Arduino based electronic music project! Many MIDI projects for Arduino suffer from a lack good hardware support. There are sophisticated code, excellent libraries and an infinity of use cases, but afterwards, things tend not to work in a rather rough environment in the studio or on stage. That"s because two resistors and a few Dupont wires on a breadboard besides the Arduino are not really an interface which could drive your Synth, Sequencer, or Drum machine over a 5m long MIDI cable.First of all, let"s open a virtual bottle of Champaign - this is my 100st Sunday Blog post!!! Now, let"s celebrate this with a new functionality: Have your Nextion HMI computing square roots with just 21 lines of code and 5 integer variable components, everything nicely packed in a ready-to-use page template - the Nextion equivalent of a library as seen over the last weeks. The advantage is that you can add this function to a page by designing the latter by starting with importing the appropriate template and then customizing it as you would any other page of your project. And if your project doesn"t need it - let it away and save memory! In my humble opinion, that"s a way more interesting solution than requesting the integration of everything into the firmware, with all the runtime memory constraints.Did you ever see the need to increment or decrement values, for example on a settings screen? Did you want to avoid multiple clicks and would have preferred just keeping a button pressed while the value would continue to increment or decrement? And which would go at a higher speed when pressing the button for a longer time? After reading this article, you"ll know how to do that with your beloved Nextion HMI! And no, there is NO need to add to the event code of each button! Only 4 invisible components and less than 20 lines of code are required to transform all buttons on a page into repeater buttons. That is so compact that we"ll pack these into a single page template and export it. From then on, if you need buttons with accelerated auto-repeat on a page, go to the page pane, but instead of adding a blank page, import the template and you are done. Automatically, without an additional line of code, all buttons will magically have the repeat functionality!Two weeks ago, we discussed a few password security strategies. If you haven’t already, please read that before continuing. While all the basic mechanisms have been explained and code examples have been shown, using these in your own project might seem difficult since there are so many places where code snippets were to add. Thinking about that latter aspect and how to ease the re-utilization, I suddenly had an inspiration: Why not follow the example of the keyboard system pages which are automatically added to your project when you link a text or number component to one of the built-in keyboard screens?
its originally made for the arduino UNO boards, but it can be used with mega. there are two main problems while using it with the uno, the storage memory, and the pins usage! It,s hard to use the unused pins (by the screen) because all the pins are coverd with the sheild! for that resons we use better the MEGA board.
this library is one of the big libraries, it takes about 30kb of the arduino flash memory! this is too much for arduino uno! you can almost add nothing to the code with this library.
the MEGA has256kb of program memory, this is very good space and can do very good things with it, in addition, there are 54 pin most of them still free to use, and the analog just 5 are taken of 16. this is most often more that enough for most projects.
open the UTFT library file to see something similar to the first pic, then open the folder named "hardware", you should see the families of the mcu"s (AVR,ARM and pic32) the mega and uno are from the avr family, so we open it.
now you should see the arduino"s mcu that uses(ie. the uno uses the Atmega_328p ) and you can see a header file named "HW_AVR_defines" ... this is our target.. open it with some program (CODE :: BLOCKs is used here).
one quick hint, the UTFT Library is very big lib that operates depending on the board or mcu that"s used, and the module that is defined. the main utft file call the definitions of the hardware depending on your entries , so when you choose from tools-board---> arduino mega . it call the defintions of the arduino mega, to know the pins connection to the module you have sellected too.
what we gonna do here, is to edit something in the library that make the mega, uses the right defentions when you use an uno sheild with it. The utft library developer add this feature to the library, all we have to do, is to enable it.
the tft screen that we used is named on the module 2.8 ITDB02 we should find its module name in the library, open the library file and go to the documentation , you should see three files
this is our target, this file has the names of the modules and sheilds that is supported by this library, you can see in it a list of module names and module names for the UTFT which you should use to define your module.
then we name the module, which we found it called ITDB28 , then we sellect the pins, i"m not going to explain what these pins are(it"s noted in the data sheet and UTFT_Requirement.pdf file), but you should know that for this sheild, it"s located on the A5,A4,A3 and A2 pins.
when you open one of the examples that"s included in the library, you will get a note about what pins you should use, don"t forget that you use arduino uno sheild, on mega board!
for the UTFT definition, just do as the previous step, for the UTouch object definition, there ia are some change you need to make, you see the is in the note, to use arduino uno board, you should call the configuration :
this configuration is valid for arduino uno (pin 15 = A1 and pin 14 = A0) and further more for another module, this module has the pin 9 and 8 reversed!
actually, this code is used for calibrate the screen, after following the instruction on the screen, you will get the result of the test, it"s the x,y calibration, you can ooen the utft library source code , find those parameters and edit them! however it"s not essential thing to do, but it suppose to give you more accuracy whit your touch coordinations!
Hello I"m Brian from Limburg the Netherlands. I"ve orded a Velleman VMA412 2,8 inch TFT touchscreen display. If I downloaded a scetch my display remains white. While a paint scetch was uploaded once saying my TFT screen appears to be a ILI9341 type and when programming with that kind of display my program dos"nt match. My question is there any driver for this kind of display? My kindly regards.0
Hallo from germany.I have a little problem , my tft stays white . I have uncommented the Mega board definition. But I don´t know wihtch modul name i must write in the
Hello Antonio, did You solve your problem yet? For me it was ITDB28 (for the Mega and should use A5,A4,A3,A2). But I still have the same blanc display.
i can suggest something! maybe you can use the arduino mega to drive the tft, and connect it to the raspberry bi by serial or something, this way you can uss the function of the pi and the the easy drive of the mega!
Purchased a 400×240 pixel graphic touch-capable display (new link) module plus its accompanying Arduino MEGA-compatible shield from iTead Studio. The shield has been updated to version 2. See bottom of post for more information.
The shield has, in addition to the connections to the display module, connections to a battery-backed real time clock that has been implemented in the shield. The display module consists of the display panel (the screen), a touch controller and a SD Card socket.
The ITDB02 LCD module is work in 3.3V voltage level and it’s not compatible with Arduino MEGA pins, so we make a shield for Arduino MEGA. Now user can directly plug the ITDB02 in the shield and stand on the Arduino MEGA board.
In reality, the ITDB02 module IS fully compatible with Arduino MEGA pins. The shield just makes it much, much easier to connect to the Arduino board. With respect to the 3.3 power, the shield merely connects the Arduino 5V power pin to the display module’s VCC pin which feeds a local LDO regulator that generates the required 3.3V.
(Update 9/7/12): The resistors in the shield are there to limit the current to the protection diodes in the display module, so they are just in series with the signal lines. The inputs of the display must be 5V tolerant even thought the display operates at 3.3V. The better solution is to implement a level conversion 5V->3.3V and this has been done in the new version of the shield. More information in the Arduino forums [link]
Full color, 400×240 pixel TFT screen with a 16:9 widescreen aspect ratio. S/W supports 24-bit RGB color. The ITDB02-3.2WD uses the HX8352-A controller
The library (“UTFT” for “Universal TFT”) for this display has been developed by Mr Karlsen and is available here: [link]. Support for the 240×400 pixel display is available with version 1.10 and higher as this is a new display. The software also supports the wiring of the Mega shield shown above. (The control pins are assigned through s/w, though).
The controller for this screen is HX8352-A (apparently it replaces the ILI9327 controller). You will need to enter the controller model in the code as “HX8352A”. The enclosed documentation in the code tells you more. In addition, you need to know this controller model to take advantage of “memory saving” as specified in memorysaver.h
The library is ITDB02-TOUCH, also developed by Mr. Karlsen: [link]. Is also compatible with the wiring of the Mega shield shown above and any other wiring configuration as the 5 interface wires are assignable through s/w.
Mr. Karlsen also developed a library for the SD Card socket/reader [link]. However it is limited to FAT16 formatted SD cards up to 2GB in size and 8.3 characters file names. There is also the Arduino SD Library [link] that supports both FAT16 and FAT32 file systems on standard SD cards and SDHC cards. It is also limited to 8.3 characters file names. There is also a tutorial on SD Card interfacing at LadyAda [link].
Even though the shield takes up all the pins in the Arduino MEGA board, not all the pins are used for the display module and the real time clock. You can connect other devices (e.g. soldering wires) to the free pins.
Obviously the shield matches the 40-pin output of the display module with the pins of the Arduino. In addition, the shield has a real time clock that is separate from the display module and exports the interface pins of this device as well.
These are the pins that are used by the shield. You can refer to the pin basic pin mapping [link] and the manual in pdf [link] (I saved a local copy because this is now a discontinued product: ITDB02MEGAshield_DS ):
Note: a readier discovered an error in diagram for the SD pins. Look at the pin assignment in the following diagram from the vendor’s website. The diagram corresponds to the new V2 shield, thus there is no real time clock (which is an I2C device). However if you use the shield, you don’t have to worry about the pin assignments except to figure out which pins are free for other functions:
There is sample code for the 400×240 display in the arduino-1.0\libraries\UTFT\examples\Arduino folder. Comment the code for UNO and un-comment the code for MEGA (follow the instructions written in the code). Modify the UTFT function with the model for your controller. For the above display I used “HX8352A”
The shield has been replaced with a newer mode. It does away with the real-time clock chip and replaces the resistors with logic chips (74xx541) for buffering and voltage level conversion, which is a better implementation. In addition it has a input voltage selection switch to make it compatible with Arduino (5v operation) or ChipKit (3.3v operation).
Possibly the buffer chip used in the new shield is a part similar to 74LCX541 which has 5V tolerant inputs and output. This design further protects the display module.
The resistors that were used in the previous version of the shield are there to limit the current to the protection diodes in the display module, so they are just in series with the signal lines. Based on the implementation of the shield, the inputs of the display must therefore be 5V tolerant even thought the display operates at 3.3V. The better solution is to implement a level conversion 5V->3.3V as implemented in the new version of the shield. More information in the Arduino forums [link]
The old version of the shield is still available in kit form: [link] for US $5.50. However it is missing the 3.3V regulator and the SD card reader (so maybe not such a good deal)
1 1 Tech Support Arduino 3.2 TFT Touch Mega Shield Overview The Arduino 3.2 TFT Touch Mega Shield is designed for all the Arduino Mega compatible boards. It works in 3.3V voltage level. It can be directly plugged on the Arduino Mega and other compatible boards. It will offer display, touch and storage functions for the Arduino Mega board. Features Compatible with 3.3/5V operation voltage level Compatible with UTFT library With SD Card Socket Arduino 3.2 TFT Touch shield 1.0 iteadstudio.com
2 2 Tech Support Specifications PCB size 79.3mm X 57.5mm X 1.6mm Indicators - Power supply compatible with Arduino Mega Communication Protocol - RoHS Yes Electrical Characteristics Specification Min Type Max Unit Power Voltage VDC Input Voltage VH V Input Voltage VL V Arduino 3.2 TFT Touch shield 1.0 iteadstudio.com
3 3 Tech Support Hardware Figure 1 Bottom View Pin map of Arduino 2.8 TFT Touch Shield Arduino Mega PIN Description D2 T_IRQ D3 T_DOUT D4 T_DIN D5 T_CS D6 T_CLK D22 DB8 D23 DB9 D24 DB10 D25 DB11 D26 DB12 D27 DB13 D28 DB14 Arduino 3.2 TFT Touch shield 1.0 iteadstudio.com
4 4 Tech Support D29 DB15 D30 DB7 D31 DB6 D32 DB5 D33 DB4 D34 DB3 D35 DB2 D36 DB1 D37 DB0 D38 RS D39 WR D40 CS D41 RST D50 SD_MISO D51 SD_MOSI D52 SD_SCK D53 SD_NSS The Arduino 3.2 Touch shield uses the SSD1289 controller, it support 16bit data interface. The touch IC is XPT2046. Operation voltage level setting switch When using the Arduino 3.2 TFT Touch shield with 5V operation level development board like Arduino MEGA and so on, set the operation voltage level switch to 5V side. When using the Arduino 3.2 TFT Touch shield with 3.3V operation level development board set the operation voltage level switch to 3.3V side. Software This shield is compatible with UTFT library for Arduino Mega, chipkitmax32 and their compatible boards. You can down load the library here http//henningkarlsen.com/electronics/library.php?id=52 Revision History Rev. Description Release date v1.0 Initial version Arduino 3.2 TFT Touch shield 1.0 iteadstudio.com
5 SOLOMON SYSTECH SEMICONDUCTOR TECHNICAL DATA SSD1289 Product Preview 240 RGB x 320 TFT Driver Integrated Power, Gate and Source Driver With RAM This document contains information on a product under development. Solomon Systech reserves the right to change or discontinue this product without notice. http// SSD1289 Series Rev 0.32 P 1/60 Dec 2005 Copyright 2005 Solomon Systech Limited
6 1 General Description SSD1289 TFT Driver is an all in one driver that integrated the RAM, power circuits, gate driver and source driver into single chip. It can drive a 262k color a-tft panel with resolution of 240 RGB x 320. It also integrated the controller function and consists of up to 172,800 bytes (240 x 320 x 18 / 8) Graphic Display Data RAM (GDDRAM) such that it interfaced with common MCU through 8/9/16/18-bits 6800-series / 8080-series compatible Parallel Interface or Serial Interface and stored the data in the GDDRAM. Auxiliary 18-bits video interface (VSYNC, HSYNC, DOTCLK, ENABLE) are integrated into SSD1289 for displays animated image. SSD1289 embeds DC-DC Converter and Voltage generator to provide all necessary voltage required by the driver with minimum external components. A Common Voltage Generation Circuit is included to drive the TFT-display counter electrode. An Integrated Gamma Control Circuit is also included that can be adjusted by software commands to provide maximum flexibility and optimal display quality. SSD1289 can be operated down to 1.16V and provide different power save modes. It is suitable for any portable battery-driven applications requiring long operation period with compact size. 2 FEATURES Power Supply V DD = 1.65 V 1.95V (non-regulated input for logic) V DDIO = 1.4 V 3.6V (regulated input for logic) V CI = 2.5V 3.6V (power supply for internal analog circuit) Maximum Gate Driving Output Voltage 30V p-p Source Driving Output Voltage 0-5V Low Current Sleep Mode and 8-color display mode for power saving Display Size 240 RGB x 320 Display Color Support 262k colors a-tft displays 8/9/16/18-bits 6800-series / 8080-series Parallel Interface, Serial Peripheral Interface 18-bit RGB-Interface for animated displays (VSYNC, HSYNC, DOTCLK, DEN, and D0-17) On-Chip 172,800 bytes (240x320x18/8) Graphic Display Data RAM RAM write synchronization function Support Line and Frame Inversion Software selection on Center Screen Scrolling, Top Screen Scrolling, Bottom Screen Scrolling and Whole Screen Scrolling. Source and Gate scan direction control On-Chip Voltage Generator On-Chip DC-DC Converter up to 6x / -6x Programmable Gamma Correction Curve Non-Volatile Memory (OTP) for VCOM calibration Programmable Common Electrode Voltage amplitude and level for Cs on common structure Support Cs on gate structure Available in COG package Solomon Systech Dec 2005 P 2/60 Rev 0.32 SSD1289 Series
7 3 ORDERING INFORMATION Table 1 Ordering Information Ordering Part Number Source (x RGB) Gate Package Form Reference SSD1289Z Gold Bump Die 4 BLOCK DIAGRAM VCOM G0 to G319 S0 to S719 VCI VDDEXT VDDIO REGVDD SHUT REV VDD regulator circuit Regulator Circuit Gamma / Grayscale Voltage Generator Source driver Switches Network VCI CN CP C1N C1P C2N C2P C3N C3P CXP CXN CYP CYN OSC1 VSS/AVSS/ DVSS Booster Circuit OSC Regulator Circuit VGH VGOFFH VGOFFL GateDriver VLCD63 Address Counter Timing Generation System Interface / RGB Interface Data Latches GDDRAM WSYNC RES PS0-3 E CS R/W D/C D[0-17] DEN DOTCLK HSYNC VSYNC TB RL CM BGR GD Figure 1. SSD1289 Block Diagram Description SSD1289 Series Rev 0.32 P 3/60 Dec 2005 Solomon Systech
8 5 DIE PAD FLOOR PLAN Die Information Die Size x 1600 μm 2 Die Thickness 406 ±25µm Bump Height 15 µm (Typ.) Tolerance 3 µm within die Bump Size 22 x 115 µm 2 (Gate and source outputs) Pad Pitch 24 µm, stagger Bump Size 55 x 117 µm 2 (Inputs) Pad Pitch 85 µm, straight Pin 1 Pin 1336 Output Pad Pitch (Gate and source) Alignment Marks Center (11802,715.5) Center (-11802,715.5) Size x μm 2 Size x μm Pin Pin Center (-11740,-549.5), (11740,-549.5) Size 180 x 180 μm 2 Figure 2. SSD1289 Pad Arrangement (Bump face up) Solomon Systech Dec 2005 P 4/60 Rev 0.32 SSD1289 Series
10 Pad# Signal X-pos Y-pos Pad# Signal X-pos Y-pos Pad# Signal X-pos Y-pos 202 VSSRC VCIX G VSSRC CYP G CDUM CYP G CDUM CYP G CDUM CYP G CDUM CYP G VSS CYP G VSS CYN G VSS CYN G VSS CYN G VSS CYN G VSS CYN G VSS CYN THROUGH VSS VCHS THROUGH AVSS VCHS NC AVSS VCHS NC AVSS VCHS NC AVSS VCHS NC AVSS VCHS NC AVSS CXN NC VDDIO CXN NC VDDIO CXN NC VDDIO CXP DUMMY VDDIO CXP VGL VCI CXP DUMMY VCI VGOFFH DUMMY VCI VGOFFH THROUGH VCI VCOM THROUGH VCI VCOM G VCI VCOM G VCIP VCOM G VCIP VCOMR G VCIP NC G VCIP NC G VGOFFHL GTESTR G VGOFFHL G G NC G G NC G G VLCD G G VLCD G G VLCD G G VLCD G G VCOML G G VCOML G G VCOML G G VCOML G G VCOMH G G VCOMH G G VCOMH G G VCOMH G G VCIM G G VCIM G G VCIM G G VCIM G G NC G G NC G G VCI G G VCI G G VCI G G VCI G G VCIX2J G G VCIX2J G G VCIX2G G G VCIX2G G G VCIX G G VCIX G G VCIX G G Solomon Systech Dec 2005 P 6/60 Rev 0.32 SSD1289 Series
16 7 Pin Description Table 2 - SSD1289 Pin Function Description Name Type Function Description CM DEN VSYNC HSYNC DOTCLK GAMAS0 GAMAS1 GAMAS2 SHUT Input Input Input Logic Control Display Timing Signals Logic Control Input pin to select 262k-color or 8-color display mode. After entered 8-color display mode, the driver will switch to Frame-Inversion-Mode, and only MSB of the data Red, Green and Blue will be considered. - Connect to V DDIO for 8-color display mode - Connect to V SS for 262k-color display mode Display enable pin from controller. Data will be treated as dummy regardless the DEN status during front/back porch setting at registers R16 and R17. Frame synchronization signal. - Fixed to V DDIO or V SS if not used Line synchronization signal. - Fixed to V DDIO or V SS if not used Dot-clock signal and oscillator source. A non-stop external clock must be provided to that pin even at front or black porch non-display period. Gama selection pin. This pin should be connected to Vdd / Vss Gama selection pin. This pin should be connected to Vdd / Vss Gama selection pin. This pin should be connected to Vdd / Vss Display shut down pin to put the driver into sleep mode. A sharp falling edge must be provided to such pin when IC power on. - Connect to V DDIO for sleep mode - Connect to V SS for normal operating mode RL GD TB BGR REV CAD PS0 PS1 PS2 PS3 DC /RD (E) /WR ( WR ) D0-D17 WSYNC Input Input Input Input/ Output Output Panel Mapping Controls Interface Selection Logic Control Data bus Logic Control Input pin to select the Source driver data shift direction. - Connect to V DDIO for display first RGB data at S0-S2 - Connect to V SS for display first RGB data at S719-S717 Input pin to select the 1 st output Gate - GD = 0, G0 is 1 st output Gate, Gate sequence G0, G1, G2, G3,, G318, G319 - GD = 1, G1 is 1 st output Gate, Gate sequence G1, G0, G3, G2,, G319, G318 Input pin to select the Gate driver scan direction. - Connect to V DDIO for Gate scan from G0 to G319 - Connect to V SS for Gate scan from G319 to G0 Input pin to select the color mapping. - Connect to V DDIO for Blue-Green-Red mapping - Connect to V SS for Red-Green-Blue mapping (Refer to S0-S719 pin description on Page 14 for details) Input pin to select the display reversion. - Connect to V DDIO mapping data 0 to maximum pixel voltage for normal white panel - Connect to V SS mapping data 0 to minimum pixel voltage for normal black panel Panel structure selection pin. - Connect to V DDIO if Cs on gate structure is used - Connect to V SS if Cs on common structure is used PS(30) = wires MCU Serial interface wires MCU Serial interface bits 68 parallel interface bits 68 parallel interface 1 16 bits 80 parallel interface 0 8 bits 80 parallel interface bits 68 parallel interface bits 68 parallel interface bits 80 parallel interface 0 9 bits 80 parallel interface bits RGB interface bits RGB interface + 4-wires SPI bits RGB interface + 4-wires SPI Data or command 68-system E (enable signal) 80-system /RD (read strobe signal) Serial mode Not used and should be connected to V DDIO or V ss 68-system /WR (indicates read cycle when High, write cycle when Low) 80-system WR (write strobe signal) Serial mode Not used and should be connected to V DDIO or V ss For parallel mode, 8/9/16/18 bit interface. For generic mode, RGB interface. Please refer to Section 14 Interface Mapping for definition. Unused pins must be float or connect to VSS. Ram Write Synchronization output Solomon Systech Dec 2005 P 12/60 Rev 0.32 SSD1289 Series
17 Name Type Function Description REGVDD RES CS Input Input Logic Control System Reset Input pin to enable internal vdd regulation. - Connect to V DDIO if the supply voltage for V DDIO is not within the range 1.65V 1.95V. Internal vdd regulator will be enabled. - Connect to V SS if the supply voltage for V DDIO is within the range 1.65V 1.95V. Internal vdd regulator will be disabled. System reset pin. - Connect to V DDIO when not used Chip select pin of serial interface. - Leave it OPEN when not used SCK SDI Input Serial Interface Clock pin of serial interface. - Leave it OPEN when not used Data input pin in serial mode. - Leave it OPEN when not used SDO Output Data output pin in serial mode. - Leave it OPEN when not used V DD LV VDD V DDRAM LV VDDR V DDEXT V DDIO Power Power Power Power Power Power Power Supply for Logic Circuits Regulator output for logic circuits Power Supply for RAM Regulator output for RAM Power for internal V DD regulator Power supply for logic I/O Voltage supply pin for internal logic. Do not connect to any power supply. Connect to LV VDD. Internal regulator output. Connect to V DD. Voltage supply pin for internal RAM. Do not connect to any power supply. Connect to LV VDDR Internal regulator output. Connect to V DDRAM. Voltage input pin for logic I/O. - Connect to system V DD SSD1289 Series Rev 0.32 P 13/60 Dec 2005 Solomon Systech
18 Name Type Function Description V SS System ground pin of the IC. - Connect to system ground AV SS Ground of Grounding for analog circuit. - Connect to system ground Power the Power Grounding for analog circuit. This pin requires a noise free path for providing accurate V SSRC Supply LCD driving voltages. - Connect to system ground V CHS Grounding for booster circuit. - Connect to AV SS V CI V CIP V CI2 V CIX2 V CIX2J V CIX2G V COMR V COMH V COML V LCD63 V GH V GL V GOFFH CXP CYP CP C1P C2P C3P CXN CYN CN C1N C2N C3N CDUM0 CDUM1 V GOFFHL Power Output Power Input Output Output Input Power Supply for Analog Circuits Booster voltages Voltage for analog External Reference Voltages for VCOM Signal LCD Driving Voltages Booster and Stabilization Capacitors EXTCLK Input OSC input TESTA TESTB TESTC I/O IC Testing Signal Booster input voltage pin. - Connect to voltage source between 2.5V to 3.6V Voltage supply pin for analog circuit. This pin requires a noise free path for providing accurate LCD driving voltages. - Connect to same source of V CI Negative voltage of V CI. - Connect a capacitor for stabilization Equals to 2x V CI - Connect a capacitor for stabilization They are the power supply used by on chip analog blocks and VGH/VGL dcdc. Connect to V CIX2 on FPC. This pin provides voltage reference for internal voltage regulator when register VDV[40] of Power Control 4 set to Connect to an external voltage source for reference This pin indicates a HIGH level of VCOM generated in driving the VCOM alternation. - Connect a capacitor for stabilization This pin indicates a LOW level of VCOM generated in driving the VCOM alternation. - Connect a capacitor for stabilization This pin is the maximum source driver voltage. - Connect a capacitor for stabilization A positive power output pin for gate driver. - Connect a capacitor for stabilization A negative power output pin for gate driver. - Connect a capacitor for stabilization When the VGOFF alternation is driven, this pin indicates a high level of VGOFF. - Connect a capacitor for stabilization if Cs on gate structure is used - This pin can be open if Cs on common structure is used - Connect a capacitor to CXN - Connect a capacitor to CYN - Connect a capacitor to CN - Connect a capacitor to C1N - Connect a capacitor to C2N - Connect a capacitor to C3N - Connect a capacitor to CXP - Connect a capacitor to CYP - Connect a capacitor to CP - Connect a capacitor to C1P - Connect a capacitor to C2P - Connect a capacitor to C3P - Connect a capacitor to V SS - Connect a capacitor to V SS - Connect a capacitor to V COM if Cs on gate application. A clock input pin for internal oscillator. Connect to VSS when using the internal oscillator. Test pin of the internal circuit. - Leave this pin open and insert test point in FPC Test pin of the internal circuit. - Leave this pin open and insert test point in FPC Test pin of the internal circuit. - Leave this pin open and insert test point in FPC Solomon Systech Dec 2005 P 14/60 Rev 0.32 SSD1289 Series
19 Name Type Function Description VCOM A power supply for the TFT-display common electrode. G0-G319 Gate driver output pins. These pins output V GH, V GOFFH or V GOFFL level. LCD Driving Output Source driver output pins. Signals S(3n) display Red if BGR = LOW, Blue if BGR = HIGH. S0-S719 S(3n+1) display Green. S(3n+2) display Blue if BGR = LOW, Red if BGR = HIGH. NC These pins must be left open and cannot be connected together THROUGH DUMMY Through line Dummy pads. Use for panel measurement. There is no connection inside the IC. Pad 9 is connected to pad 1331 on panel (through1 and through7) Pad 10 is connected to pad 1332 on panel (through2 and through8) Pad 348 is connected to pad 362 on panel (through3 and through5) Pad 349 connected to pad 363 on panel (through4 and through6) Floating pins and no connection inside the IC. These pins should be open. SSD1289 Series Rev 0.32 P 15/60 Dec 2005 Solomon Systech
20 8 Block Function Description System Interface The System Interface unit consists of three functional blocks for driving the 6800-series parallel interface, 8080-series parallel interface, 3-lines serial peripheral interface and 4-lines serial peripheral interface. The selection of different interface is done by PS3, PS2, PS1 and PS0 pins. Please refer to the pin descriptions on page 12. a) MPU Parallel 6800-series Interface The parallel Interface consists of 18 bi-directional data pins (D 17 D 0 ), R / W, D/ C, E and CS. R / W input high indicates a read operation from the Graphical Display Data RAM (GDDRAM) or the status register. R / W input low indicates a write operation to Display Data RAM or Internal Command Registers depending on the status of D/ C input. The E input serves as data latch signal (clock) when high provided that CS is low. Please refer to Parallel Interface Timing Diagram of 6800-series microprocessors. In order to match the operating frequency of the GDDRAM with that of the MCU, pipeline processing is internally performed which requires the insertion of a dummy read before the first actual display data read. This is shown in the following diagram. R/W#(WR#) E(RD#) DATA BUS N n n+1 n+2 write column address dummy read data read1 data read 2 data read 3 Figure 3 Read Display Data b) MPU Parallel 8080-series Interface The parallel interface consists of 18 bi-directional data pins D 17 D 0, RD, WR, D/ C and CS. RD input serves as data read latch signal (clock) when low provided that CS is low. Whether reading the display data from GDDRAM or reading the status from the status register is controlled by D/ C. WR input serves as data write latch signal (clock) when low provided that CS is low. Whether writing the display data to the GDDRAM or writing the command to the command register is controlled by D/ C. A dummy read is also required before the first actual display data read for 8080-series interface. c) MPU 4-lines Serial Peripheral Interface The 4-lines serial peripheral Interface consists of serial clock SCK, serial data SDA, D/ C and CS. SDA is shifted into 8-bit shift register on every rising edge of SCK in the order of data bit 7, data bit 6 data bit 0. D/ C is sampled on every eighth clock to determine whether the data byte in the shift register is written to the Display Data RAM or command register at the same clock. d) MPU 3-lines Serial Peripheral Interface The operation is similar to 4-lines serial peripheral interface while altogether 9-bits will be shifted into the shift register on every ninth clock in sequence D/ C is not used. There are D/ C bit, D7 to Solomon Systech Dec 2005 P 16/60 Rev 0.32 SSD1289 Series
21 D0 bit. The D/ C bit (first bit of the sequential data) will determine the following data byte in the shift register is written to the Display Data RAM ( D/ C bit = 1) or the command register ( D/ C bit = 0) series Parallel 8080 series Parallel MCU Serial Interface Interface Interface Data Read 18/16/9/8-bits 18/16/9/8-bits No Data Write 18/16/9/8-bits 18/16/9/8-bits 8-bits Command Read Status only Status only No Command Write Yes Yes 8-bits Table 3 - Data bus selection modes RGB Interface The RGB Interface unit consists of D17-D0, HSYNC, VSYNC, DEN and DOTCLK for animated image display. When the RGB Interface is selected, D17-D0 is set to be generic interface. Address Counter (AC) The address counter (AC) assigns address to the GDDRAM. When an address set instruction is written into the IR, the address information is sent from the IR to the AC. After writing into the GRAM, the AC is automatically incremented by 1 (or decremented by 1). After reading the data, the AC is not updated. A window address function allows for data to be written only to a window area specified by GRAM. Graphic Display Data RAM (GDDRAM) The GDDRAM is a bit mapped static RAM holding the bit pattern to be displayed. The size of the RAM is 240 RGB x 320 x 18 / 8 = 518,400 bytes. For mechanical flexibility, re-mapping on both Segment and Common outputs can be selected by software. Please refer to the command Data Output/Scan direction for detail description. Four pages of display data forms a RAM address block and stored in the GDDRAM. Each block will form the fundamental units of scrolling addresses. Various types of area scrolling can be performed by software program according to the command Set area Scroll and Set Scroll Start. Gamma/Grayscale Voltage Generator The grayscale voltage circuit generates a LCD driver circuit that corresponds to the grayscale levels as specified in the grayscale gamma-adjusting resistor. 262,144 possible colors can be displayed when 1 pixel = 18 bit. For details, see the gamma-adjusting resistor. Booster and Regulator Circuit These two functional blocks generate the voltage of VGH, VGOFFL, VCOM levels and Vlcd0~63 which are necessary for operating a TFT LCD. Oscillation Circuit (OSC) This module is an On-Chip low power RC oscillator circuitry. The oscillator generates the clock for the DC-DC voltage converter. This clock is also used in the Display Timing Generator. Data Latches This block is a series of latches carrying the display signal information. These latches hold the data, which will be fed to the HV Buffer Cell and Level Selector to output the required voltage level. SSD1289 Series Rev 0.32 P 17/60 Dec 2005 Solomon Systech
22 9 COMMAND TABLE Table 4 - Command Table Reg# Register R/W D/C IB15 IB14 IB13 IB12 IB11 IB10 IB9 IB8 IB7 IB6 IB5 IB4 IB3 IB2 IB1 IB0 R Index 0 0 * * * * * * * * ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0 SR Status Read 1 0 L7 L6 L5 L4 L3 L2 L1 L R00h Oscillation Start OSCEN Driver output R01h control RL REV CAD BGR SM TB MUX8 MUX7 MUX6 MUX5 MUX4 MUX3 MUX2 MUX1 MUX0 LCD drive AC R02h control FLD ENWS B/C EOR WSMD NW7 NW6 NW5 NW4 NW3 NW2 NW1 NW0 R03h Power control (1) 0 1 DCT3 DCT2 DCT1 DCT0 BT2 BT1 BT0 0 DC3 DC2 DC1 DC0 AP2 AP1 AP0 0 Compare register R05h (1) 0 1 CPR5 CPR4 CPR3 CPR2 CPR1 CPR0 0 0 CPG5 CPG4 CPG3 CPG2 CPG1 CPG0 0 0 Compare register R06h (2) CPB5 CPB4 CPB3 CPB2 CPB1 CPB0 0 0 R07h Display control PT1 PT0 VLE2 VLE1 SPT 0 0 GON DTE CM 0 D1 D0 Frame cycle R0Bh control 0 1 NO1 NO0 SDT1 SDT0 0 EQ2 EQ1 EQ0 DIV1 DIV0 SDIV SRTN RTN3 RTN2 RTN1 RTN0 R0Ch Power control (2) VRC2 VRC1 VRC0 R0Dh Power control (3) VRH3 VRH2 VRH1 VRH0 R0Eh Power control (4) VCOMG VDV4 VDV3 VDV2 VDV1 VDV Gate scan start ROFh position SCN8 SCN7 SCN6 SCN5 SCN4 SCN3 SCN2 SCN1 SCN0 R10h Sleep mode SLP VS R11h Entry mode 0 1 DFM1 mode DFM0 TRANS OEDef WMode DMode1 DMode0 TY1 TY0 ID1 ID0 AM LG2 LG1 LG0 R16h Horizontal Porch 0 1 XL7 XL6 XL5 XL4 XL3 XL2 XL1 XL0 HBP7 HBP6 HBP5 HBP4 HBP3 HBP2 HBP1 HBP0 R17h Vertical Porch 0 1 VFP7 VFP6 VFP5 VFP4 VFP3 VFP2 VFP1 VFP0 VBP7 VBP6 VBP5 VBP4 VBP3 VBP2 VBP1 VBP0 R1Eh Power control (5) notp 0 VCM5 VCM4 VCM3 VCM2 VCM1 VCM0 RAM data write 0 1 R22h RAM data read 1 1 Data[170] mapping depends on the interface setting RAM write data R23h mask (1) 0 1 WMR5 WMR4 WMR3 WMR2 WMR1 WMR0 0 0 WMG5 WMG4 WMG3 WMG2 WMG1 WMG0 0 0 RAM write data R24h mask (2) WMB5 WMB4 WMB3 WMB2 WMB1 WMB0 0 0 R28h VCOM OTP (1) R29h VCOM OTP (2) R30h γ control (1) PKP12 PKP11 PKP PKP02 PKP01 PKP00 R31h γ control (2) PKP32 PKP31 PKP PKP22 PKP21 PKP20 R32h γ control (3) PKP52 PKP51 PKP PKP42 PKP41 PKP40 R33h γ control (4) PRP12 PRP11 PRP PRP02 PRP01 PRP00 R34h γ control (5) PKN12 PKN11 PKN PKN02 PKN01 PKN00 R35h γ control (6) PKN32 PKN31 PKN PKN22 PKN21 PKN20 R36h γ control (7) PKN52 PKN51 PKN PKN42 PKN41 PKN40 R37h γ control (8) PRN12 PRN11 PRN PRN02 PRN01 PRN00 R3Ah γ control (9) VRP14 VRP13 VRP12 VRP11 VRP VRP03 VRP02 VRP01 VRP00 R3Bh γ control (10) VRN14 VRN13 VRN12 VRN11 VRN VRN03 VRN02 VRN01 VRN00 Vertical scroll R41h control (1) VL18 VL17 VL16 VL15 VL14 VL13 VL12 VL11 VL10 Vertical scroll R42h control (2) VL28 VL27 VL26 VL25 VL24 VL23 VL22 VL21 VL20 Horizontal RAM R44h address position 0 1 HEA7 HEA6 HEA5 HEA4 HEA3 HEA2 HEA1 HEA0 HSA7 HSA6 HSA5 HSA4 HSA3 HSA2 HSA1 HSA0 Vertical RAM R45h address start VSA8 VSA7 VSA6 VSA5 VSA4 VSA3 VSA2 VSA1 VSA0 position Vertical RAM R46h address end position VEA8 VEA7 VEA6 VEA5 VEA4 VEA3 VEA2 VEA1 VEA0 Solomon Systech Dec 2005 P 18/60 Rev 0.32 SSD1289 Series