Функции работы с Touch Panel в mikroC.

Неотъемлемым аксессуаром современных устройств стал сенсорный экран, иначе называемый Touch Panel (Тач панел). Такой экран позволяет реализовывать интерактивные приложения без дополнительных кнопок, джойстиков и иных органов управления. В своих средствах разработки фирма Mikroelektronika давно применяет сенсорные экраны, но их использование зависело от разработчика. В платах типа mikromedia board, сенсорный экран стал интегрированным, что придало этому устройству огромные возможности. Большим плюсом можно считать и реализацию поддержки функций работы с Touch Panel в фирменных компиляторах производителя.

 Сенсорный экран в платах mikromedia board for STM32 относится к резистивному типу. Для работы с ним используются 4 линии микроконтроллера. Две из них сигнальные, оповещающие о наличии нажатия. Оставшиеся две линии должны быть подключены к АЦП микроконтроллера для определения точки нажатия по координатам X и Y. Благодаря высокой разрядности АЦП, разрешение сенсорного экрана полностью перекрывает разрешение дисплея. Единственным минусом становится необходимость калибровки Touch Panel для совмещения с изображением на дисплее. Также для разных процессоров, применяются разные аппаратные схемы подключения, что необходимо учитывать при объявлении конфигурации выводов микроконтроллера.

В компиляторах Mikroelektronika имеется две библиотеки работы с сенсорными панелями. Данные библиотеки берут на себя всю работу по организации опроса и обработки данных, предоставляя программисту готовые координаты нажатия. Первая из них TP_Panel_Library используется в работе с панелями, установленными на простых графических ЖК-индикаторах. Вторая - TP_Panel_TFT_Library нацелена на использование оборудования, работающего совместно с TFT дисплеем.  Состав и функции библиотек практически идентичны, поэтому ниже будет рассмотрен только несколько расширенный вариант TFT.

 

Функция TP_TFT_Init

Данная функция инициализирует микроконтроллер и Touch Panel. Перед ее вызовом необходимо в обязательном порядке объявить линии, к которым подключена панель и включить АЦП. Формат функции следующий:

void TP_TFT_Init(unsigned int display_width, unsigned int display_height, unsigned int readX_ChNo, unsigned int readY_ChNo);

  • display_width: ширина дисплея
  • display_height: высота дисплея.
  • readX_ChNo: номер канала АЦП по X
  • readY_ChNo: номер канала АЦП по Y

 

Функция TP_TFT_Rotate

Поворачивает систему координат панели на 180 градусов. В исходном состоянии система координат совпадает с TFT дисплеем. Формат вызова:

void TP_TFT_Rotate(char);

Переменная char может принимать значения: 0 – исходная система координат, 1 – система координат, развернутая на 180 градусов.

 

Функция TP_TFT_Set_ADC_Threshold

Устанавливает разрешение АЦП. Допускается использовать данную функцию только после вызова TP_TFT_Init. Формат вызова функции:

void TP_TFT_Set_ADC_Threshold(unsigned int threshold);

 

Функция TP_TFT_Press_Detect

Возвращает 1 если обнаружено нажатие на сенсорный экран. В противном случае всегда возвращает 0. Формат вызова:

char TP_TFT_Press_Detect();

 

Функция TP_TFT_Get_Coordinates

Возвращает 1 в случае определения координат нажатия на экран и 0 во всех остальных случаях. Аргументами функции должны являться два указателя на переменные по координатам X и Y. После проведения процедуры калибровки, координаты нажатия имеют тот же формат, что и разрешение дисплея.

char TP_TFT_Get_Coordinates(unsigned int *x_coordinate, unsigned int *y_coordinate);

 

Функции TP_TFT_Calibrate_Min и TP_TFT_Calibrate_Max

Данные функции предназначены для сопоставления показаний АЦП и координат нажатия на экране. При их вызове программа будет ожидать нажатия в левом верхнем (минимальные координаты) или правом нижнем (максимальные координаты) углу дисплея.

void TP_TFT_Calibrate_Min();

void TP_TFT_Calibrate_Max();

 

Функция TP_TFT_Get_Calibration_Consts

Функция позволяет пользователю получить координаты левого верхнего и правого нижнего угла сенсорной панели в формате показаний АЦП. Данные показания как правило не совпадают с разрешением дисплея, что при не знании может поставить программиста в тупик.

void TP_TFT_Get_Calibration_Consts(unsigned int *x_min, unsigned int *x_max, unsigned int *y_min, unsigned int *y_max);

Аргументами функции являются указатели на переменные, которые должны содержать значения АЦП в левом верхнем и правом нижнем углах сенсорной панели.

  • x_min: x координата левого верхнего угла
  • x_max: x координата правого нижнего угла
  • y_min: y x координата левого верхнего угла.
  • y_max: y x координата правого нижнего угла

 

Функция TP_TFT_Set_Calibration_Consts

Позволяет задать калибровочные значения сенсорной панели без проведения процедуры калибровки.

void TP_TFT_Set_Calibration_Consts(unsigned int x_min, unsigned int x_max, unsigned int y_min, unsigned int y_max);

Аргументы функции:

  • x_min: x координата левого верхнего угла
  • x_max: x координата правого нижнего угла
  • y_min: y x координата левого верхнего угла.
  • y_max: y x координата правого нижнего угла

 

 

You have no rights to post comments