SPI Graphic Lcd Library
mikroPascal PRO для ARM предоставляет библиотеку для работы с графическим Lcd 128x64 (с обычно используемым контроллером Samsung KS108 / KS107) через интерфейс SPI.
Для создания пользовательского набора изображений Glcd используйте инструмент Glcd Bitmap Editor.
- При использовании этой библиотеки с MCU семейства ARM следует помнить о несовместимости их напряжения питания с определенным количеством модулей Glcd на базе Samsung KS0108.
Таким образом, может потребоваться дополнительный внешний источник питания для этих модулей. - Библиотека использует модуль SPI для связи. Пользователь должен инициализировать соответствующий SPI-модуль перед использованием библиотеки SPI Glcd.
- Для MCU с несколькими модулями SPI можно инициализировать все из них, а затем переключиться с помощью
SPI_Set_Active()
процедуры. См. также функции библиотеки SPI Library. - Эта библиотека предназначена для работы с выводом платы адаптера последовательной шины Lcd / Glcd mikroElektronika, см. Схему в нижней части этой страницы.
Дерево зависимостей библиотеки
Внешние зависимости библиотеки SPI Lcd
Реализация подпрограмм библиотеки SPI Lcd основана на процедурах Библиотеки расширений порта.
Внешние зависимости такие же, как и Внешние зависимости библиотеки расширений порта.
Библиотечные процедуры
Основные процедуры:
- SPI_Glcd_Init
- SPI_Glcd_Set_Side
- SPI_Glcd_Set_Page
- SPI_Glcd_Set_X
- SPI_Glcd_Read_Data
- SPI_Glcd_Write_Data
- SPI_Glcd_Set_Ext_Buffer
Расширенные процедуры:
- SPI_Glcd_Fill
- SPI_Glcd_Dot
- SPI_Glcd_Line
- SPI_Glcd_V_Line
- SPI_Glcd_H_Line
- SPI_Glcd_Rectangle
- SPI_Glcd_Rectangle_Round_Edges
- SPI_Glcd_Rectangle_Round_Edges_Fill
- SPI_Glcd_Box
- SPI_Glcd_Circle
- SPI_Glcd_Circle_Fill
- SPI_Glcd_Set_Font
- SPI_Glcd_Set_Font_Adv
- SPI_Glcd_Set_Ext_Font_Adv
- SPI_Glcd_Write_Char
- SPI_Glcd_Write_Char_Adv
- SPI_Glcd_Write_Text
- SPI_Glcd_Write_Text_Adv
- SPI_Glcd_Image
- SPI_Glcd_Ext_Image
- SPI_Glcd_PartialImage
- SPI_Glcd_Ext_PartialImage
SPI_Glcd_Init
Прототип |
procedure SPI_Glcd_Init(DeviceAddress : byte); |
---|---|
Описание |
Инициализирует модуль Glcd через интерфейс SPI. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
Внешние зависимости такие же, как и Внешние зависимости библиотеки расширений порта.
|
Пример |
Stellaris// Port Expander module connections var SPExpanderRST : sbit at GPIO_PORTA_DATA.B0; SPExpanderCS : sbit at GPIO_PORTA_DATA.B1; SPExpanderRST_Direction : sbit at GPIO_PORTA_DIR.B0; SPExpanderCS_Direction : sbit at GPIO_PORTA_DIR.B1; // End Port Expander module connections ... // If Port Expander Library uses SPI module : SPI1_Init(); // Initialize SPI module used with PortExpander SPI_Glcd_Init(0); MSP432// Port Expander module connections var SPExpanderRST : sbit at DIO_P6OUT.B0; SPExpanderCS : sbit at DIO_P6OUT.B1; SPExpanderRST_Direction : sbit at DIO_P6DIR.B0; SPExpanderCS_Direction : sbit at DIO_P6DIR.B1; // End Port Expander module connections ... // If Port Expander Library uses SPI module : SPI1_Init(); // Initialize SPI module used with PortExpander SPI_Glcd_Init(0); STM32// Port Expander module connections var SPExpanderRST : sbit at GPIOB_ODR.B0; SPExpanderCS : sbit at GPIOB_ODR.B1; // End Port Expander module connections ... // Initialize SPI module used with PortExpander SPI1_Init_Advanced(_SPI_FPCLK_DIV4, _SPI_MASTER or _SPI_8_BIT or _SPI_CLK_IDLE_LOW or _SPI_FIRST_CLK_EDGE_TRANSITION or _SPI_MSB_FIRST or _SPI_SS_DISABLE or _SPI_SSM_ENABLE or _SPI_SSI_1, @_GPIO_MODULE_SPI1_PB345); SPI_Glcd_Init(0); CEC1x02// Port Expander module connections var SPExpanderRST : sbit at GPIO_OUTPUT_PIN_027_bit; SPExpanderCS : sbit at GPIO_OUTPUT_PIN_146_bit; // End Port Expander module connections ... // Initialize SPI module used with PortExpander SPI0_Init_Advanced(1000000,0,0); SPI_Glcd_Init(0); |
Примечания |
Нет. |
SPI_Glcd_Set_Side
Прототип |
procedure SPI_Glcd_Set_Side(x_pos : byte); |
---|---|
Описание |
Выбирает сторону Glcd. Подробное описание см. В техническом описании Glcd. |
Параметры |
Параметр |
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
Следующие две строки эквивалентны, и оба они выбирают левую сторону Glcd: SPI_Glcd_Set_Side(0); SPI_Glcd_Set_Side(10); |
Примечания |
Для стороны, оси x и описания макета страницы см. Схему внизу этой страницы. |
SPI_Glcd_Set_Page
Прототип |
procedure SPI_Glcd_Set_Page(page : byte); |
---|---|
Описание |
Выбирает страницу Glcd. |
Возвращает |
|
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
SPI_Glcd_Set_Page(5); |
Примечания |
Для стороны, оси x и описания макета страницы см. Схему внизу этой страницы. |
SPI_Glcd_Set_X
Прототип |
procedure SPI_Glcd_Set_X(x_pos : byte); |
---|---|
Описание |
Устанавливает положение оси x в |
Параметры |
|
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
SPI_Glcd_Set_X(25); |
Примечания |
Для стороны, оси x и описания макета страницы см. Схему внизу этой страницы. |
SPI_Glcd_Read_Data
Прототип |
function SPI_Glcd_Read_Data() : byte; |
---|---|
Описание |
Считывает данные из текущего местоположения памяти Glcd и переходит к следующему местоположению. |
Возвращает |
Один байт из памяти Glcd. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. Сторона Glcd, положение оси x и страница должны быть установлены первыми. См. функции SPI_Glcd_Set_Side, SPI_Glcd_Set_X, and SPI_Glcd_Set_Page. |
Параметры |
Нет. |
Пример |
var data_ : byte; ... data_ := SPI_Glcd_Read_Data(); |
Примечания |
Нет. |
SPI_Glcd_Write_Data
Прототип |
procedure SPI_Glcd_Write_Data(data_ : byte); |
---|---|
Описание |
Записывает один байт в текущее местоположение в памяти Glcd и переходит к следующему местоположению. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. Сторона Glcd, положение оси x и страница должны быть установлены первыми. См. функции SPI_Glcd_Set_Side, SPI_Glcd_Set_X, and SPI_Glcd_Set_Page. |
Пример |
var data_ : byte; ... SPI_Glcd_Write_Data(data_); |
Примечания |
Нет. |
SPI_Glcd_Set_Ext_Buffer
Прототип |
procedure SPI_Glcd_Set_Ext_Buffer(getExtDataPtr : ^TSPI_Glcd_Get_Ext_Data_Ptr); |
---|---|
Возвращает |
Ничего. |
Описание |
Функция устанавливает указатель на пользовательскую функцию, которая управляет внешним ресурсом. Параметры:
Прототип функции пользователя должен быть в следующем формате: Параметры, используемые в функции, имеют следующее значение:
|
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. Сторона Glcd, положение оси x и страница должны быть установлены первыми. См. функции SPI_Glcd_Set_Side, SPI_Glcd_Set_X, and SPI_Glcd_Set_Page. |
Пример |
SPI_Glcd_Set_Ext_Buffer(@ReadExternalBuffer); |
SPI_Glcd_Fill
Прототип |
procedure SPI_Glcd_Fill(pattern : byte); |
---|---|
Описание |
Заполняет память Glcd байт Чтобы очистить экран Glcd, используйте Чтобы полностью заполнить экран, используйте |
Параметры |
|
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Очищает экран
SPI_Glcd_Fill(0);
|
Примечания |
Нет. |
SPI_Glcd_Dot
Прототип |
procedure SPI_Glcd_Dot(x_pos, y_pos, color : byte); |
---|---|
Описание |
Рисует точку на Glcd в координатах ( |
Параметры |
Параметр |
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Инвертирует точку в верхнем левом углу
SPI_Glcd_Dot(0, 0, 2);
|
Примечания |
Для объяснения макета оси x и y см. Схему внизу этой страницы. |
SPI_Glcd_Line
Прототип |
procedure SPI_Glcd_Line(x_start, y_start, x_end, y_end : integer; color : byte); |
---|---|
Описание |
Рисует линию на Glcd. Параметры : |
Параметры |
Параметр |
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Выводит линию между точками (0,0) и (20,30)
SPI_Glcd_Line(0, 0, 20, 30, 1);
|
Примечания |
Нет. |
SPI_Glcd_V_Line
Прототип |
procedure SPI_Glcd_V_Line(y_start, y_end, x_pos, color : byte); |
---|---|
Описание |
Рисует вертикальную линию на Glcd. |
Параметры |
Параметр |
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Выводит вертикальную линию между точками (10,5) и (10,25)
SPI_Glcd_V_Line(5, 25, 10, 1);
|
Примечания |
Нет. |
SPI_Glcd_H_Line
Прототип |
procedure SPI_Glcd_H_Line(x_start, x_end, y_pos, color : byte); |
---|---|
Описание |
Draws a horizontal line on Glcd. |
Параметры |
Параметр |
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Выводит горизонтальную линию между точками (10,20) и (50,20)
SPI_Glcd_H_Line(10, 50, 20, 1);
|
Примечания |
Нет. |
SPI_Glcd_Rectangle
Прототип |
procedure SPI_Glcd_Rectangle(x_upper_left, y_upper_left, x_bottom_right, y_bottom_right, color : byte); |
---|---|
Описание |
Draws a rectangle on Glcd. |
Параметры |
Параметр |
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Выводит прямоугольник между точками (5,5) и (40,40)
SPI_Glcd_Rectangle(5, 5, 40, 40, 1);
|
Примечания |
Нет. |
SPI_Glcd_Rectangle_Round_Edges
Прототип |
procedure SPI_Glcd_Rectangle_Round_Edges(x_upper_left : byte; y_upper_left : byte; x_bottom_right : byte; y_bottom_right : byte; radius : byte; color : byte); |
---|---|
Описание |
Рисует прямоугольник со скругленными углами Glcd. |
Параметры |
Параметр |
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Выводит прямоугольник с закругленными краями между точками (5,5) и (40,40) с радиусом 12
SPI_Glcd_Rectangle_Round_Edges(5, 5, 40, 40, 12, 1);
|
Примечания |
Нет. |
SPI_Glcd_Rectangle_Round_Edges_Fill
Прототип |
procedure SPI_Glcd_Rectangle_Round_Edges_Fill(x_upper_left : byte; y_upper_left : byte; x_bottom_right : byte; y_bottom_right : byte; radius : byte; color : byte); |
---|---|
Описание |
Рисует заполненный скругленный пямоугольник на Glcd заданным цветом. |
Параметры |
Параметр |
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Выводит заполненный прямоугольник с закругленными краями между точками (5,5) и (40,40) с радиусом края 12
SPI_Glcd_Rectangle_Round_Edges(5, 5, 40, 40, 12, 1);
|
Примечания |
Нет. |
SPI_Glcd_Box
Прототип |
procedure SPI_Glcd_Box(x_upper_left, y_upper_left, x_bottom_right, y_bottom_right, color : byte); |
---|---|
Описание |
Рисует прямоугольник на Glcd. |
Параметры |
Параметр |
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Выводит прямоугольник между точками (5,15) и (20,40)
SPI_Glcd_Box(5, 15, 20, 40, 1);
|
Примечания |
Нет. |
SPI_Glcd_Circle
Прототип |
procedure SPI_Glcd_Circle(x_center, y_center, radius : integer; color : byte); |
---|---|
Описание |
Рисует окружность на Glcd. |
Параметры |
Параметр |
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Выводит окружность с центром в (50,50) и радиусом = 10
SPI_Glcd_Circle(50, 50, 10, 1);
|
Примечания |
Нет. |
SPI_Glcd_Circle_Fill
Прототип |
procedure SPI_Glcd_Circle_Fill(x_center : integer; y_center : integer; radius : integer; color : byte); |
---|---|
Описание |
Рисует заполненный круг на Glcd. |
Параметры |
Параметр |
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Выводит заполненный круг с центром в (50,50) и радиусом = 10
SPI_Glcd_Circle_Fill(50, 50, 10, 1);
|
Примечания |
Нет. |
SPI_Glcd_Set_Font
Прототип |
procedure SPI_Glcd_Set_Font(activeFont: LongInt; aFontWidth, aFontHeight : byte; aFontOffs : word); |
---|---|
Описание |
Устанавливает шрифт, который будет использоваться с процедурами SPI_Glcd_Write_Char и SPI_Glcd_Write_Text. |
Параметры |
Пользователь может использовать шрифты, указанные в файле
Список поддерживаемых шрифтов: для обратной совместимости эти шрифты также поддерживаются:
|
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Использует собственный шрифт 5x7 «myfont», который начинается с пробела (32):
SPI_Glcd_Set_Font(@myfont, 5, 7, 32);
|
Примечания |
Нет. |
SPI_Glcd_Set_Font_Adv
Прототип |
procedure Glcd_Set_Font_Adv(const activeFont : ^byte; font_color : word; font_orientation : byte); |
---|---|
Описание |
Устанавливает шрифт, который будет использоваться с процедурами SPI_Glcd_Write_Char_Adv и SPI_Glcd_Write_Text_Adv. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
SPI_Glcd_Set_Font_Adv(@myfont, 0, 0); |
Примечания |
Нет. |
SPI_Glcd_Set_Ext_Font_Adv
Прототип |
procedure SPI_Glcd_Set_Ext_Font_Adv(activeFont : dword; font_color : word; font_orientation : word); |
---|---|
Описание |
Устанавливает шрифт, который будет использоваться с процедурами SPI_Glcd_Write_Char_Adv и SPI_Glcd_Write_Text_Adv. Шрифт расположен во внешнем ресурсе. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
SPI_Glcd_Set_Ext_Font_Adv(173296, 5, 7, 32); |
Примечания |
Нет. |
SPI_Glcd_Write_Char
Прототип |
procedure SPI_Glcd_Write_Char(chr1, x_pos, page_num, color : byte); |
---|---|
Описание |
Печатает символ на Glcd. |
Параметры |
Параметр |
Возвращает |
Ничего. |
Требует |
SPI_Glcd должен быть инициализирован для связи SPI, см. процедуру SPI_Glcd_Init. Используйте SPI_Glcd_Set_Font для указания шрифта для отображения. |
Пример |
// Выводит символ «C» в позиции 10 внутри страницы 2:
SPI_Glcd_Write_Char('C', 10, 2, 1);
|
Примечания |
Для описания оси x и описания макета страницы см. Схему внизу этой страницы. |
SPI_Glcd_Write_Char_Adv
Прототип |
procedure SPI_Glcd_Write_Char_Adv(ch, x, y : word); |
---|---|
Возвращает |
Ничего. |
Описание |
Записывает символ на glcd в координатах (x, y).
|
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
SPI_Glcd_Write_Char_Adv('A',22,23); |
SPI_Glcd_Write_Text
Прототип |
procedure SPI_Glcd_Write_Text(var text: array[40] of char; x_pos, page_num, color : byte); |
---|---|
Описание |
Выводит текст на Glcd. |
Параметры |
Параметр |
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. Используйте SPI_Glcd_Set_Font для указания шрифта для отображения. |
Пример |
// Выводит Текст «Hello world!» в позиции 10 внутри страницы 2:
SPI_Glcd_Write_Text('Hello world!', 10, 2, 1);
|
Примечания |
Для описания оси x и описания макета страницы см. Схему внизу этой страницы. |
SPI_Glcd_Write_Text_Adv
Прототип |
procedure SPI_Glcd_Write_Text_Adv(var text : string; x, y : word); |
---|---|
Возвращает |
Ничего. |
Описание |
Записывает текст на glcd в координатах (x, y). Параметры :
|
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
SPI_Glcd_Write_Text_Adv("GLCD LIBRARY DEMO, WELCOME !", 0, 0); |
SPI_Glcd_Image
Прототип |
procedure SPI_Glcd_Image(const image: ^byte); |
---|---|
Описание |
Отображает растровое изображение на Glcd. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
SPI_Glcd должен быть инициализирован для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Выводит изображение my_image на Glcd
SPI_Glcd_Image(@my_image);
|
Примечания |
Используйте микропрограммный модуль MikroPascal PRO для ARM, встроенный в Glcd Bitmap Editor, Tools > Glcd Bitmap Editor, для преобразования изображения в постоянный массив, подходящий для отображения на Glcd. |
SPI_Glcd_Ext_Image
Прототип |
procedure SPI_Glcd_Ext_Image(image : dword); |
---|---|
Описание |
Отображает растровое изображение с внешнего ресурса по желаемому адресу. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
SPI_Glcd_Ext_Image(153608); |
Примечания |
Используйте микропрограммный модуль MikroPascal PRO для ARM, встроенный в Glcd Bitmap Editor, Tools > Glcd Bitmap Editor, для преобразования изображения в постоянный массив, подходящий для отображения на Glcd. |
SPI_Glcd_PartialImage
Прототип |
procedure SPI_Glcd_PartialImage(x_left, y_top, width, height, picture_width, picture_height : word; const image : ^byte); |
---|---|
Описание |
Отображает частичную область изображения в нужном месте. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
SPI_Glcd должен быть инициализирован для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
// Выводит 10x15 часть изображения, начиная с верхнего левого угла по координате (10,12). Размер оригинального изображения - 16x32.
SPI_Glcd_PartialImage(10, 12, 10, 15, 16, 32, @image);
|
Примечания |
Используйте микропрограммный модуль MikroPascal PRO для ARM, встроенный в Glcd Bitmap Editor, Tools > Glcd Bitmap Editor, для преобразования изображения в постоянный массив, подходящий для отображения на Glcd. |
SPI_Glcd_Ext_PartialImage
Прототип |
procedure SPI_Glcd_Ext_PartialImage(x_left, y_top, width, height, picture_width, picture_height : word; image : dword); |
---|---|
Описание |
Отображает частичную область изображения, расположенную на внешнем ресурсе, в нужном месте экрана. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
Glcd необходимо инициализировать для связи SPI, см. процедуру SPI_Glcd_Init. |
Пример |
SPI_Glcd_Ext_PartialImage(10, 12, 10, 15, 16, 32, 0); |
Примечания |
Используйте микропрограммный модуль MikroPascal PRO для ARM, встроенный в Glcd Bitmap Editor, Tools > Glcd Bitmap Editor, для преобразования изображения в постоянный массив, подходящий для отображения на Glcd. |