Team Member

Jingyi Zhang, jyzhang@gatech.edu

Jian Yuan, jian.yuan@gatech.edu

Brief Discription


The uVGA-III board from 4D Systems.

The uVGA-III is a compact and cost effective VGA Graphics Engine packed with plenty of features, ready to become the GUI for your target application, and capable of being an interface controller for a number of applications. They are available from Sparkfun.

In Serial mode, uVGA-III can be used as a slave serial graphics controller. This enables the user to use the microcontroller or serial device as the Host. By default, each module shipped from the 4D Systems factory will come pre-programmed ready for use in the Serial mode.


Datasheet of the uVGA-III board.

Datasheet of the PICASO processor.

Hello World!

Here is a uVGA II demo program to try:

Import programuVGAIII_demo

A demo program using uVGAIII board.




Here is the wiring for the demo program.

mbeduVGA IIIVGA adapter cable
p10(J3)Red line


In the drawing above, the pins are labeled from the uVGA-III perspective with TX and RX pins. Mbed RX goes to uVGA-III TX and mbed TX goes to uVGA-III RX. So mbed TX goes to the middle pin on the connector which is the uVGA-III's RX pin. The included cable seen below is plugged into the top row of pins and plugged into a breadboard using the male header pins for hookup. The picture below is a female one. Note that on the cable silkscreen seen in the image below RX and TX have been swapped to indicate the connections needed to the microprocessor pins.


Below is the VGA adapter cable.


For the other part of pins on the uVGA-III board, that is J3, we just use a VGA adapter cable to connect the uVGA-III board to the VGA cable which is connected to the monitor. Note that the red line on the cable should be connected to the p10 of J3 on the uVGA-III board.


This picture shows what the demo codes implement. The mbed uVGA-III demo program output on a VGA monitor in 800 by 480 mode.


Watch the video to see how it works.

Below is the code of the main function to implement the things we watch in the video.


// uVGAIII is a class to drive 4D Systems TFT touch screens
// Copyright (C) <2010> Stephane ROCHON <stephane.rochon at free.fr>
// uVGAIII is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// uVGAIII is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with uVGAIII.  If not, see <http://www.gnu.org/licenses/>.

#include "mbed.h"
#include "uVGAIII.h"

#define SIZE_X       480
#define SIZE_Y       800

// overwrite 4DGL library screen size settings in uVGAIII.h

uVGAIII ecran(p9,p10,p11); // serial tx, serial rx, reset pin;

int main() {
    char c;

    ecran.graphics_parameters(RESOLUTION, 2);  // set screen resolution to 800*480

    ecran.circle(120, 160, 80, CYAN);
    ecran.filled_triangle(320, 100, 340, 300, 500, 270, LIME);
    ecran.move_cursor(5, 60);
    ecran.put_string("This is a test of string!\nHappy Pi Day :-)");
    ecran.move_cursor(10, 10);
    ecran.puts("This is a test of puts...\n");
    ecran.move_cursor(15, 98);
    ecran.printf("This is a test of printf!\rMew...\nYeah!");
    ecran.printf("Starting real-time display...\n\n");
    while((c=getchar())!= '~'){            // when type '~', exit the real time display
    ecran.printf("\n\nClosing real-time display...\n");



Import libraryuVGAIII

Library for uVGAIII


Import library

Public Member Functions

void cls ()
Clear the entire screen using the current background colour.
void reset ()
Reset screen.
void baudrate (int speed)
Set serial Baud rate (both sides : screen and mbed)
void set_volume (char value)
Set internal speaker to specified value.
void screen_mode (char mode)
Set the graphics orientation.
void background_color (int color)
Set background color of the screen.
void circle (int x, int y, int radius, int color)
Draw a circle.
void filled_circle (int x, int y, int radius, int color)
Draw a filled circle.
void triangle (int x1, int y1, int x2, int y2, int x3, int y3, int color)
Draw a triangle.
void filled_triangle (int x1, int y1, int x2, int y2, int x3, int y3, int color)
Draw a filled triangle.
void line (int x1, int y1, int x2, int y2, int color)
Draw a line.
void rectangle (int x1, int y1, int x2, int y2, int color)
Draw a rectangle.
void filled_rectangle (int, int, int, int, int)
Draw a filled rectangle.
void ellipse (int x, int y, int radius_x, int radius_y, int color)
Draw a ellipse.
void filled_ellipse (int x, int y, int radius_x, int radius_y, int color)
Draw a filled ellipse.
void button (int state, int x, int y, int buttoncolor, int txtcolor, int font, int txtWidth, int txtHeight, char *text)
Draw a button.
void panel (int state, int x, int y, int Width, int Height, int color)
Draw a panel.
void slider (char mode, int x1, int y1, int x2, int y2, int color, int scale, int value)
Draw a slider.
void put_pixel (int x, int y, int color)
Draw a pixel.
int read_pixel (int x, int y)
Read the color value of the pixel.
void screen_copy (int xs, int ys, int xd, int yd, int width, int height)
Copy an area of a screen.
void clipping (char value)
Enable or disable the ability for Clipping to be used.
void set_clipping_win (int x1, int y1, int x2, int y2)
Specifiy the clipping window region on the screen.
void extend_clip_region ()
Force the clip region to the extent of the last text.
void change_color (int oldColor, int newColor)
Change all old color pixels to new color within the clipping window area.
void move_origin (int xpos, int ypos)
Move the origin to a new position.
void line_pattern (int pattern)
Set the line pattern.
void outline_color (int color)
Set the outline color for rectangles and circles.
void transparency (char mode)
Set whether to enable the transparency.
void transparent_color (int color)
Set the color to be transparent.
void graphics_parameters (int function, int value)
Set graphics parameters.
void set_font (char mode)
Set font mode.
void move_cursor (int line, int column)
Move teh text cursor to a screen postion.
void text_opacity (char mode)
Set whether or not the 'background' pixels are drawn.
void text_width (int multiplier)
Set the text width multiplier between 1 and 16.
void text_height (int multiplier)
Set the text height multiplier between 1 and 16.
void text_x_gap (int pixelcount)
Set the pixel gap between characters(x-axis)
void text_y_gap (int pixelcount)
Set the pixel gap between characters(y-axis)
void text_bold (char mode)
Set the bold attribute for the text.
void text_inverse (char mode)
Inverse the background and foreground color of the text.
void text_italic (char mode)
Set the text to italic.
void text_underline (char mode)
Set the text to underlined.
void text_attributes (int value)
Control several functions grouped, Text Bold, Text Italic, Text Inverse, Text Underlined.
void put_char (char c)
Print a single character on the display.
void put_string (char *s)
Print a string on the display.
void text_fgd_color (int color)
Set the text foreground color.
void text_bgd_color (int color)
Set the text background color.
void char_width (char c)
calculate the width in pixel units for a character
void char_height (char c)
calculate the height in pixel units for a character
void putc (char c)
place char at current cursor position used by virtual printf function _putc
void puts (char *s)
place string at current cursor position
void detect_touch_region (int x1, int y1, int x2, int y2)
Specify a new touch detect region on the screen.
void touch_get_x (int *x)
Get X coordinates of the touch.
void touch_get_y (int *y)
Get Y coordinates of the touch.
void touch_set (char mode)
Set various touch screen related parameters.
int touch_status (void)
Get the status of the screen.

Please log in to post comments.