SPI T6963C Graphic Lcd Library
The mikroPascal PRO for PIC provides a library for working with Glcds based on TOSHIBA T6963C controller via SPI interface. 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 this controller is small, it has a capability of displaying and merging text and graphics and it manages all interfacing signals to the displays Row and Column drivers.
For creating a custom set of Glcd images use Glcd Bitmap Editor Tool.
Important :
- The library uses the SPI module for communication.
- The user must initialize SPI module before using the SPI T6963C Glcd Library.
- This Library is designed to work with mikroElektronika's Serial Glcd 240x128 and 240x64 Adapter Boards pinout, see schematic at the bottom of this page for details.
- To use constants located in
__Lib_SPIT6963C_Const.mpasfile, user must include it the source file :uses __Lib_SPIT6963C_Const;. - PIC16 family of MCUs does not support working with external resources.
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 SPI T6963C Graphic Lcd Library
The implementation of SPI T6963C Graphic Lcd Library routines is based on Port Expander Library routines.
External dependencies are the same as Port Expander Library external dependencies.
Library Routines
- SPI_T6963C_Config
- SPI_T6963C_WriteData
- SPI_T6963C_WriteCommand
- SPI_T6963C_SetPtr
- SPI_T6963C_Set_Ext_Buffer
- SPI_T6963C_WaitReady
- SPI_T6963C_Fill
- SPI_T6963C_Dot
- SPI_T6963C_Set_Font_Adv
- SPI_T6963C_Set_Font_Ext_Adv
- SPI_T6963C_Write_Char
- SPI_T6963C_Write_Char_Adv
- SPI_T6963C_Write_Text
- SPI_T6963C_Write_Text_Adv
- SPI_T6963C_Write_Const_Text_Adv
- SPI_T6963C_Line
- SPI_T6963C_Rectangle
- SPI_T6963C_rectangle_round_edges
- SPI_T6963C_rectangle_round_edges_fill
- SPI_T6963C_Box
- SPI_T6963C_Circle
- SPI_T6963C_circle_fill
- SPI_T6963C_Image
- SPI_T6963C_Ext_Image
- SPI_T6963C_PartialImage
- SPI_T6963C_Ext_PartialImage
- SPI_T6963C_Sprite
- SPI_T6963C_Set_Cursor
- SPI_T6963C_ClearBit
- SPI_T6963C_SetBit
- SPI_T6963C_NegBit
- SPI_T6963C_DisplayGrPanel
- SPI_T6963C_DisplayTxtPanel
- SPI_T6963C_SetGrPanel
- SPI_T6963C_SetTxtPanel
- SPI_T6963C_PanelFill
- SPI_T6963C_GrFill
- SPI_T6963C_TxtFill
- SPI_T6963C_Cursor_Height
- SPI_T6963C_Graphics
- SPI_T6963C_Text
- SPI_T6963C_Cursor
- SPI_T6963C_Cursor_Blink
SPI_T6963C_Config
| Prototype |
procedure SPI_T6963C_Config(width : word; height : byte; fntW : byte; DeviceAddress : byte; wr : byte; rd : byte; cd : byte; rst : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Initializes T6963C Graphic Lcd controller. Parameters :
Display RAM organization:
schematic:
+---------------------+ /\
+ GRAPHICS PANEL #0 + |
+ + |
+ + |
+ + |
+---------------------+ | PANEL 0
+ TEXT PANEL #0 + |
+ + \/
+---------------------+ /\
+ GRAPHICS PANEL #1 + |
+ + |
+ + |
+ + |
+---------------------+ | PANEL 1
+ TEXT PANEL #1 + |
+ + |
+---------------------+ \/
|
| Requires |
Global variables :
|
| Example |
// port expander pinout definition
var SPExpanderCS : sbit at RC1_bit;
SPExpanderRST : sbit at RC0_bit;
SPExpanderCS_Direction : sbit at TRISC1_bit;
SPExpanderRST_Direction : sbit at TRISC_bit;
...
// Initialize SPI module
SPI1_Init();
SPI_T6963C_Config(240, 64, 8, 0, 0, 1, 3, 4);
|
SPI_T6963C_writeData
| Prototype |
procedure SPI_T6963C_writeData(Ddata : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Writes data to T6963C controller via SPI interface. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_writeData(AddrL); |
SPI_T6963C_writeCommand
| Prototype |
procedure SPI_T6963C_writeCommand(Ddata : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Writes command to T6963C controller via SPI interface. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_writeCommand(SPI_T6963C_CURSOR_POINTER_SET); |
SPI_T6963C_setPtr
| Prototype |
procedure SPI_T6963C_setPtr(p : word; c : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Sets the memory pointer p for command c. Parameters :
|
| Requires |
SToshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_setPtr(SPI_T6963C_grHomeAddr + start, SPI_T6963C_ADDRESS_POINTER_SET); |
SPI_T6963C_Set_Ext_Buffer
| Prototype |
procedure SPI_T6963C_Set_Ext_Buffer(getExtDataPtr : ^TSPI_T6963C_Get_Ext_Data_Ptr); |
|---|---|
| Returns |
Nothing. |
| Description |
Function sets pointer to the user function which manipulates the external resource. Parameters :
User function prototype should be in the following format: Parameters used in the function have the following meaning :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_Set_Ext_Buffer(@ReadExternalBuffer); |
SPI_T6963C_waitReady
| Prototype |
procedure SPI_T6963C_waitReady(); |
|---|---|
| Returns |
Nothing. |
| Description |
Pools the status byte, and loops until Toshiba Glcd module is ready. |
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_waitReady(); |
SPI_T6963C_fill
| Prototype |
procedure SPI_T6963C_fill(v : byte; start : word; len : word); |
|---|---|
| Returns |
Nothing. |
| Description |
Fills controller memory block with given byte. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_fill(0x33; 0x00FF; 0x000F); |
SPI_T6963C_dot
| Prototype |
procedure SPI_T6963C_dot(x : integer; y : integer; color : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Draws a dot in the current graphic panel of Glcd at coordinates (x, y). Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_dot(x0, y0, SPI_T6963C_WHITE); |
SPI_T6963C_Set_Font_Adv
| Prototype |
procedure SPI_T6963C_Set_Font_Adv(activeFont : ^const far byte; font_color : word; font_orientation : byte); |
|---|---|
| Description |
Sets font that will be used with SPI_T6963C_Write_Char_Adv and SPI_T6963C_Write_Text_Adv routines. |
| Parameters |
|
| Returns |
Nothing. |
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_Set_Font_Adv(@myfont, 1, 0); |
| Notes |
None. |
SPI_T6963C_Set_Ext_Font_Adv
| Prototype |
procedure SPI_T6963C_Set_Ext_Font_Adv(activeFont : dword; font_color : word; font_orientation : word); |
|---|---|
| Description |
Sets font that will be used with SPI_T6963C_Write_Char_Adv and SPI_T6963C_Write_Text_Adv routines. Font is located in an external resource. |
| Parameters |
|
| Returns |
Nothing. |
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_Set_Ext_Font_Adv(173296, 0, 0); |
| Notes |
None. |
SPI_T6963C_write_char
| Prototype |
procedure SPI_T6963C_write_char(c : byte; x : byte; y : byte; mode : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Writes a char in the current text panel of Glcd at coordinates (x, y). Parameters :
Mode parameter explanation:
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_write_char("A",22,23,SPI_T6963C_ROM_MODE_AND);
|
SPI_T6963C_write_char_adv
| Prototype |
procedure SPI_T6963C_Write_Char_Adv(ch, x, y : word); |
|---|---|
| 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 SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_Write_Char_Adv('A',22,23);
|
| Notes |
None. |
SPI_T6963C_write_text
| Prototype |
procedure SPI_T6963C_write_text(var str : string; x, y, mode : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Writes text in the current text panel of Glcd at coordinates (x, y). Parameters :
Mode parameter explanation:
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_write_text('Glcd LIBRARY DEMO, WELCOME !', 0, 0, T6963C_ROM_MODE_XOR);
|
SPI_T6963C_Write_Text_Adv
| Prototype |
procedure SPI_T6963C_Write_Text_Adv(var text : string; x, y : word); |
|---|---|
| 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 SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_Write_Text_Adv("Glcd LIBRARY DEMO, WELCOME !", 0, 0);
|
| Notes |
None. |
SPI_T6963C_Write_Const_Text_Adv
| Prototype |
procedure SPI_T6963C_Write_Const_Text_Adv(text : ^const far byte; x, y : word); |
|---|---|
| Description |
Writes text located in the program memory on the glcd at coordinates (x, y). |
| Parameters |
|
| Returns |
Nothing. |
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
const ctext = 'mikroElektronika'; ... SPI_T6963C_Write_Const_Text_Adv(@ctext, 0, 0); |
| Notes |
None. |
SPI_T6963C_line
| Prototype |
procedure SPI_T6963C_line(x0 : integer; y0 : integer; x1 : integer; y1 : integer; pcolor : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Draws a line from (x0, y0) to (x1, y1). Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_line(0, 0, 239, 127, SPI_T6963C_WHITE); |
SPI_T6963C_rectangle
| Prototype |
procedure SPI_T6963C_rectangle(x0 : integer; y0 : integer; x1 : integer; y1 : integer; pcolor : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Draws a rectangle on Glcd. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_rectangle(20, 20, 219, 107, SPI_T6963C_WHITE); |
SPI_T6963C_rectangle_round_edges
| Prototype |
procedure SPI_T6963C_rectangle_round_edges(x0 : integer; y0 : integer; x1 : integer; y1 : integer; radius : integer; pcolor : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Draws a rounded edge rectangle on Glcd. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_rectangle_round_edges(20, 20, 219, 107, 12, SPI_T6963C_WHITE); |
SPI_T6963C_rectangle_round_edges_fill
| Prototype |
procedure SPI_T6963C_rectangle_round_edges_fill(x0 : integer; y0 : integer; x1 : integer; y1 : integer; radius : integer; pcolor : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Draws a filled rounded edge rectangle on Glcd. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_rectangle_round_edges_fill(20, 20, 219, 107, 12, SPI_T6963C_WHITE); |
SPI_T6963C_box
| Prototype |
procedure SPI_T6963C_box(x0 : integer; y0 : integer; x1 : integer; y1 : integer; pcolor : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Draws a box on the Glcd Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_box(0, 119, 239, 127, SPI_T6963C_WHITE); |
SPI_T6963C_circle
| Prototype |
procedure SPI_T6963C_circle(x : integer; y : integer; r : longint; pcolor : word); |
|---|---|
| Returns |
Nothing. |
| Description |
Draws a circle on the Glcd. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_circle(120, 64, 110, SPI_T6963C_WHITE); |
SPI_T6963C_circle_fill
| Prototype |
procedure SPI_T6963C_circle_fill(x : integer; y : integer; r : longint; pcolor : word); |
|---|---|
| Returns |
Nothing. |
| Description |
Draws a filled circle on the Glcd. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_circle_fill(120, 64, 110, SPI_T6963C_WHITE); |
SPI_T6963C_image
| Prototype |
procedure SPI_T6963C_image(const pic : ^byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Displays bitmap on Glcd. Parameters :
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 SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_image(@my_image); |
SPI_T6963C_Ext_Image
| Prototype |
procedure SPI_T6963C_Ext_Image(pic : dword); |
|---|---|
| Description |
Displays a bitmap from an external resource. |
| Parameters |
|
| Returns |
Nothing. |
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_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. |
SPI_T6963C_PartialImage
| Prototype |
procedure SPI_T6963C_PartialImage(x_left, y_top, width, height, picture_width, picture_height : word; const image : ^byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Displays a partial area of the image on a desired location. Parameters :
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 SPI_T6963C_Config 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. SPI_T6963C_PartialImage(10, 12, 10, 15, 16, 32, @image); |
SPI_T6963C_Ext_PartialImage
| Prototype |
procedure SPI_T6963C_Ext_PartialImage(x_left, y_top, width, height, picture_width, picture_height : word; image : dword); |
|---|---|
| Description |
Displays a partial area of the image on a desired location. |
| Parameters |
|
| Returns |
Nothing. |
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_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. |
SPI_T6963C_sprite
| Prototype |
procedure SPI_T6963C_sprite(px, py : byte; const pic : ^byte; sx, sy : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Fills graphic rectangle area (px, py) to (px+sx, py+sy) with custom size picture. Parameters :
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 SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_sprite(76, 4, einstein, 88, 119); // draw a sprite |
SPI_T6963C_set_cursor
| Prototype |
procedure SPI_T6963C_set_cursor(x, y : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Sets cursor to row x and column y. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_set_cursor(cposx, cposy); |
SPI_T6963C_clearBit
| Prototype |
procedure SPI_T6963C_clearBit(b : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Clears control port bit(s). Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
// clear bits 0 and 1 on control port SPI_T6963C_clearBit(0x03); |
SPI_T6963C_setBit
| Prototype |
procedure SPI_T6963C_setBit(b : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Sets control port bit(s). Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
// set bits 0 and 1 on control port SPI_T6963C_setBit(0x03); |
SPI_T6963C_negBit
| Prototype |
procedure SPI_T6963C_negBit(b : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Negates control port bit(s). Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
// negate bits 0 and 1 on control port SPI_T6963C_negBit(0x03); |
SPI_T6963C_DisplayGrPanel
| Prototype |
procedure SPI_T6963C_DisplayGrPanel(n : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Display selected graphic panel. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
// display graphic panel 1 SPI_T6963C_DisplayGrPanel(1); |
SPI_T6963C_DisplayTxtPanel
| Prototype |
procedure SPI_T6963C_DisplayTxtPanel(n : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Display selected text panel. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
// display text panel 1 SPI_T6963C_DisplayTxtPanel(1); |
SPI_T6963C_SetGrPanel
| Prototype |
procedure SPI_T6963C_SetGrPanel(n : byte); |
|---|---|
| Returns |
Nothing. |
| 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 :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
// set graphic panel 1 as current graphic panel. SPI_T6963C_SetGrPanel(1); |
SPI_T6963C_SetTxtPanel
| Prototype |
procedure SPI_T6963C_SetTxtPanel(n : byte); |
|---|---|
| Returns |
Nothing. |
| 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 :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
// set text panel 1 as current text panel. SPI_T6963C_SetTxtPanel(1); |
SPI_T6963C_PanelFill
| Prototype |
procedure SPI_T6963C_PanelFill(v : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Fill current panel in full (graphic+text) with appropriate value (0 to clear). Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
clear current panel SPI_T6963C_PanelFill(0); |
SPI_T6963C_GrFill
| Prototype |
procedure SPI_T6963C_GrFill(v : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Fill current graphic panel with appropriate value (0 to clear). Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
// clear current graphic panel SPI_T6963C_GrFill(0); |
SPI_T6963C_TxtFill
| Prototype |
procedure SPI_T6963C_TxtFill(v : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Fill current text panel with appropriate value (0 to clear). Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
// clear current text panel SPI_T6963C_TxtFill(0); |
SPI_T6963C_Cursor_Height
| Prototype |
procedure SPI_T6963C_Cursor_Height(n : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Set cursor size. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
SPI_T6963C_Cursor_Height(7); |
SPI_T6963C_Graphics
| Prototype |
procedure SPI_T6963C_Graphics(n : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Enable/disable graphic displaying. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
// enable graphic displaying SPI_T6963C_Graphics(1); |
SPI_T6963C_Text
| Prototype |
procedure SPI_T6963C_Text(n : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Enable/disable text displaying. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
// enable text displaying SPI_T6963C_Text(1); |
SPI_T6963C_Cursor
| Prototype |
procedure SPI_T6963C_Cursor(n : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Set cursor on/off. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
// set cursor on SPI_T6963C_Cursor(1); |
SPI_T6963C_Cursor_Blink
| Prototype |
procedure SPI_T6963C_Cursor_Blink(n : byte); |
|---|---|
| Returns |
Nothing. |
| Description |
Enable/disable cursor blinking. Parameters :
|
| Requires |
Toshiba Glcd module needs to be initialized. See SPI_T6963C_Config routine. |
| Example |
// enable cursor blinking SPI_T6963C_Cursor_Blink(1); |
Library Example
The following drawing demo tests advanced routines of the SPI T6963C Glcd library. Hardware configurations in this example are made for the T6963C 240x128 display, EasyPIC6 board and 16F887.
program SPI_T6963C_240x128;
uses __Lib_SPIT6963C_Const;
var
// Port Expander module connections
SPExpanderRST : sbit at RC0_bit;
SPExpanderCS : sbit at RC1_bit;
SPExpanderRST_Direction : sbit at TRISC0_bit;
SPExpanderCS_Direction : sbit at TRISC1_bit;
// End Port Expander module connections
var panel : byte; // current panel
i : word; // general purpose register
curs : byte; // cursor visibility
cposx,
cposy : word; // cursor x-y position
txt, txt1 : string[29];
begin
txt1 := ' EINSTEIN WOULD HAVE LIKED mE';
txt := ' GLCD LIBRARY DEMO, WELCOME !';
ANSEL := 0; // Configure AN pins as digital I/O
ANSELH := 0;
C1ON_bit := 0; // Disable comparators
C2ON_bit := 0;
TRISB0_bit := 1; // Set RB0 as input
TRISB1_bit := 1; // Set RB1 as input
TRISB2_bit := 1; // Set RB2 as input
TRISB3_bit := 1; // Set RB3 as input
TRISB4_bit := 1; // Set RB4 as input
// Initialize SPI module
SPI1_Init();
// // If Port Expander Library uses SPI2 module
// Pass pointer to SPI Read function of used SPI module
// Initialize SPI module used with PortExpander
// SPI2_Init_Advanced(_SPI_MASTER, _SPI_FCY_DIV32, _SPI_CLK_HI_TRAILING);
{*
* init display for 240 pixel width and 128 pixel height
* 8 bits character width
* data bus on MCP23S17 portB
* control bus on MCP23S17 portA
* bit 2 is !WR
* bit 1 is !RD
* bit 0 is !CD
* bit 4 is RST
* chip enable, reverse on, 8x8 font internaly set in library
*}
// Initialize SPI Toshiba 240x128
SPI_T6963C_Config(240, 128, 8, 0, 2, 1, 0, 4) ;
//Delay_ms(1000);
{*
* Enable both graphics and text display at the same time
*}
SPI_T6963C_graphics(1) ;
SPI_T6963C_text(1) ;
panel := 0 ;
i := 0 ;
curs := 0 ;
cposx := 0;
cposy := 0 ;
{*
* Text messages
*}
SPI_T6963C_write_text(txt, 0, 0, SPI_T6963C_ROM_MODE_XOR) ;
SPI_T6963C_write_text(txt1, 0, 15, SPI_T6963C_ROM_MODE_XOR) ;
{*
* Cursor
*}
SPI_T6963C_cursor_height(8) ; // 8 pixel height
SPI_T6963C_set_cursor(0, 0) ; // move cursor to top left
SPI_T6963C_cursor(0) ; // cursor off
{*
* Draw rectangles
*}
SPI_T6963C_rectangle(0, 0, 239, 127, SPI_T6963C_WHITE) ;
SPI_T6963C_rectangle(20, 20, 219, 107, SPI_T6963C_WHITE) ;
SPI_T6963C_rectangle(40, 40, 199, 87, SPI_T6963C_WHITE) ;
SPI_T6963C_rectangle(60, 60, 179, 67, SPI_T6963C_WHITE) ;
{*
* Draw a cross
*}
SPI_T6963C_line(0, 0, 239, 127, SPI_T6963C_WHITE) ;
SPI_T6963C_line(0, 127, 239, 0, SPI_T6963C_WHITE) ;
{*
* Draw solid boxes
*}
SPI_T6963C_box(0, 0, 239, 8, SPI_T6963C_WHITE) ;
SPI_T6963C_box(0, 119, 239, 127, SPI_T6963C_WHITE) ;
{*
* Draw circles
*}
SPI_T6963C_circle(120, 64, 10, SPI_T6963C_WHITE) ;
SPI_T6963C_circle(120, 64, 30, SPI_T6963C_WHITE) ;
SPI_T6963C_circle(120, 64, 50, SPI_T6963C_WHITE) ;
SPI_T6963C_circle(120, 64, 70, SPI_T6963C_WHITE) ;
SPI_T6963C_circle(120, 64, 90, SPI_T6963C_WHITE) ;
SPI_T6963C_circle(120, 64, 110, SPI_T6963C_WHITE) ;
SPI_T6963C_circle(120, 64, 130, SPI_T6963C_WHITE) ;
SPI_T6963C_sprite(76, 4, @einstein, 88, 119) ; // Draw a sprite
SPI_T6963C_setGrPanel(1) ; // Select other graphic panel
SPI_T6963C_sprite(0, 0, @mikroE_240x64_bmp, 240, 64); // 240x128 can't be stored in most of PIC16 MCUs
SPI_T6963C_sprite(0, 64, @mikroE_240x64_bmp, 240, 64); // it is replaced with smaller picture 240x64
// Smaller picture is drawn two times
while (TRUE) do // Endless loop
begin
{*
* If PORTB_0 is pressed, toggle the display between graphic panel 0 and graphic 1
*}
if( RB0_bit <> 0) then
begin
Inc(panel) ;
panel := panel and 1;
SPI_T6963C_setPtr((SPI_T6963C_grMemSize + SPI_T6963C_txtMemSize) * panel, SPI_T6963C_GRAPHIC_HOME_ADDRESS_SET) ;
Delay_ms(300) ;
end
{*
* If PORTB_1 is pressed, display only graphic panel
*}
else
if ( RB1_bit <> 0) then
begin
SPI_T6963C_graphics(1) ;
SPI_T6963C_text(0) ;
Delay_ms(300) ;
end
{*
* If PORTB_2 is pressed, display only text panel
*}
else
if ( RB2_bit <> 0) then
begin
SPI_T6963C_graphics(0) ;
SPI_T6963C_text(1) ;
Delay_ms(300) ;
end
{*
* If PORTB_3 is pressed, display text and graphic panels
*}
else
if ( RB3_bit <> 0) then
begin
SPI_T6963C_graphics(1) ;
SPI_T6963C_text(1) ;
Delay_ms(300) ;
end
{*
* If PORTB_4 is pressed, change cursor
*}
else
if( RB4_bit <> 0) then
begin
Inc(curs);
if (curs = 3) then
curs := 0;
case curs of
0:
// no cursor
SPI_T6963C_cursor(0) ;
1: begin
// blinking cursor
SPI_T6963C_cursor(1) ;
SPI_T6963C_cursor_blink(1) ;
end;
2: begin
// non blinking cursor
SPI_T6963C_cursor(1) ;
SPI_T6963C_cursor_blink(0) ;
end;
end;
Delay_ms(300) ;
end;
{*
* Move cursor, even if not visible
*}
Inc(cposx);
if (cposx = SPI_T6963C_txtCols) then
begin
cposx := 0 ;
Inc(cposy);
if (cposy = SPI_T6963C_grHeight / SPI_T6963C_CHARACTER_HEIGHT) then
cposy := 0 ;
end;
SPI_T6963C_set_cursor(cposx, cposy) ;
Delay_ms(100) ;
end;
end.
HW Connection

SPI T6963C Glcd HW connection
What do you think about this topic ? Send us feedback!




