T6963C Graphic Lcd Library
The mikroBasic PRO for PIC32 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 PIC32 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
The following variables must be defined in all projects using T6963C Graphic Lcd library: | Description : | Example : |
---|---|---|
dim T6963C_dataPort as longword sfr atomic external |
T6963C Data Port. | dim T6963C_dataPort as byte at PORTB |
dim T6963C_ctrlwr as sbit sfr atomic external |
Write signal. | dim T6963C_ctrlwr as sbit at LATF2_bit |
dim T6963C_ctrlrd as sbit sfr atomic external |
Read signal. | dim T6963C_ctrlrd as sbit at LATF1_bit |
dim T6963C_ctrlcd as sbit sfr atomic external |
Command/Data signal. | dim T6963C_ctrlcd as sbit at LATF0_bit |
dim T6963C_ctrlrst as sbit sfr atomic external |
Reset signal. | dim T6963C_ctrlrst as sbit at LATF4_bit |
dim T6963C_ctrlwr_Direction as sbit sfr atomic external |
Direction of the Write pin. | dim T6963C_ctrlwr_Direction as sbit at TRISF2_bit |
dim T6963C_ctrlrd_Direction as sbit sfr atomic external |
Direction of the Read pin. | dim T6963C_ctrlrd_Direction as sbit at TRISF1_bit |
dim T6963C_ctrlcd_Direction as sbit sfr atomic external |
Direction of the Command/Data pin. | dim T6963C_ctrlcd_Direction as sbit at TRISF0_bit |
dim T6963C_ctrlrst_Direction as sbit sfr atomic external |
Direction of the Reset pin. | dim T6963C_ctrlrst_Direction as sbit at TRISF4_bit |
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
- 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 |
sub procedure T6963C_init(dim width, height, fntW as word, dim byref data as word, dim byref cntrl as word, dim wr, rd, cd, rst as word) |
---|---|
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 |
Global variables :
|
Example |
' T6963C module connections dim T6963C_dataPort as byte at PORTB ' DATA port dim T6963C_ctrlwr as sbit at LATF2_bit ' WR write signal dim T6963C_ctrlrd as sbit at LATF1_bit ' RD read signal dim T6963C_ctrlcd as sbit at LATF0_bit ' CD command/data signal dim T6963C_ctrlrst as sbit at LATF4_bit ' RST reset signal dim T6963C_ctrlwr_Direction as sbit at TRISF2_bit ' WR write signal direction dim T6963C_ctrlrd_Direction as sbit at TRISF1_bit ' RD read signal direction dim T6963C_ctrlcd_Direction as sbit at TRISF0_bit ' CD command/data signal direction dim T6963C_ctrlrst_Direction as sbit at TRISF4_bit ' RST reset signal direction ' Signals not used by library, they are set in main function dim T6963C_ctrlce as sbit at LATF3_bit ' CE signal dim T6963C_ctrlfs as sbit at LATF6_bit ' FS signal dim T6963C_ctrlmd as sbit at LATF5_bit ' MD signal dim T6963C_ctrlce_Direction as sbit at TRISF3_bit ' CE signal direction dim T6963C_ctrlfs_Direction as sbit at TRISF6_bit ' FS signal direction dim T6963C_ctrlmd_Direction as sbit at TRISF5_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) |
Notes |
None. |
T6963C_writeData
Prototype |
sub procedure T6963C_writeData(dim mydata as byte) |
---|---|
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 |
sub procedure T6963C_writeCommand(dim mydata as byte) |
---|---|
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 |
sub procedure T6963C_setPtr(dim p as word, dim c as byte) |
---|---|
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 |
sub procedure T6963C_Set_Ext_Buffer(dim getExtDataPtr as ^TT6963C_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 |
Glcd module needs to be initialized. See the T6963C_Init routine. |
Example |
T6963C_Set_Ext_Buffer(@ReadExternalBuffer) |
T6963C_waitReady
Prototype |
sub procedure 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 |
sub procedure T6963C_fill(dim v as byte, dim start, len as word) |
---|---|
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 |
sub procedure T6963C_dot(dim x, y as integer, dim color as byte) |
---|---|
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 |
sub procedure T6963C_Set_Font_Adv(dim activeFont as ^const byte, dim font_color as word, dim font_orientation as byte) |
---|---|
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 |
sub procedure T6963C_Set_Ext_Font_Adv(dim activeFont as longword, dim font_color as word, dim font_orientation as word) |
---|---|
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 |
sub procedure T6963C_write_char(dim c, x, y, mode as byte) |
---|---|
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 |
sub procedure T6963C_write_char_adv(dim ch, x, y as 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 the T6963C_init routine. |
Example |
T6963C_write_char_adv("A",22,23) |
Notes |
None. |
T6963C_write_text
Prototype |
sub procedure T6963C_write_char(dim byref str as byte[10], dim x, y, mode as byte) |
---|---|
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_char("GLCD LIBRARY DEMO, WELCOME !", 0, 0, T6963C_ROM_MODE_XOR) |
Notes |
None. |
T6963C_Write_Text_Adv
Prototype |
sub procedure T6963C_Write_Text_Adv(dim byref text as string, dim x, y as 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 the T6963C_init routine. |
Example |
T6963C_Write_Text_Adv("Glcd LIBRARY DEMO, WELCOME !", 0, 0) |
Notes |
None. |
T6963C_line
Prototype |
sub procedure T6963C_line(dim x0, y0, x1, y1 as integer, dim pcolor as byte) |
---|---|
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 |
sub procedure T6963C_rectangle(dim x0, y0, x1, y1 as integer, dim pcolor as byte) |
---|---|
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 |
sub procedure T6963C_rectangle_round_edges(dim x0, y0, x1, y1, radius as integer, dim pcolor as byte) |
---|---|
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 |
sub procedure T6963C_rectangle_round_edges_fill(dim x0, y0, x1, y1, radius as integer, dim pcolor as byte) |
---|---|
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 |
sub procedure T6963C_box(dim x0, y0, x1, y1 as integer, dim pcolor as byte) |
---|---|
Description |
Draws a box on 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 |
sub procedure T6963C_circle(dim x, y as integer, dim r as longint, dim pcolor as word) |
---|---|
Description |
Draws a circle on 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 |
sub procedure T6963C_circle_fill(dim x, y as integer, dim r as longint, dim pcolor as byte) |
---|---|
Description |
Draws a filled circle on 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 |
sub procedure T6963C_image(dim const pic as ^byte) |
---|---|
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 |
sub procedureT6963C_Ext_Image(dim image as longword) |
---|---|
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 |
sub procedure T6963C_PartialImage(dim x_left, y_top, width, height, picture_width, picture_height as word, const image as ^byte) |
---|---|
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 |
sub procedure T6963C_Ext_PartialImage(dim x_left, y_top, width, height, picture_width, picture_height as word, dim image as longword) |
---|---|
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 |
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 |
sub procedure T6963C_sprite(dim px, py as byte, dim const pic as ^byte, dim sx, sy as byte) |
---|---|
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 |
sub procedure T6963C_set_cursor(dim x, y as byte) |
---|---|
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_displayGrPanel
Prototype |
sub procedure T6963C_displayGrPanel(dim n as word) |
---|---|
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 |
sub procedure T6963C_displayTxtPanel(dim n as word) |
---|---|
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 |
sub procedure T6963C_setGrPanel(dim n as word) |
---|---|
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 |
sub procedure T6963C_setTxtPanel(dim n as word) |
---|---|
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 |
sub procedure T6963C_panelFill(dim v as word) |
---|---|
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 |
sub procedure T6963C_grFill(dim v as word) |
---|---|
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 |
sub procedure T6963C_txtFill(dim v as word) |
---|---|
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 |
sub procedure T6963C_cursor_height(dim n as word) |
---|---|
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 |
sub procedure T6963C_graphics(dim n as word) |
---|---|
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 |
sub procedure T6963C_text(dim n as word) |
---|---|
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 |
sub procedure T6963C_cursor(dim n as word) |
---|---|
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 |
sub procedure T6963C_cursor_blink(dim n as word) |
---|---|
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. Hardware configurations in this example are made for the LV-32MX v6 board and PIC32MX460F512L.
program T6963C_240x128
include __Lib_T6963C_Consts
' T6963C module connections
dim T6963C_dataPort as byte at PORTD ' DATA port
dim T6963C_cntlPort as byte at PORTE ' DATA port
dim T6963C_ctrlwr as sbit at LATE2_bit ' WR write signal
dim T6963C_ctrlrd as sbit at LATE1_bit ' RD read signal
dim T6963C_ctrlcd as sbit at LATE0_bit ' CD command/data signal
dim T6963C_ctrlrst as sbit at LATE4_bit ' RST reset signal
dim T6963C_ctrlwr_Direction as sbit at TRISE2_bit ' WR write signal direction
dim T6963C_ctrlrd_Direction as sbit at TRISE1_bit ' RD read signal direction
dim T6963C_ctrlcd_Direction as sbit at TRISE0_bit ' CD command/data signal direction
dim T6963C_ctrlrst_Direction as sbit at TRISE4_bit ' RST reset signal direction
' Signals not used by library, they are set in main function
dim T6963C_ctrlce as sbit at LATE3_bit ' CE signal
dim T6963C_ctrlfs as sbit at LATE6_bit ' FS signal
dim T6963C_ctrlmd as sbit at LATE5_bit ' MD signal
dim T6963C_ctrlce_Direction as sbit at TRISE3_bit ' CE signal direction
dim T6963C_ctrlfs_Direction as sbit at TRISE6_bit ' FS signal direction
dim T6963C_ctrlmd_Direction as sbit at TRISE5_bit ' MD signal direction
' End T6963C module connections
dim panel as byte ' current panel
i as word ' general purpose register
curs as byte ' cursor visibility
cposx,
cposy as word ' cursor x-y position
txtcols as byte ' number of text coloms
txt, txt1, txt2 as string[29]
main:
#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
txt1 = " EINSTEIN WOULD HAVE LIKED mE"
txt = " GLCD LIBRARY DEMO, WELCOME !"
txt2 = " Partial image demo! "
CHECON = 0x32
AD1PCFG = 0xFFFF ' initialize AN pins as digital
TRISB8_bit = 1 ' Set RB8 as input
TRISB9_bit = 1 ' Set RB9 as input
TRISB10_bit = 1 ' Set RB10 as input
TRISB11_bit = 1 ' Set RB11 as input
TRISB12_bit = 1 ' Set RB12 as input
TRISB13_bit = 1 ' Set RB12 as input
T6963C_ctrlce_Direction = 0
T6963C_ctrlce = 0 ' Enable T6963C
T6963C_ctrlfs_Direction = 0
T6963C_ctrlfs = 0 ' Font Select 8x8
T6963C_ctrlmd_Direction = 0
T6963C_ctrlmd = 0 ' Column number select
panel = 0
i = 0
curs = 0
cposx = 0
cposy = 0
' Initialize T6369C
T6963C_init(240, 128, 8)
' * Enable both graphics and text display at the same time
T6963C_graphics(1)
T6963C_text(1)
' * 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)
while TRUE ' Endless loop
' * If RB8 is pressed, toggle the display between graphic panel 0 and graphic 1
if(RB8_bit <> 0) then
T6963C_graphics(1)
T6963C_text(0)
Delay_ms(300)
' * If RB9 is pressed, display only graphic panel
else
if (RB9_bit <> 0) then
Inc(panel)
panel = panel and 1
T6963C_displayGrPanel(panel)
Delay_ms(300)
' * If RB10 is pressed, display only text panel
else
if (RB10_bit <> 0) then
T6963C_graphics(0)
T6963C_text(1)
Delay_ms(300)
' * If RB11 is pressed, display text and graphic panels
else
if (RB11_bit <> 0) then
T6963C_graphics(1)
T6963C_text(1)
Delay_ms(300)
' * If RB12 is pressed, change cursor
else
if(RB12_bit <> 0) then
Inc(curs)
if (curs = 3) then
curs = 0
end if
select case curs
case 0
' no cursor
T6963C_cursor(0)
case 1
' blinking cursor
T6963C_cursor(1)
T6963C_cursor_blink(1)
case 2
' non blinking cursor
T6963C_cursor(1)
T6963C_cursor_blink(0)
end select
Delay_ms(300)
end if
'*
'* If RB13 is pressed, perform the "Partial image" demonstration
'*
#IFDEF PARTIAL_IMAGE_DEMO
if( RB13_bit = 1) then
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_ms(1500)
T6963C_PartialImage(0, 0, 128, 128, 240, 128, @mikroE_240x128_bmp)
Delay_ms(1500)
T6963C_PartialImage(0, 0, 240, 128, 240, 128, @mikroE_240x128_bmp)
Delay_ms(1500)
T6963C_txtFill(0)
T6963C_write_text(txt, 0, 0, T6963C_ROM_MODE_XOR)
T6963C_write_text(txt1, 0, 15, T6963C_ROM_MODE_XOR)
end if
#ENDIF
end if
end if
end if
end if
'*
' * Move cursor, even if not visible
'*
Inc(cposx)
if (cposx = T6963C_txtCols) then
cposx = 0
Inc(cposy)
if (cposy = T6963C_grHeight div T6963C_CHARACTER_HEIGHT) then
cposy = 0
end if
end if
T6963C_set_cursor(cposx, cposy)
Delay_ms(100)
wend
end.
HW Connection
T6963C Glcd HW connection
What do you think about this topic ? Send us feedback!