T6963C Graphic Lcd Library

The mikroC PRO for 8051 provides a library for working with Glcds based on TOSHIBA T6963C controller. The Toshiba T6963C is a very popular Lcd controller for the use in small graphics modules. It is capable of controlling displays with a resolution up to 240x128. Because of its low power and small outline it is most suitable for mobile applications such as PDAs, MP3 players or mobile measurement equipment. Although small, this contoller has a capability of displaying and merging text and graphics and it manages all the interfacing signals to the displays Row and Column drivers.

For creating a custom set of Glcd images use Glcd Bitmap Editor Tool.

Note:

Adapter Board T6369C datasheet
RS C/D
R/W /RD
E /WR

External dependencies of T6963C Graphic Lcd Library

The following variables must be defined in all projects using T6963C Graphic Lcd library: Description : Example :
extern unsigned char sfr T6963C_dataPort; T6963C Data Port. char T6963C_dataPort at P0;
extern sfr sbit bdata T6963C_ctrlwr; Write signal. sbit T6963C_ctrlwr at P1_2_bit;
extern sfr sbit bdata T6963C_ctrlrd; Read signal. sbit T6963C_ctrlrd at P1_1_bit;
extern sfr sbit bdata T6963C_ctrlcd; Command/Data signal. sbit T6963C_ctrlcd at P1_0_bit;
extern sfr sbit bdata T6963C_ctrlrst; Reset signal. sbit T6963C_ctrlrst at P1_4_bit;

Library Routines

Note: The following low level library routines are implemented as macros. These macros can be found in the T6963C.h header file which is located in the T6963C example projects folders.

T6963C_Init

Prototype

void T6963C_Init(unsigned int width, unsigned char height, unsigned char fntW);

Returns

Nothing.

Description

Initalizes the Graphic Lcd controller.

Parameters :

  • width: width of the Glcd panel
  • height: height of the Glcd panel
  • fntW: font width

Display RAM organization:
The library cuts the RAM into panels : a complete panel is one graphics panel followed by a text panel (see schematic below).

schematic:
+---------------------+ /\
+ GRAPHICS PANEL #0   +  |
+                     +  |
+                     +  |
+                     +  |
+---------------------+  | PANEL 0
+ TEXT PANEL #0       +  |
+                     + \/
+---------------------+ /\
+ GRAPHICS PANEL #1   +  |
+                     +  |
+                     +  |
+                     +  |
+---------------------+  | PANEL 1
+ TEXT PANEL #1       +  |
+                     +  |
+---------------------+ \/            	
            
Requires

Global variables :

  • T6963C_dataPort : Data Port
  • T6963C_ctrlwr : write signal pin
  • T6963C_ctrlrd : read signal pin
  • T6963C_ctrlcd : command/data signal pin
  • T6963C_ctrlrst : reset signal pin
must be defined before using this function.

Example
// T6963CGlcd pinout definition
char   T6963C_dataPort at P0_bit;     // pointer to DATA BUS port
sbit   T6963C_ctrlwr  at P1_2_bit;                // WR write signal
sbit   T6963C_ctrlrd  at P1_1_bit;                // RD read signal
sbit   T6963C_ctrlcd  at P1_0_bit;                // CD command/data signal
sbit   T6963C_ctrlrst at P1_4_bit;                // RST reset signal
...
// init display for 240 pixel width, 128 pixel height and 8 bits character width
T6963C_Init(240, 128, 8);

T6963C_WriteData

Prototype

void T6963C_WriteData(unsigned char mydata);

Returns

Nothing.

Description

Writes data to T6963C controller.

Parameters :

  • mydata: data to be written

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_WriteData(AddrL);

T6963C_WriteCommand

Prototype

void T6963C_WriteCommand(unsigned char mydata);

Returns

Nothing.

Description

Writes command to T6963C controller.

Parameters :

  • mydata: command to be written

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_WriteCommand(T6963C_CURSOR_POINTER_SET);

T6963C_SetPtr

Prototype

void T6963C_SetPtr(unsigned int p, unsigned char c);

Returns

Nothing.

Description

Sets the memory pointer p for command c.

Parameters :

  • p: address where command should be written
  • c: command to be written

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_SetPtr(T6963C_grHomeAddr + start, T6963C_ADDRESS_POINTER_SET);

T6963C_WaitReady

Prototype

void T6963C_WaitReady(void);

Returns

Nothing.

Description

Pools the status byte, and loops until Toshiba Glcd module is ready.

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_WaitReady();

