Graphic Lcd Library
The mikroC PRO for FT90x provides a library for operating Graphic Lcd 128x64 (with commonly used Samsung KS108/KS107 controller).
For creating a custom set of Glcd images use Glcd Bitmap Editor Tool.
Library Dependency Tree

External dependencies of Graphic Lcd Library
The following variables must be defined in all projects using Graphic Lcd Library: | Description : | Example : |
---|---|---|
extern sfr char GLCD_DataPort; |
Glcd Data Port. | char GLCD_DataPort at GPIO_PORT_08_15; |
extern sfr sbit GLCD_CS1; |
Chip Select 1 line. | sbit GLCD_CS1 at GPIO_PIN56_bit; |
extern sfr sbit GLCD_CS2; |
Chip Select 2 line. | sbit GLCD_CS2 at GPIO_PIN41_bit; |
extern sfr sbit GLCD_RS; |
Register select line. | sbit GLCD_RS at GPIO_PIN34_bit; |
extern sfr sbit GLCD_RW; |
Read/Write line. | sbit GLCD_RW at GPIO_PIN40_bit; |
extern sfr sbit GLCD_EN; |
Enable line. | sbit GLCD_EN at GPIO_PIN35_bit; |
extern sfr sbit GLCD_RST; |
Reset line. | sbit GLCD_RST at GPIO_PIN42_bit; |
Library Routines
Basic routines:
Advanced routines:
- Glcd_Fill
- Glcd_Dot
- Glcd_Line
- Glcd_V_Line
- Glcd_H_Line
- Glcd_Rectangle
- Glcd_Rectangle_Round_Edges
- Glcd_Rectangle_Round_Edges_Fill
- Glcd_Box
- Glcd_Circle
- Glcd_Circle_Fill
- Glcd_Set_Font
- Glcd_Set_Font_Adv
- Glcd_Set_Ext_Font_Adv
- Glcd_Write_Char
- Glcd_Write_Char_Adv
- Glcd_Write_Text
- Glcd_Write_Text_Adv
- Glcd_Image
- Glcd_Ext_Image
- Glcd_PartialImage
- Glcd_Ext_PartialImage
Glcd_Init
Prototype |
void Glcd_Init(); |
---|---|
Description |
Initializes the Glcd module. Each of the control lines are both port and pin configurable, while data lines must be on a single port (pins <0:7>). |
Parameters |
None. |
Returns |
Nothing. |
Requires |
External dependencies of the library from the top of the page must be defined before using this function. |
Example |
// Glcd module connections char GLCD_DataPort at GPIO_PORT_08_15; sbit GLCD_CS1 at GPIO_PIN56_bit; sbit GLCD_CS2 at GPIO_PIN41_bit; sbit GLCD_RS at GPIO_PIN34_bit; sbit GLCD_RW at GPIO_PIN40_bit; sbit GLCD_EN at GPIO_PIN35_bit; sbit GLCD_RST at GPIO_PIN42_bit; // End Glcd module connections ... Glcd_Init(); // Initialize GLCD |
Notes |
None. |
Glcd_Set_Side
Prototype |
void Glcd_Set_Side(unsigned short x_pos); |
---|---|
Description |
Selects Glcd side. Refer to the Glcd datasheet for detailed explanation. |
Parameters |
|
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
The following two lines are equivalent, and both of them select the left side of Glcd: Glcd_Select_Side(0); Glcd_Select_Side(10); |
Notes |
For side, x axis and page layout explanation see schematic at the bottom of this page. |
Glcd_Set_X
Prototype |
void Glcd_Set_X(unsigned short x_pos); |
---|---|
Description |
Sets x-axis position to |
Parameters |
|
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
Glcd_Set_X(25); |
Notes |
For side, x axis and page layout explanation see schematic at the bottom of this page. |
Glcd_Set_Page
Prototype |
void Glcd_Set_Page(unsigned short page); |
---|---|
Description |
Selects page of the Glcd. |
Parameters |
|
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
Glcd_Set_Page(5); |
Notes |
For side, x axis and page layout explanation see schematic at the bottom of this page. |
Glcd_Read_Data
Prototype |
unsigned short Glcd_Read_Data(); |
---|---|
Description |
Reads data from from the current location of Glcd memory and moves to the next location. |
Parameters |
None. |
Returns |
One byte from Glcd memory, formatted as a word (16-bit). |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. Glcd side, x-axis position and page should be set first. See functions Glcd_Set_Side, Glcd_Set_X, and Glcd_Set_Page. |
Example |
unsigned int data_; ... Glcd_Read_Data(); data_ = Glcd_Read_Data(); |
Notes |
This routine needs to be called twice; After the first call, data is placed in the buffer register. After the second call, data is passed from the buffer register to data lines. |
Glcd_Write_Data
Prototype |
void Glcd_Write_Data(unsigned short data_); |
---|---|
Returns |
Nothing. |
Description |
Writes one byte to the current location in Glcd memory and moves to the next location. Parameters :
|
Requires |
Glcd needs to be initialized, see Glcd_Init routine. Glcd side, x-axis position and page should be set first. See functions Glcd_Set_Side, Glcd_Set_X, and Glcd_Set_Page. |
Example |
unsigned short data_; ... Glcd_Write_Data(data_); |
Glcd_Set_Ext_Buffer
Prototype |
void Glcd_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 Glcd_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; } Glcd_Set_Ext_Buffer(ReadExternalBuffer); |
Glcd_Fill
Prototype |
void Glcd_Fill(unsigned short pattern); |
---|---|
Description |
Fills Glcd memory with the byte To clear the Glcd screen, use To fill the screen completely, use |
Parameters |
|
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
// Clear screen Glcd_Fill(0); |
Notes |
None. |
Glcd_Dot
Prototype |
void Glcd_Dot(unsigned short x_pos, unsigned short y_pos, unsigned short color); |
---|---|
Description |
Draws a dot on Glcd at coordinates ( |
Parameters |
The parameter |
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
// Invert the dot in the upper left corner Glcd_Dot(0, 0, 2); |
Notes |
For x and y axis layout explanation see schematic at the bottom of this page. |
Glcd_Line
Prototype |
void Glcd_Line(int x_start, int y_start, int x_end, int y_end, unsigned short color); |
---|---|
Description |
Draws a line on Glcd. |
Parameters |
The parameter |
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
// Draw a line between dots (0,0) and (20,30) Glcd_Line(0, 0, 20, 30, 1); |
Notes |
None. |
Glcd_V_Line
Prototype |
void Glcd_V_Line(unsigned short y_start, unsigned short y_end, unsigned short x_pos, unsigned short color); |
---|---|
Description |
Draws a vertical line on Glcd. |
Parameters |
The parameter |
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
// Draw a vertical line between dots (10,5) and (10,25) Glcd_V_Line(5, 25, 10, 1); |
Notes |
None. |
Glcd_H_Line
Prototype |
void Glcd_H_Line(unsigned short x_start, unsigned short x_end, unsigned short y_pos, unsigned short color); |
---|---|
Description |
Draws a horizontal line on Glcd. |
Parameters |
The parameter |
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
// Draw a horizontal line between dots (10,20) and (50,20) Glcd_H_Line(10, 50, 20, 1); |
Notes |
None. |
Glcd_Rectangle
Prototype |
void Glcd_Rectangle(unsigned short x_upper_left, unsigned short y_upper_left, unsigned short x_bottom_right, unsigned short y_bottom_right, unsigned short color); |
---|---|
Description |
Draws a rectangle on Glcd. |
Parameters |
The parameter |
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
// Draw a rectangle between dots (5,5) and (40,40) Glcd_Rectangle(5, 5, 40, 40, 1); |
Notes |
None. |
Glcd_Rectangle_Round_Edges
Prototype |
void Glcd_Rectangle_Round_Edges(unsigned short x_upper_left, unsigned short y_upper_left, unsigned short x_bottom_right, unsigned short y_bottom_right, unsigned short round_radius, unsigned short color); |
---|---|
Description |
Draws a rounded edge rectangle on Glcd. |
Parameters |
The parameter |
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
// Draw a rounded edge rectangle between dots (5,5) and (40,40) with the radius of 12 Glcd_Rectangle_Round_Edges(5, 5, 40, 40, 12, 1); |
Notes |
None. |
Glcd_Rectangle_Round_Edges_Fill
Prototype |
void Glcd_Rectangle_Round_Edges_Fill(unsigned short x_upper_left, unsigned short y_upper_left, unsigned short x_bottom_right, unsigned short y_bottom_right, unsigned short round_radius, unsigned short color); |
---|---|
Description |
Draws a filled rounded edge rectangle on Glcd. |
Parameters |
The parameter |
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
// Draws a filled rounded edge rectangle between dots (5,5) and (40,40) with the radius of 12 Glcd_Rectangle_Round_Edges_Fill(5, 5, 40, 40, 12, 1); |
Notes |
None. |
Glcd_Box
Prototype |
void Glcd_Box(unsigned short x_upper_left, unsigned short y_upper_left, unsigned short x_bottom_right, unsigned short y_bottom_right, unsigned short color); |
---|---|
Description |
Draws a box on Glcd. |
Parameters |
The parameter |
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
// Draw a box between dots (5,15) and (20,40) Glcd_Box(5, 15, 20, 40, 1); |
Notes |
None. |
Glcd_Circle
Prototype |
void Glcd_Circle(int x_center, int y_center, int radius, unsigned short color); |
---|---|
Description |
Draws a circle on Glcd. |
Parameters |
The parameter |
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
// Draw a circle with center in (50,50) and radius=10 Glcd_Circle(50, 50, 10, 1); |
Notes |
None. |
Glcd_Circle_Fill
Prototype |
void Glcd_Circle_Fill(int x_center, int y_center, int radius, unsigned short color); |
---|---|
Description |
Draws a filled circle on Glcd. |
Parameters |
The parameter |
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
// Draws a filled circle with center in (50,50) and radius=10 Glcd_Circle_Fill(50, 50, 10, 1); |
Notes |
None. |
Glcd_Set_Font
Prototype |
void Glcd_Set_Font(const char *activeFont, unsigned short aFontWidth, unsigned short aFontHeight, unsigned int aFontOffs); |
---|---|
Description |
Sets font that will be used with Glcd_Write_Char and Glcd_Write_Text routines. |
Parameters |
The user can use fonts given in the file “__Lib_GLCDFonts” file located in the Uses folder or create his own fonts. List of supported fonts:
For the sake of the backward compatibility, these fonts are supported also:
|
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
// Use the custom 5x7 font "myfont" which starts with space (32): Glcd_Set_Font(&myfont, 5, 7, 32); |
Notes |
None. |
Glcd_Set_Font_Adv
Prototype |
void Glcd_Set_Font_Adv(const char *activeFont, unsigned char font_color, char font_orientation); |
---|---|
Description |
Sets font that will be used with Glcd_Write_Char_Adv and Glcd_Write_Text_Adv routines. |
Parameters |
|
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
Glcd_Set_Font_Adv(&myfont, 0, 0); |
Notes |
None. |
Glcd_Set_Ext_Font_Adv
Prototype |
void Glcd_Set_Ext_Font_Adv(unsigned long activeFont, unsigned int font_color, char font_orientation); |
---|---|
Description |
Sets font that will be used with Glcd_Write_Char_Adv and Glcd_Write_Text_Adv routines. Font is located in an external resource. |
Parameters |
|
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
Glcd_Set_Ext_Font_Adv(173296, 5, 7, 32); |
Notes |
None. |
Glcd_Write_Char
Prototype |
void Glcd_Write_Char(unsigned short character, unsigned short x_pos, unsigned short page_num, unsigned short color); |
---|---|
Description |
Prints character on the Glcd. |
Parameters |
The parameter |
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. Use Glcd_Set_Font to specify the font for display; if no font is specified, then default |
Example |
// Write character 'C' on the position 10 inside the page 2: Glcd_Write_Char('C', 10, 2, 1); |
Notes |
For x axis and page layout explanation see schematic at the bottom of this page. |
Glcd_Write_Char_Adv
Prototype |
void Glcd_Write_Char_Adv(unsigned int c, unsigned int x, unsigned int y); |
---|---|
Returns |
Nothing. |
Description |
Writes a char on the glcd at coordinates (x, y).
|
Requires |
glcd module needs to be initialized. See the Glcd_Init routine. |
Example |
Glcd_Write_Char_Adv('A',22,23); |
Glcd_Write_Text
Prototype |
void Glcd_Write_Text(char *text, unsigned short x_pos, unsigned short page_num, unsigned short color); |
---|---|
Description |
Prints text on Glcd. |
Parameters |
The parameter |
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. Use Glcd_Set_Font to specify the font for display; if no font is specified, then default |
Example |
// Write text "Hello world!" on the position 10 inside the page 2: Glcd_Write_Text("Hello world!", 10, 2, 1); |
Notes |
For x axis and page layout explanation see schematic at the bottom of this page. |
Glcd_Write_Text_Adv
Prototype |
void Glcd_Write_Text_Adv(unsigned char *text, unsigned int x, unsigned int y); |
---|---|
Returns |
Nothing. |
Description |
Writes text on the glcd at coordinates (x, y). Parameters :
|
Requires |
Glcd module needs to be initialized. See the Glcd_Init routine. |
Example |
Glcd_Write_Text_Adv("GLCD LIBRARY DEMO, WELCOME !", 0, 0); |
Glcd_Image
Prototype |
void Glcd_Image(code const unsigned short *image); |
---|---|
Description |
Displays bitmap on Glcd. |
Parameters |
|
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
// Draw image my_image on Glcd Glcd_Image(my_image); |
Notes |
Use the mikroC PRO for FT90x integrated Glcd Bitmap Editor, Tools > Glcd Bitmap Editor, to convert image to a constant array suitable for displaying on Glcd. |
Glcd_Ext_Image
Prototype |
void Glcd_Ext_Image(unsigned long image); |
---|---|
Description |
Displays a bitmap from an external resource. |
Parameters |
|
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
Glcd_Ext_Image(153608); |
Notes |
Use the mikroC PRO for FT90x integrated Glcd Bitmap Editor, Tools > Glcd Bitmap Editor, to convert image to a constant array suitable for displaying on Glcd. |
Glcd_PartialImage
Prototype |
void Glcd_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 unsigned short * image); |
---|---|
Description |
Displays a partial area of the image on a desired location. |
Parameters |
|
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_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. Glcd_PartialImage(10, 12, 10, 15, 16, 32, image); |
Notes |
Use the mikroC PRO for FT90x integrated Glcd Bitmap Editor, Tools > Glcd Bitmap Editor, to convert image to a constant array suitable for displaying on Glcd. |
Glcd_Ext_PartialImage
Prototype |
void Glcd_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, located on an external resource, on a desired location of the screen. |
Parameters |
|
Returns |
Nothing. |
Requires |
Glcd needs to be initialized, see Glcd_Init routine. |
Example |
Glcd_Ext_PartialImage(10, 12, 10, 15, 16, 32, 0); |
Notes |
Use the mikroC PRO for FT90x integrated Glcd Bitmap Editor, Tools > Glcd Bitmap Editor, to convert image to a constant array suitable for displaying on Glcd. |
Library Example
What do you think about this topic ? Send us feedback!