T6963C Graphic Lcd Library
The mikroC PRO for ARM 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.

- When using this library with ARM family of MCUs be aware of their voltage incompatibility with certain number of T6963C based Glcd modules. So, additional external power supply for these modules may be required.
- ChipEnable(CE), FontSelect(FS) and Reverse(MD) have to be set to appropriate levels by the user outside of the T6963C_Init() function. See the Library Example code at the bottom of this page.
- Glcd size based initialization routines can be found in setup library files located in the Uses folder.
- The user must make sure that used MCU has appropriate ports and pins. If this is not the case the user should adjust initialization routines.
Some mikroElektronika's adapter boards have pinout different from T6369C datasheets. Appropriate relations between these labels are given in the table below :
Adapter Board | T6369C datasheet |
---|---|
RS | C/D |
R/W | /RD |
E | /WR |
Library Dependency Tree

External dependencies of T6963C Graphic Lcd Library
Stellaris
The following variables must be defined in all projects using T6963C Graphic Lcd library: | Description : | Example : |
---|---|---|
extern sfr unsigned long T6963C_dataPort; |
T6963C Data Port. | char T6963C_dataPort at GPIO_PORTE_DATA; |
extern sfr sbit T6963C_ctrlwr; |
Write signal. | sbit T6963C_ctrlwr at GPIO_PORTD_DATA2_bit; |
extern sfr sbit T6963C_ctrlrd; |
Read signal. | sbit T6963C_ctrlrd at GPIO_PORTD_DATA1_bit; |
extern sfr sbit T6963C_ctrlcd; |
Command/Data signal. | sbit T6963C_ctrlcd at GPIO_PORTD_DATA0_bit; |
extern sfr sbit T6963C_ctrlrst; |
Reset signal. | sbit T6963C_ctrlrst at GPIO_PORTD_DATA4_bit; |
extern sfr sbit T6963C_ctrlwr_Direction; |
Direction of the Write pin. | sbit T6963C_ctrlwr_Direction at GPIO_PORTD_DIR2_bit; |
extern sfr sbit T6963C_ctrlrd_Direction; |
Direction of the Read pin. | sbit T6963C_ctrlrd_Direction at GPIO_PORTD_DIR1_bit; |
extern sfr sbit T6963C_ctrlcd_Direction; |
Direction of the Command/Data pin. | sbit T6963C_ctrlcd_Direction at GPIO_PORTD_DIR0_bit; |
extern sfr sbit T6963C_ctrlrst_Direction; |
Direction of the Reset pin. | sbit T6963C_ctrlrst_Direction at GPIO_PORTD_DIR4_bit; |
STM32
The following variables must be defined in all projects using T6963C Graphic Lcd library: | Description : | Example : |
---|---|---|
extern sfr unsigned long T6963C_dataPort_Output; |
T6963C Data Input Port. | char T6963C_dataPort_Output at GPIOD_ODR; |
extern sfr unsigned long T6963C_dataPort_Input; |
T6963C Data Output Port. | char T6963C_dataPort_Input at GPIOD_IDR; |
extern sfr sbit T6963C_ctrlwr; |
Write signal. | sbit T6963C_ctrlwr at GPIOD_ODR.B8; |
extern sfr sbit T6963C_ctrlrd; |
Read signal. | sbit T6963C_ctrlrd at GPIOD_ODR.B9; |
extern sfr sbit T6963C_ctrlcd; |
Command/Data signal. | sbit T6963C_ctrlcd at GPIOD_ODR.B11; |
extern sfr sbit T6963C_ctrlrst; |
Reset signal. | sbit T6963C_ctrlrst at GPIOD_ODR.B12; |
Library Routines
- T6963C_init
- T6963C_writeData
- T6963C_writeCommand
- T6963C_setPtr
- T6963C_Set_Ext_Buffer
- T6963C_waitReady
- T6963C_fill
- T6963C_dot
- T6963C_Set_Font_Adv
- T6963C_Set_Font_Ext_Adv
- T6963C_write_char
- T6963C_Write_Char_Adv
- T6963C_write_text
- T6963C_Write_Text_Adv
- T6963C_line
- T6963C_rectangle
- T6963C_rectangle_round_edges
- T6963C_rectangle_round_edges_fill
- T6963C_box
- T6963C_circle
- T6963C_circle_fill
- T6963C_image
- T6963C_Ext_Image
- T6963C_PartialImage
- T6963C_Ext_PartialImage
- T6963C_sprite
- T6963C_set_cursor
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_clearBit
- T6963C_setBit
- T6963C_negBit
- T6963C_displayGrPanel
- T6963C_displayTxtPanel
- T6963C_setGrPanel
- T6963C_setTxtPanel
- T6963C_panelFill
- T6963C_grFill
- T6963C_txtFill
- T6963C_cursor_height
- T6963C_graphics
- T6963C_text
- T6963C_cursor
- T6963C_cursor_blink
T6963C_init
Prototype |
void T6963C_init(unsigned int width, unsigned char height, unsigned char fntW); |
---|---|
Description |
Initalizes the Graphic Lcd controller. 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). +---------------------+ /\ + GRAPHICS PANEL #0 + | + + | + + | + + | +---------------------+ | PANEL 0 + TEXT PANEL #0 + | + + \/ +---------------------+ /\ + GRAPHICS PANEL #1 + | + + | + + | + + | +---------------------+ | PANEL 1 + TEXT PANEL #1 + | + + | +---------------------+ \/ |
Parameters |
|
Returns |
Nothing. |
Requires |
External dependencies of the library from the top of the page must be defined before using this function. |
Example |
Stellaris// T6963C module connections unsigned long T6963C_dataPort at GPIO_PORTE_DATA; // DATA port sbit T6963C_ctrlwr at GPIO_PORTD_DATA2_bit; // WR write signal sbit T6963C_ctrlrd at GPIO_PORTD_DATA1_bit; // RD read signal sbit T6963C_ctrlcd at GPIO_PORTD_DATA0_bit; // CD command/data signal sbit T6963C_ctrlrst at GPIO_PORTD_DATA4_bit; // RST reset signal sbit T6963C_ctrlwr_Direction at GPIO_PORTD_DIR2_bit; // WR write signal sbit T6963C_ctrlrd_Direction at GPIO_PORTD_DIR1_bit; // RD read signal sbit T6963C_ctrlcd_Direction at GPIO_PORTD_DIR0_bit; // CD command/data signal sbit T6963C_ctrlrst_Direction at GPIO_PORTD_DIR4_bit; // RST reset signal // Signals not used by library, they are set in main function sbit T6963C_ctrlce at GPIO_PORTD_DATA3_bit; // CE signal sbit T6963C_ctrlfs at GPIO_PORTD_DATA6_bit; // FS signal sbit T6963C_ctrlmd at GPIO_PORTD_DATA5_bit; // MD signal sbit T6963C_ctrlce_Direction at GPIO_PORTD_DIR3_bit; // CE signal direction sbit T6963C_ctrlfs_Direction at GPIO_PORTD_DIR6_bit; // FS signal direction sbit T6963C_ctrlmd_Direction at GPIO_PORTD_DIR5_bit; // MD signal direction // End T6963C module connections ... // init display for 240 pixel width, 128 pixel height and 8 bits character width T6963C_init(240, 128, 8); STM32// T6963C module connections unsigned long T6963C_dataPort_Output at GPIOD_ODR; // DATA port unsigned long T6963C_dataPort_Input at GPIOD_IDR; // DATA port sbit T6963C_ctrlwr at GPIOD_ODR.B8; // WR write signal sbit T6963C_ctrlrd at GPIOD_ODR.B9; // RD read signal sbit T6963C_ctrlcd at GPIOD_ODR.B11; // CD command/data signal sbit T6963C_ctrlrst at GPIOD_ODR.B12; // RST reset signal // Signals not used by library, they are set in main function sbit T6963C_ctrlce at GPIOD_ODR.B10; // CE signal sbit T6963C_ctrlfs at GPIOD_ODR.B13; // FS signal // End T6963C module connections ... // init display for 240 pixel width, 128 pixel height and 8 bits character width T6963C_init(240, 128, 8); |
Notes |
None. |
T6963C_writeData
Prototype |
void T6963C_writeData(unsigned char mydata); |
---|---|
Description |
Writes data to T6963C controller. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_writeData(AddrL); |
Notes |
None. |
T6963C_writeCommand
Prototype |
void T6963C_writeCommand(unsigned char mydata); |
---|---|
Description |
Writes command to T6963C controller. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_writeCommand(T6963C_CURSOR_POINTER_SET); |
Notes |
None. |
T6963C_setPtr
Prototype |
void T6963C_setPtr(unsigned int p, unsigned char c); |
---|---|
Description |
Sets the memory pointer |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_setPtr(T6963C_grHomeAddr + start, T6963C_ADDRESS_POINTER_SET); |
Notes |
None. |
T6963C_Set_Ext_Buffer
Prototype |
void T6963C_Set_Ext_Buffer(char* (*getExtDataPtr)(unsigned long offset, unsigned long count, unsigned long* num)); |
---|---|
Returns |
Nothing. |
Description |
Function sets pointer to the user function which manipulates the external resource. Parameters :
|
Requires |
Glcd module needs to be initialized. See the T6963C_Init routine. |
Example |
char* ReadExternalBuffer(unsigned long offset, unsigned int count, unsigned int *num){ unsigned long start_sector; unsigned int pos; start_sector = Mmc_Get_File_Write_Sector() + offset/512; pos = (unsigned long)offset%512; if(start_sector == currentSector+1){ Mmc_Multi_Read_Buffer(EXT_BUFFER); currentSector = start_sector; }else if(start_sector != currentSector){ Mmc_Multi_Read_Stop(); Mmc_Multi_Read_Start(start_sector); Mmc_Multi_Read_Buffer(EXT_BUFFER); currentSector = start_sector; } if(count>512-pos){ *num = 512-pos; } else *num = count; return EXT_BUFFER+pos; } T6963C_Set_Ext_Buffer(ReadExternalBuffer); |
T6963C_waitReady
Prototype |
void T6963C_waitReady(); |
---|---|
Description |
Pools the status byte, and loops until Toshiba Glcd module is ready. |
Parameters |
None. |
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_waitReady(); |
Notes |
None. |
T6963C_fill
Prototype |
void T6963C_fill(unsigned char v, unsigned int start, unsigned int len); |
---|---|
Description |
Fills controller memory block with given byte. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_fill(0x33,0x00FF,0x000F); |
Notes |
None. |
T6963C_dot
Prototype |
void T6963C_dot(int x, int y, unsigned char color); |
---|---|
Description |
Draws a dot in the current graphic panel of Glcd at coordinates (x, y). |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_dot(x0, y0, pcolor); |
Notes |
None. |
T6963C_Set_Font_Adv
Prototype |
void T6963C_Set_Font_Adv(const char *activeFont, unsigned char font_color, char font_orientation); |
---|---|
Description |
Sets font that will be used with T6963C_Write_Char_Adv and T6963C_Write_Text_Adv routines. |
Parameters |
|
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see T6963C_Init routine. |
Example |
T6963C_Set_Font_Adv(&myfont, 1, 0); |
Notes |
None. |
T6963C_Set_Ext_Font_Adv
Prototype |
void T6963C_Set_Ext_Font_Adv(unsigned long activeFont, unsigned int font_color, char font_orientation); |
---|---|
Description |
Sets font that will be used with T6963C_Write_Char_Adv and T6963C_Write_Text_Adv routines. Font is located in an external resource. |
Parameters |
|
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see T6963C_Init routine. |
Example |
T6963C_Set_Ext_Font_Adv(173296, 5, 7, 32); |
Notes |
None. |
T6963C_write_char
Prototype |
void T6963C_write_char(unsigned char c, unsigned char x, unsigned char y, unsigned char mode); |
---|---|
Description |
Writes a char in the current text panel of Glcd at coordinates (x, y). |
Parameters |
Mode parameter explanation:
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_write_char('A',22,23,T6963C_ROM_MODE_AND); |
Notes |
None. |
T6963C_write_char_adv
Prototype |
void T6963C_write_char_adv(unsigned char c, unsigned int x, unsigned int y); |
---|---|
Description |
Writes a char in the current text panel of Glcd at coordinates (x, y). |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_write_char_adv('A',22,23); |
Notes |
None. |
T6963C_write_text
Prototype |
void T6963C_write_text(unsigned char *str, unsigned char x, unsigned char y, unsigned char mode); |
---|---|
Description |
Writes text in the current text panel of Glcd at coordinates (x, y). |
Parameters |
Mode parameter explanation:
|
Returns |
Nothing. |
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); |
Notes |
None. |
T6963C_Write_Text_Adv
Prototype |
void T6963C_Write_Text_Adv(unsigned char *text, unsigned char x, unsigned char y); |
---|---|
Description |
Writes text in the current text panel of Glcd at coordinates (x, y). |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_Write_Text_Adv("Glcd LIBRARY DEMO, WELCOME !", 0, 0); |
Notes |
None. |
T6963C_line
Prototype |
void T6963C_line(int x0, int y0, int x1, int y1, unsigned char pcolor); |
---|---|
Description |
Draws a line from (x0, y0) to (x1, y1). |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_line(0, 0, 239, 127, T6963C_WHITE); |
Notes |
None. |
T6963C_rectangle
Prototype |
void T6963C_rectangle(int x0, int y0, int x1, int y1, unsigned char pcolor); |
---|---|
Description |
Draws a rectangle on Glcd. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_rectangle(20, 20, 219, 107, T6963C_WHITE); |
Notes |
None. |
T6963C_rectangle_round_edges
Prototype |
void T6963C_rectangle_round_edges(int x0, int y0, int x1, int y1, int round_radius, unsigned char pcolor); |
---|---|
Description |
Draws a rounded edge rectangle on Glcd. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_rectangle_round_edges(20, 20, 219, 107, 12, T6963C_WHITE); |
Notes |
None. |
T6963C_rectangle_round_edges_fill
Prototype |
void T6963C_rectangle_round_edges_fill(int x0, int y0, int x1, int y1, int round_radius, unsigned char pcolor); |
---|---|
Description |
Draws a filled rounded edge rectangle on Glcd. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_rectangle_round_edges_fill(20, 20, 219, 107, 12, T6963C_WHITE); |
Notes |
None. |
T6963C_box
Prototype |
void T6963C_box(int x0, int y0, int x1, int y1, unsigned char pcolor); |
---|---|
Description |
Draws a box on the Glcd |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_box(0, 119, 239, 127, T6963C_WHITE); |
Notes |
None. |
T6963C_circle
Prototype |
void T6963C_circle(int x, int y, long r, unsigned char pcolor); |
---|---|
Description |
Draws a circle on the Glcd. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_circle(120, 64, 110, T6963C_WHITE); |
Notes |
None. |
T6963C_circle_fill
Prototype |
void T6963C_circle_fill(int x, int y, long r, unsigned char pcolor); |
---|---|
Description |
Draws a filled circle on the Glcd. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_circle_fill(120, 64, 110, T6963C_WHITE); |
Notes |
None. |
T6963C_image
Prototype |
void T6963C_image(const code char *pic); |
---|---|
Description |
Displays bitmap on Glcd. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_image(my_image); |
Notes |
Image dimension must match the display dimension. Use the integrated Glcd Bitmap Editor (menu option Tools › Glcd Bitmap Editor) to convert image to a constant array suitable for displaying on Glcd. |
T6963C_Ext_Image
Prototype |
void T6963C_Ext_Image(unsigned long image); |
---|---|
Description |
Displays a bitmap from an external resource. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_Ext_image(153608); |
Notes |
Image dimension must match the display dimension. Use the integrated Glcd Bitmap Editor (menu option Tools › Glcd Bitmap Editor) to convert image to a constant array suitable for displaying on Glcd. |
T6963C_PartialImage
Prototype |
void T6963C_PartialImage(unsigned int x_left, unsigned int y_top, unsigned int width, unsigned int height, unsigned int picture_width, unsigned int picture_height, code const far char image); |
---|---|
Description |
Displays a partial area of the image on a desired location. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See T6963C_init routine. |
Example |
// Draws a 10x15 part of the image starting from the upper left corner on the coordinate (10,12). Original image size is 16x32. T6963C_PartialImage(10, 12, 10, 15, 16, 32, image); |
Notes |
Image dimension must match the display dimension. Use the integrated Glcd Bitmap Editor (menu option Tools › Glcd Bitmap Editor) to convert image to a constant array suitable for displaying on Glcd. |
T6963C_Ext_PartialImage
Prototype |
void T6963C_Ext_PartialImage(unsigned int x_left, unsigned int y_top, unsigned int width, unsigned int height, unsigned int picture_width, unsigned int picture_height, unsigned long image); |
---|---|
Description |
Displays a partial area of the image (from an external resource) on a desired location. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See T6963C_init routine. |
Example |
T6963C_Ext_PartialImage(10, 12, 10, 15, 16, 32, 0); |
Notes |
Image dimension must match the display dimension. Use the integrated Glcd Bitmap Editor (menu option Tools › Glcd Bitmap Editor) to convert image to a constant array suitable for displaying on Glcd. |
T6963C_sprite
Prototype |
void T6963C_sprite(unsigned char px, unsigned char py, const code char *pic, unsigned char sx, unsigned char sy); |
---|---|
Description |
Fills graphic rectangle area (px, py) to (px+sx, py+sy) with custom size picture. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_sprite(76, 4, einstein, 88, 119); // draw a sprite |
Notes |
If |
T6963C_set_cursor
Prototype |
void T6963C_set_cursor(unsigned char x, unsigned char y); |
---|---|
Description |
Sets cursor to row x and column y. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_set_cursor(cposx, cposy); |
Notes |
None. |
T6963C_clearBit
Prototype |
void T6963C_clearBit(unsigned int b); |
---|---|
Description |
Clears control port bit(s). |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
// clear bits 0 and 1 on control port T6963C_clearBit(0x0003); |
Notes |
None. |
T6963C_setBit
Prototype |
void T6963C_setBit(unsigned int b); |
---|---|
Description |
Sets control port bit(s). |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
// set bits 0 and 1 on control port T6963C_setBit(0x0003); |
Notes |
None. |
T6963C_negBit
Prototype |
void T6963C_negBit(unsigned int b); |
---|---|
Description |
Negates control port bit(s). |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
// negate bits 0 and 1 on control port T6963C_negBit(0x0003); |
Notes |
None. |
T6963C_displayGrPanel
Prototype |
void T6963C_displayGrPanel(unsigned int n); |
---|---|
Description |
Display selected graphic panel. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
// display graphic panel 1 T6963C_displayGrPanel(1); |
Notes |
None. |
T6963C_displayTxtPanel
Prototype |
void T6963C_displayTxtPanel(unsigned int n); |
---|---|
Description |
Display selected text panel. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
// display text panel 1 T6963C_displayTxtPanel(1); |
Notes |
None. |
T6963C_setGrPanel
Prototype |
void T6963C_setGrPanel(unsigned int n); |
---|---|
Description |
Compute start address for selected graphic panel and set appropriate internal pointers. All subsequent graphic operations will be preformed at this graphic panel. |
Parameters |
|
Returns |
Nothing. |
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); |
Notes |
None. |
T6963C_setTxtPanel
Prototype |
void T6963C_setTxtPanel(unsigned int n); |
---|---|
Description |
Compute start address for selected text panel and set appropriate internal pointers. All subsequent text operations will be preformed at this text panel. |
Parameters |
|
Returns |
Nothing. |
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); |
Notes |
None. |
T6963C_panelFill
Prototype |
void T6963C_panelFill(unsigned char v); |
---|---|
Description |
Fill current panel in full (graphic+text) with appropriate value (0 to clear). |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
clear current panel T6963C_panelFill(0); |
Notes |
None. |
T6963C_grFill
Prototype |
void T6963C_grFill(unsigned char v); |
---|---|
Description |
Fill current graphic panel with appropriate value (0 to clear). |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
// clear current graphic panel T6963C_grFill(0); |
Notes |
None. |
T6963C_txtFill
Prototype |
void T6963C_txtFill(unsigned char v); |
---|---|
Description |
Fill current text panel with appropriate value (0 to clear). |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
// clear current text panel T6963C_txtFill(0); |
Notes |
None. |
T6963C_cursor_height
Prototype |
void T6963C_cursor_height(unsigned char n); |
---|---|
Description |
Set cursor size. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
T6963C_cursor_height(7); |
Notes |
None. |
T6963C_graphics
Prototype |
void T6963C_graphics(unsigned int n); |
---|---|
Description |
Enable/disable graphic displaying. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
// enable graphic displaying T6963C_graphics(1); |
Notes |
None. |
T6963C_text
Prototype |
void T6963C_text(unsigned int n); |
---|---|
Description |
Enable/disable text displaying. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
// enable text displaying T6963C_text(1); |
Notes |
None. |
T6963C_cursor
Prototype |
void T6963C_cursor(unsigned int n); |
---|---|
Description |
Set cursor on/off. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
// set cursor on T6963C_cursor(1); |
Notes |
None. |
T6963C_cursor_blink
Prototype |
void T6963C_cursor_blink(unsigned int n); |
---|---|
Description |
Enable/disable cursor blinking. |
Parameters |
|
Returns |
Nothing. |
Requires |
Toshiba Glcd module needs to be initialized. See the T6963C_init routine. |
Example |
// enable cursor blinking T6963C_cursor_blink(1); |
Notes |
None. |
Library Example
The following drawing demo tests advanced routines of the T6963C Glcd library.
Stellaris
#include "__T6963C.h" // T6963C module connections unsigned long T6963C_dataPort at GPIO_PORTE_DATA; // DATA port sbit T6963C_ctrlwr at GPIO_PORTD_DATA2_bit; // WR write signal sbit T6963C_ctrlrd at GPIO_PORTD_DATA1_bit; // RD read signal sbit T6963C_ctrlcd at GPIO_PORTD_DATA0_bit; // CD command/data signal sbit T6963C_ctrlrst at GPIO_PORTD_DATA4_bit; // RST reset signal sbit T6963C_ctrlwr_Direction at GPIO_PORTD_DIR2_bit; // WR write signal sbit T6963C_ctrlrd_Direction at GPIO_PORTD_DIR1_bit; // RD read signal sbit T6963C_ctrlcd_Direction at GPIO_PORTD_DIR0_bit; // CD command/data signal sbit T6963C_ctrlrst_Direction at GPIO_PORTD_DIR4_bit; // RST reset signal // Signals not used by library, they are set in main function sbit T6963C_ctrlce at GPIO_PORTD_DATA3_bit; // CE signal sbit T6963C_ctrlfs at GPIO_PORTD_DATA6_bit; // FS signal sbit T6963C_ctrlmd at GPIO_PORTD_DATA5_bit; // MD signal sbit T6963C_ctrlce_Direction at GPIO_PORTD_DIR3_bit; // CE signal direction sbit T6963C_ctrlfs_Direction at GPIO_PORTD_DIR6_bit; // FS signal direction sbit T6963C_ctrlmd_Direction at GPIO_PORTD_DIR5_bit; // MD signal direction // End T6963C module connections // Pin masks const CE_FS_MD_PINS = _GPIO_PINMASK_3 | _GPIO_PINMASK_6 | _GPIO_PINMASK_5; const INPUT_BUTTONS = _GPIO_PINMASK_0 | _GPIO_PINMASK_1 | _GPIO_PINMASK_2 | _GPIO_PINMASK_3 | _GPIO_PINMASK_4 | _GPIO_PINMASK_5 ; // End Pin masks /* * bitmap pictures stored in ROM */ const code char mikroE_240x128_bmp[]; const code char einstein[]; void main() { #define COMPLETE_EXAMPLE #define LINE_DEMO // Uncomment to demonstrate line drawing routines #define FILL_DEMO // Uncomment to demonstrate fill routines #define PARTIAL_IMAGE_DEMO // Uncomment to demonstrate partial image routine char txt1[] = " EINSTEIN WOULD HAVE LIKED mE"; char txt[] = " GLCD LIBRARY DEMO, WELCOME !"; char txt2[] = "Partial image demo!"; unsigned char panel; // Current panel unsigned int i; // General purpose register unsigned char curs; // Cursor visibility unsigned int cposx, cposy; // Cursor x-y position // input buttons GPIO_Digital_Input(&GPIO_PORTA, INPUT_BUTTONS); // configure CE, FS and MD pins, others will be configured by the T6963C library GPIO_Digital_Output(&GPIO_PORTD, CE_FS_MD_PINS); 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 solid boxes */ T6963C_box(0, 0, 239, 8, T6963C_WHITE); T6963C_box(0, 119, 239, 127, T6963C_WHITE); /* * Draw rectangles */ #ifdef LINE_DEMO 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); #endif /* * Draw rounded edge rectangle */ #ifdef LINE_DEMO T6963C_Rectangle_Round_Edges(10, 10, 229, 117, 12, T6963C_WHITE); T6963C_Rectangle_Round_Edges(30, 30, 209, 97, 12, T6963C_WHITE); T6963C_Rectangle_Round_Edges(50, 50, 189, 77, 12, T6963C_WHITE); #endif /* * Draw filled rounded edge rectangle */ #ifdef FILL_DEMO T6963C_Rectangle_Round_Edges_Fill(10, 10, 229, 117, 12, T6963C_WHITE); T6963C_Rectangle_Round_Edges_Fill(20, 20, 219, 107, 12, T6963C_BLACK); T6963C_Rectangle_Round_Edges_Fill(30, 30, 209, 97, 12, T6963C_WHITE); T6963C_Rectangle_Round_Edges_Fill(40, 40, 199, 87, 12, T6963C_BLACK); T6963C_Rectangle_Round_Edges_Fill(50, 50, 189, 77, 12, T6963C_WHITE); #endif /* * Draw a cross */ #ifdef LINE_DEMO T6963C_line(0, 0, 239, 127, T6963C_WHITE); T6963C_line(0, 127, 239, 0, T6963C_WHITE); #endif /* * Draw circles */ #ifdef LINE_DEMO 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); #endif /* * Draw filled circles */ #ifdef FILL_DEMO T6963C_circle_fill(120, 64, 60, T6963C_WHITE); T6963C_circle_fill(120, 64, 55, T6963C_BLACK); T6963C_circle_fill(120, 64, 50, T6963C_WHITE); T6963C_circle_fill(120, 64, 45, T6963C_BLACK); T6963C_circle_fill(120, 64, 40, T6963C_WHITE); T6963C_circle_fill(120, 64, 35, T6963C_BLACK); T6963C_circle_fill(120, 64, 30, T6963C_WHITE); T6963C_circle_fill(120, 64, 25, T6963C_BLACK); T6963C_circle_fill(120, 64, 20, T6963C_WHITE); T6963C_circle_fill(120, 64, 15, T6963C_BLACK); T6963C_circle_fill(120, 64, 10, T6963C_WHITE); T6963C_circle_fill(120, 64, 5, T6963C_BLACK); #endif Delay_ms(1000); T6963C_sprite(76, 4, einstein, 88, 119); // Draw a sprite Delay_ms(1000); T6963C_setGrPanel(1); // Select other graphic panel T6963C_image(mikroE_240x128_bmp); T6963C_displayGrPanel(1); Delay_ms(1000); #ifdef PARTIAL_IMAGE_DEMO T6963C_grFill(0); T6963C_PartialImage(0, 0, 64, 64, 240, 128, mikroE_240x128_bmp); // Display partial image Delay_ms(1000); T6963C_graphics(0); #endif T6963C_image(mikroE_240x128_bmp); T6963C_graphics(1); T6963C_displayGrPanel(0); for(;;) { // Endless loop /* * If RA0 is pressed, display only graphic panel */ if(GPIO_PORTA_DATA0_bit) { T6963C_graphics(1); T6963C_text(0); Delay_ms(300); } /* * If RA1 is pressed, toggle the display between graphic panel 0 and graphic panel 1 */ else if(GPIO_PORTA_DATA1_bit) { panel++; panel &= 1; T6963C_displayGrPanel(panel); Delay_ms(300); } /* * If RA2 is pressed, display only text panel */ else if(GPIO_PORTA_DATA2_bit) { T6963C_graphics(0); T6963C_text(1); Delay_ms(300); } /* * If RA3 is pressed, display text and graphic panels */ else if(GPIO_PORTA_DATA3_bit) { T6963C_graphics(1); T6963C_text(1); Delay_ms(300); } /* * If RA4 is pressed, change cursor */ else if(GPIO_PORTA_DATA4_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); } #ifdef PARTIAL_IMAGE_DEMO /* * If RA5 is pressed, perform the "Partial image" demostration */ else if(GPIO_PORTA_DATA5_bit) { T6963C_setGrPanel(0); T6963C_setTxtPanel(0); T6963C_txtFill(0); T6963C_setGrPanel(1); T6963C_setTxtPanel(0); T6963C_graphics(1); T6963C_text(1); T6963C_displayGrPanel(1); T6963C_write_text(txt2, 5, 15, T6963C_ROM_MODE_XOR); Delay_1sec(); T6963C_grFill(0); T6963C_PartialImage(0, 0, 64, 64, 240, 128, mikroE_240x128_bmp); Delay_1sec(); T6963C_PartialImage(0, 0, 128, 128, 240, 128, mikroE_240x128_bmp); Delay_1sec(); T6963C_PartialImage(0, 0, 240, 128, 240, 128, mikroE_240x128_bmp); Delay_1sec(); T6963C_txtFill(0); T6963C_write_text(txt, 0, 0, T6963C_ROM_MODE_XOR); T6963C_write_text(txt1, 0, 15, T6963C_ROM_MODE_XOR); } #endif /* * 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); } }
STM32
#include "__T6963C.h" // T6963C module connections unsigned long T6963C_dataPort_Output at GPIOD_ODR; // DATA port unsigned long T6963C_dataPort_Input at GPIOD_IDR; // DATA port sbit T6963C_ctrlwr at GPIOD_ODR.B8; // WR write signal sbit T6963C_ctrlrd at GPIOD_ODR.B9; // RD read signal sbit T6963C_ctrlcd at GPIOD_ODR.B11; // CD command/data signal sbit T6963C_ctrlrst at GPIOD_ODR.B12; // RST reset signal // Signals not used by library, they are set in main function sbit T6963C_ctrlce at GPIOD_ODR.B10; // CE signal sbit T6963C_ctrlfs at GPIOD_ODR.B13; // FS signal // End T6963C module connections // Pin masks const CE_FS_PINS = _GPIO_PINMASK_10 | _GPIO_PINMASK_13; const INPUT_BUTTONS = _GPIO_PINMASK_8 | _GPIO_PINMASK_9 | _GPIO_PINMASK_10 | _GPIO_PINMASK_11 | _GPIO_PINMASK_12 | _GPIO_PINMASK_13 ; // End Pin masks /* * bitmap pictures stored in ROM */ const code char mikroE_240x64_bmp[]; const code char einstein[]; void main() { #define COMPLETE_EXAMPLE #define LINE_DEMO // Uncomment to demonstrate line drawing routines #define FILL_DEMO // Uncomment to demonstrate fill routines #define PARTIAL_IMAGE_DEMO // Uncomment to demonstrate partial image routine char txt1[] = " EINSTEIN WOULD HAVE LIKED mE"; char txt[] = " GLCD LIBRARY DEMO, WELCOME !"; char txt2[] = "Partial image demo!"; unsigned char panel; // Current panel unsigned int i; // General purpose register unsigned char curs; // Cursor visibility unsigned int cposx, cposy; // Cursor x-y position unsigned short s; // counter // input buttons GPIO_Digital_Input(&GPIOE_BASE, INPUT_BUTTONS); // configure CE and FS pins, others will be configured by the T6963C library GPIO_Digital_Output(&GPIOD_BASE, CE_FS_PINS); T6963C_ctrlce = 0; // Enable T6963C T6963C_ctrlfs = 0; // Font Select 8x8 // Initialize T6963C T6963C_init(240, 64, 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, 7, 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 solid boxes */ T6963C_box(0, 0, 239, 8, T6963C_WHITE); T6963C_box(0, 55, 239, 63, T6963C_WHITE); /* * Draw rectangles */ #ifdef LINE_DEMO T6963C_rectangle(0, 0, 239, 63, T6963C_WHITE); T6963C_rectangle(20, 11, 219, 53, T6963C_WHITE); T6963C_rectangle(40, 21, 199, 43, T6963C_WHITE); T6963C_rectangle(60, 30, 179, 34, T6963C_WHITE); #endif /* * Draw rounded edge rectangle */ #ifdef LINE_DEMO T6963C_Rectangle_Round_Edges(30,16, 209, 48, 12, T6963C_WHITE); T6963C_Rectangle_Round_Edges(50,25, 189, 39, 5, T6963C_WHITE); #endif /* * Draw filled rounded edge rectangle */ #ifdef FILL_DEMO T6963C_Rectangle_Round_Edges_Fill(10, 10, 229, 53, 12, T6963C_WHITE); T6963C_Rectangle_Round_Edges_Fill(15, 15, 224, 49, 12, T6963C_BLACK); T6963C_Rectangle_Round_Edges_Fill(20, 20, 219, 44, 9, T6963C_WHITE); T6963C_Rectangle_Round_Edges_Fill(25, 25, 214, 39, 7, T6963C_BLACK); T6963C_Rectangle_Round_Edges_Fill(30, 30, 209, 34, 2, T6963C_WHITE); #endif /* * Draw a cross */ #ifdef LINE_DEMO T6963C_line(0, 0, 239, 63, T6963C_WHITE); T6963C_line(0, 63, 239, 0, T6963C_WHITE); #endif /* * Draw circles */ #ifdef LINE_DEMO T6963C_circle(120, 32, 10, T6963C_WHITE); T6963C_circle(120, 32, 30, T6963C_WHITE); T6963C_circle(120, 32, 50, T6963C_WHITE); T6963C_circle(120, 32, 70, T6963C_WHITE); T6963C_circle(120, 32, 90, T6963C_WHITE); T6963C_circle(120, 32, 110, T6963C_WHITE); T6963C_circle(120, 32, 130, T6963C_WHITE); #endif /* * Draw filled circles */ #ifdef FILL_DEMO T6963C_circle_fill(120, 32, 40, T6963C_WHITE); T6963C_circle_fill(120, 32, 35, T6963C_BLACK); T6963C_circle_fill(120, 32, 30, T6963C_WHITE); T6963C_circle_fill(120, 32, 25, T6963C_BLACK); T6963C_circle_fill(120, 32, 20, T6963C_WHITE); T6963C_circle_fill(120, 32, 15, T6963C_BLACK); T6963C_circle_fill(120, 32, 10, T6963C_WHITE); T6963C_circle_fill(120, 32, 5, T6963C_BLACK); #endif Delay_ms(1000); T6963C_sprite(60, 0, einstein, 120, 64); // Draw a sprite Delay_ms(1000); T6963C_setGrPanel(1); // Select other graphic panel T6963C_image(mikroE_240x64_bmp); T6963C_displayGrPanel(1); Delay_ms(1000); #ifdef PARTIAL_IMAGE_DEMO T6963C_grFill(0); T6963C_PartialImage(0, 0, 64, 64, 240, 64, mikroE_240x64_bmp); // Display partial image Delay_ms(1000); T6963C_graphics(0); #endif T6963C_image(mikroE_240x64_bmp); T6963C_graphics(1); T6963C_displayGrPanel(0); for(;;) { // Endless loop /* * If RE8 is pressed, display only graphic panel */ if(GPIOE_IDR.B8) { T6963C_graphics(1); T6963C_text(0); Delay_ms(300); } #ifdef COMPLETE_EXAMPLE /* * If RE9 is pressed, toggle the display between graphic panel 0 and graphic panel 1 */ else if(GPIOE_IDR.B9) { panel++; panel &= 1; T6963C_displayGrPanel(panel); Delay_ms(300); } #endif /* * If RE10 is pressed, display only text panel */ else if(GPIOE_IDR.B10) { T6963C_graphics(0); T6963C_text(1); Delay_ms(300); } /* * If RE11 is pressed, display text and graphic panels */ else if(GPIOE_IDR.B11) { T6963C_graphics(1); T6963C_text(1); Delay_ms(300); } /* * If RE12 is pressed, change cursor */ else if(GPIOE_IDR.B12) { 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); } #ifdef PARTIAL_IMAGE_DEMO /* * If RA5 is pressed, perform the "Partial image" demostration */ else if(GPIOE_IDR.B13) { T6963C_setGrPanel(0); T6963C_setTxtPanel(0); T6963C_txtFill(0); T6963C_setGrPanel(1); T6963C_setTxtPanel(0); T6963C_graphics(1); T6963C_text(1); T6963C_displayGrPanel(1); T6963C_write_text(txt2, 5, 7, T6963C_ROM_MODE_XOR); Delay_1sec(); for(s = 0; s < 3; s++){ T6963C_grFill(0); T6963C_PartialImage(s*80 + 10, 0, 64, 64, 240, 64, mikroE_240x64_bmp); // Partial image Delay_ms(500); } T6963C_txtFill(0); T6963C_image(mikroE_240x64_bmp); T6963C_write_text(txt, 0, 0, T6963C_ROM_MODE_XOR); T6963C_write_text(txt1, 0, 7, T6963C_ROM_MODE_XOR); } #endif /* * 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); } }
What do you think about this topic ? Send us feedback!