T6963C_Fill

Prototype

void T6963C_Fill(unsigned char v, unsigned int start, unsigned int len);

Returns

Nothing.

Description

Fills controller memory block with given byte.

Parameters :

  • v: byte to be written
  • start: starting address of the memory block
  • len: length of the memory block in bytes

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_Fill(0x33,0x00FF,0x000F);

T6963C_Dot

Prototype

void T6963C_Dot(int x, int y, unsigned char color);

Returns

Nothing.

Description

Draws a dot in the current graphic panel of Glcd at coordinates (x, y).

Parameters :

  • x: dot position on x-axis
  • y: dot position on y-axis
  • color: color parameter. Valid values: T6963C_BLACK and T6963C_WHITE

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_Dot(x0, y0, pcolor);

T6963C_Write_Char

Prototype

void T6963C_Write_Char(unsigned char c, unsigned char x, unsigned char y, unsigned char mode);

Returns

Nothing.

Description

Writes a char in the current text panel of Glcd at coordinates (x, y).

Parameters :

  • c: char to be written
  • x: char position on x-axis
  • y: char position on y-axis
  • mode: mode parameter. Valid values: T6963C_ROM_MODE_OR, T6963C_ROM_MODE_XOR, T6963C_ROM_MODE_AND and T6963C_ROM_MODE_TEXT

Mode parameter explanation:

  • OR Mode: In the OR-Mode, text and graphics can be displayed and the data is logically "OR-ed". This is the most common way of combining text and graphics for example labels on buttons.
  • XOR-Mode: In this mode, the text and graphics data are combined via the logical "exclusive OR". This can be useful to display text in the negative mode, i.e. white text on black background.
  • AND-Mode: The text and graphic data shown on display are combined via the logical "AND function".
  • TEXT-Mode: This option is only available when displaying just a text. The Text Attribute values are stored in the graphic area of display memory.
For more details see the T6963C datasheet.

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_Write_Char('A',22,23,AND);

T6963C_Write_Text

Prototype

void T6963C_Write_Text(unsigned char *str, unsigned char x, unsigned char y, unsigned char mode);

Returns

Nothing.

Description

Writes text in the current text panel of Glcd at coordinates (x, y).

Parameters :

  • str: text to be written
  • x: text position on x-axis
  • y: text position on y-axis
  • mode: mode parameter. Valid values: T6963C_ROM_MODE_OR, T6963C_ROM_MODE_XOR, T6963C_ROM_MODE_AND and T6963C_ROM_MODE_TEXT

Mode parameter explanation:

  • OR Mode: In the OR-Mode, text and graphics can be displayed and the data is logically "OR-ed". This is the most common way of combining text and graphics for example labels on buttons.
  • XOR-Mode: In this mode, the text and graphics data are combined via the logical "exclusive OR". This can be useful to display text in the negative mode, i.e. white text on black background.
  • AND-Mode: The text and graphic data shown on display are combined via the logical "AND function".
  • TEXT-Mode: This option is only available when displaying just a text. The Text Attribute values are stored in the graphic area of display memory.
For more details see the T6963C datasheet.

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_Write_Text(" GLCD LIBRARY DEMO, WELCOME !", 0, 0, T6963C_ROM_MODE_XOR);	

T6963C_Line

Prototype

void T6963C_Line(int x0, int y0, int x1, int y1, unsigned char pcolor);

Returns

Nothing.

Description

Draws a line from (x0, y0) to (x1, y1).

Parameters :

  • x0: x coordinate of the line start
  • y0: y coordinate of the line end
  • x1: x coordinate of the line start
  • y1: y coordinate of the line end
  • pcolor: color parameter. Valid values: T6963C_BLACK and T6963C_WHITE

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_Line(0, 0, 239, 127, T6963C_WHITE);

T6963C_Rectangle

Prototype

void T6963C_Rectangle(int x0, int y0, int x1, int y1, unsigned char pcolor);

Returns

Nothing.

Description

Draws a rectangle on Glcd.

Parameters :

  • x0: x coordinate of the upper left rectangle corner
  • y0: y coordinate of the upper left rectangle corner
  • x1: x coordinate of the lower right rectangle corner
  • y1: y coordinate of the lower right rectangle corner
  • pcolor: color parameter. Valid values: T6963C_BLACK and T6963C_WHITE

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_Rectangle(20, 20, 219, 107, T6963C_WHITE);

T6963C_Box

Prototype

void T6963C_Box(int x0, int y0, int x1, int y1, unsigned char pcolor);

Returns

Nothing.

Description

Draws a box on Glcd

Parameters :

  • x0: x coordinate of the upper left box corner
  • y0: y coordinate of the upper left box corner
  • x1: x coordinate of the lower right box corner
  • y1: y coordinate of the lower right box corner
  • pcolor: color parameter. Valid values: T6963C_BLACK and T6963C_WHITE

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_Box(0, 119, 239, 127, T6963C_WHITE);

T6963C_Circle

Prototype

void T6963C_Circle(int x, int y, long r, unsigned char pcolor);

Returns

Nothing.

Description

Draws a circle on Glcd.

Parameters :

  • x: x coordinate of the circle center
  • y: y coordinate of the circle center
  • r: radius size
  • pcolor: color parameter. Valid values: T6963C_BLACK and T6963C_WHITE

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_Circle(120, 64, 110, T6963C_WHITE);

T6963C_Image

Prototype

void T6963C_Image(const code char *pic);

Returns

Nothing.

Description

Displays bitmap on Glcd.

Parameters :

  • pic: image to be displayed. Bitmap array can be located in both code and RAM memory (due to the mikroC PRO for 8051 pointer to const and pointer to RAM equivalency).

Use the integrated Glcd Bitmap Editor (menu option Tools › Glcd Bitmap Editor) to convert image to a constant array suitable for displaying on Glcd.

Note: Image dimension must match the display dimension.

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_Image(mc);

T6963C_Sprite

Prototype

void T6963C_Sprite(unsigned char px, unsigned char py, const code char *pic, unsigned char sx, unsigned char sy);

Returns

Nothing.

Description

Fills graphic rectangle area (px, py) to (px+sx, py+sy) with custom size picture.

Parameters :

  • px: x coordinate of the upper left picture corner. Valid values: multiples of the font width
  • py: y coordinate of the upper left picture corner
  • pic: picture to be displayed
  • sx: picture width. Valid values: multiples of the font width
  • sy: picture height

Note: If px and sx parameters are not multiples of the font width they will be scaled to the nearest lower number that is a multiple of the font width.

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_Sprite(76, 4, einstein, 88, 119); // draw a sprite

T6963C_Set_Cursor

Prototype

void T6963C_Set_Cursor(unsigned char x, unsigned char y);

Returns

Nothing.

Description

Sets cursor to row x and column y.

Parameters :

  • x: cursor position row number
  • y: cursor position column number

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_Set_Cursor(cposx, cposy);

T6963C_ClearBit

Prototype

void T6963C_ClearBit(char b);

Returns

Nothing.

Description

Clears control port bit(s).

Parameters :

  • b: bit to be cleared.

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
// clear bit bit0 of port1
T6963C_ClearBit(P1_0_bit);

T6963C_SetBit

Prototype

void T6963C_SetBit(char b);

Returns

Nothing.

Description

Sets control port bit(s).

Parameters :

  • b: bit to be set.

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
// set bit 0 of port1
T6963C_SetBit(P1_0_bit);

T6963C_NegBit

Prototype

void T6963C_NegBit(char b);

Returns

Nothing.

Description

Negates control port bit(s).

Parameters :

  • b: bit mask. The function will negate bit x on control port if bit x in bit mask is set to 1.

Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
// negate bits 0 and 1 on control port
T6963C_NegBit(0x03);

T6963C_DisplayGrPanel

Prototype

void T6963C_DisplayGrPanel(char n);

Returns

Nothing.

Description

Display selected graphic panel.

Parameters :

  • n: graphic panel number. Valid values: 0 and 1.
Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
// display graphic panel 1
T6963C_DisplayGrPanel(1);

T6963C_DisplayTxtPanel

Prototype

void T6963C_DisplayTxtPanel(char n);

Returns

Nothing.

Description

Display selected text panel.

Parameters :

  • n: text panel number. Valid values: 0 and 1.
Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
// display text panel 1
T6963C_DisplayTxtPanel(1);

T6963C_SetGrPanel

Prototype

void T6963C_SetGrPanel(char n);

Returns

Nothing.

Description

Computes start address for selected graphic panel and set appropriate internal pointers. All subsequent graphic operations will be preformed at this graphic panel.

Parameters :

  • n: graphic panel number. Valid values: 0 and 1.
Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
// set graphic panel 1 as current graphic panel. 
T6963C_SetGrPanel(1);

T6963C_SetTxtPanel

Prototype

void T6963C_SetTxtPanel(char n);

Returns

Nothing.

Description

Computes start address for selected text panel and set appropriate internal pointers. All subsequent text operations will be preformed at this text panel.

Parameters :

  • n: text panel number. Valid values: 0 and 1.
Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
// set text panel 1 as current text panel. 
T6963C_SetTxtPanel(1);

T6963C_PanelFill

Prototype

void T6963C_PanelFill(unsigned char v);

Returns

Nothing.

Description

Fill current panel in full (graphic+text) with appropriate value (0 to clear).

Parameters :

  • v: value to fill panel with.
Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
clear current panel
T6963C_PanelFill(0);

T6963C_GrFill

Prototype

void T6963C_GrFill(unsigned char v);

Returns

Nothing.

Description

Fill current graphic panel with appropriate value (0 to clear).

Parameters :

  • v: value to fill graphic panel with.
Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
// clear current graphic panel 
T6963C_GrFill(0);

T6963C_TxtFill

Prototype

void T6963C_TxtFill(unsigned char v);

Returns

Nothing.

Description

Fill current text panel with appropriate value (0 to clear).

Parameters :

  • v: this value increased by 32 will be used to fill text panel.
Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
// clear current text panel
T6963C_TxtFill(0);

T6963C_Cursor_Height

Prototype

void T6963C_Cursor_Height(unsigned char n);

Returns

Nothing.

Description

Set cursor size.

Parameters :

  • n: cursor height. Valid values: 0..7.
Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
T6963C_Cursor_Height(7);

T6963C_Graphics

Prototype

void T6963C_Graphics(char n);

Returns

Nothing.

Description

Enable/disable graphic displaying.

Parameters :

  • n: on/off parameter. Valid values: 0 (disable graphic displaying) and 1 (enable graphic displaying).
Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
// enable graphic displaying
T6963C_Graphics(1);

T6963C_Text

Prototype

void T6963C_Text(char n);

Returns

Nothing.

Description

Enable/disable text displaying.

Parameters :

  • n: on/off parameter. Valid values: 0 (disable text displaying) and 1 (enable text displaying).
Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
// enable text displaying 
T6963C_Text(1);

T6963C_Cursor

Prototype

void T6963C_Cursor(char n);

Returns

Nothing.

Description

Set cursor on/off.

Parameters :

  • n: on/off parameter. Valid values: 0 (set cursor off) and 1 (set cursor on).
Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
// set cursor on
T6963C_Cursor(1);
Prototype

void T6963C_Cursor_Blink(char n);

Returns

Nothing.

Description

Enable/disable cursor blinking.

Parameters :

  • n: on/off parameter. Valid values: 0 (disable cursor blinking) and 1 (enable cursor blinking).
Requires

Toshiba Glcd module needs to be initialized. See the T6963C_Init routine.

Example
// enable cursor blinking 
T6963C_Cursor_Blink(1);

Library Example

The following drawing demo tests advanced routines of the T6963C Glcd library. Hardware configurations in this example are made for the T6963C 240x128 display, Easy8051 board and ATMEGA16.

#include        "__T6963C.h"
                            
// T6963C module connections
char T6963C_dataPort at P3;                       // DATA port

sbit T6963C_ctrlwr  at P2_2_bit;                  // WR write signal
sbit T6963C_ctrlrd  at P2_1_bit;                  // RD read signal
sbit T6963C_ctrlcd  at P2_0_bit;                  // CD command/data signal
sbit T6963C_ctrlrst at P2_4_bit;                  // RST reset signal

// Signals not used by library, they are set in main function
sbit T6963C_ctrlce at P2_3_bit;                   // CE signal
sbit T6963C_ctrlfs at P2_6_bit;                   // FS signal
sbit T6963C_ctrlmd at P2_5_bit;                   // MD signal
// End T6963C module connections

/*
 * bitmap pictures stored in ROM
 */
const code char mikroE_240x128_bmp[];
const code char einstein[];


void main() {
  char idata txt1[] = " EINSTEIN WOULD HAVE LIKED mE";
  char idata txt[] =  " GLCD LIBRARY DEMO, WELCOME !";

  unsigned char  panel;         // Current panel
  unsigned int   i;             // General purpose register
  unsigned char  curs;          // Cursor visibility
  unsigned int   cposx, cposy;  // Cursor x-y position
  
  #define COMPLETE_EXAMPLE      // comment this line to make simpler/smaller example
  
  T6963C_ctrlce = 0;            // Enable T6963C
  T6963C_ctrlfs = 0;            // Font Select 8x8
  T6963C_ctrlmd = 0;            // Column number select


  // Initialize T6963C
  T6963C_init(240, 128, 8);

  /*
   * Enable both graphics and text display at the same time
   */
  T6963C_graphics(1);
  T6963C_text(1);

  panel = 0;
  i = 0;
  curs = 0;
  cposx = cposy = 0;
  /*
   * Text messages
   */
  T6963C_write_text(txt, 0, 0, T6963C_ROM_MODE_XOR);
  T6963C_write_text(txt1, 0, 15, T6963C_ROM_MODE_XOR);

  /*
   * Cursor
   */
  T6963C_cursor_height(8);       // 8 pixel height
  T6963C_set_cursor(0, 0);       // Move cursor to top left
  T6963C_cursor(0);              // Cursor off
  
  /*
   * Draw rectangles
   */
  T6963C_rectangle(0, 0, 239, 127, T6963C_WHITE);
  T6963C_rectangle(20, 20, 219, 107, T6963C_WHITE);
  T6963C_rectangle(40, 40, 199, 87, T6963C_WHITE);
  T6963C_rectangle(60, 60, 179, 67, T6963C_WHITE);

  /*
   * Draw a cross
   */
  T6963C_line(0, 0, 239, 127, T6963C_WHITE);
  T6963C_line(0, 127, 239, 0, T6963C_WHITE);

  /*
   * Draw solid boxes
   */
  T6963C_box(0, 0, 239, 8, T6963C_WHITE);
  T6963C_box(0, 119, 239, 127, T6963C_WHITE);

  #ifdef COMPLETE_EXAMPLE
    /*
     * Draw circles
     */
    T6963C_circle(120, 64, 10, T6963C_WHITE);
    T6963C_circle(120, 64, 30, T6963C_WHITE);
    T6963C_circle(120, 64, 50, T6963C_WHITE);
    T6963C_circle(120, 64, 70, T6963C_WHITE);
    T6963C_circle(120, 64, 90, T6963C_WHITE);
    T6963C_circle(120, 64, 110, T6963C_WHITE);
    T6963C_circle(120, 64, 130, T6963C_WHITE);

    T6963C_sprite(76, 4, einstein, 88, 119);         // Draw a sprite

    T6963C_setGrPanel(1);                            // Select other graphic panel

    T6963C_image(mikroE_240x128_bmp);                // Draw an image

  #endif

  for(;;) {                                          // Endless loop
    /*
     * If P1.0 is pressed, display only graphic panel
     */
    if(!P1_0_bit) {
      T6963C_graphics(1);
      T6963C_text(0);
      Delay_ms(300);
      }
    #ifdef COMPLETE_EXAMPLE
      /*
       * If P1.1 is pressed, toggle the display between graphic panel 0 and graphic panel 1
       */
      else if(!P1_1_bit) {
        panel++;
        panel &= 1;
        T6963C_displayGrPanel(panel);
        Delay_ms(300);
        }
    #endif
    /*
     * If P1.2 is pressed, display only text panel
     */
    else if(!P1_2_bit) {
      T6963C_graphics(0);
      T6963C_text(1);
      Delay_ms(300);
      }

    /*
     * If P1.3 is pressed, display text and graphic panels
     */
    else if(!P1_3_bit) {
      T6963C_graphics(1);
      T6963C_text(1);
      Delay_ms(300);
      }

    /*
     * If P1.4 is pressed, change cursor
     */
    else if(!P1_4_bit) {
      curs++;
      if(curs == 3) curs = 0;
      switch(curs) {
        case 0:
          // no cursor
          T6963C_cursor(0);
          break;
        case 1:
          // blinking cursor
          T6963C_cursor(1);
          T6963C_cursor_blink(1);
          break;
        case 2:
          // non blinking cursor
          T6963C_cursor(1);
          T6963C_cursor_blink(0);
          break;
        }
      Delay_ms(300);
      }

    /*
     * Move cursor, even if not visible
     */
    cposx++;
    if(cposx == T6963C_txtCols) {
      cposx = 0;
      cposy++;
      if(cposy == T6963C_grHeight / T6963C_CHARACTER_HEIGHT) {
        cposy = 0;
        }
      }
    T6963C_set_cursor(cposx, cposy);

    Delay_ms(100);
    }
}

HW Connection

T6963C Glcd HW connection

T6963C Glcd HW connection

Copyright (c) 2002-2013 mikroElektronika. All rights reserved.
What do you think about this topic ? Send us feedback!
Want more examples and libraries? 
Find them on LibStock - A place for the code