Простой тачскрин интерфейс

Простой тачскрин интерфейс

Тачскрин (Touch Screen – сенсорный экран) изобретен несколько десятилетий назад, однако только в последние года он получил широкое распространение. Для человека, способ ввода при помощи сенсорного экрана более привычен и удобен, чем другие способы.

В данной статье мы рассмотрим работу с резистивным 4-х проводным тачскрином, а именно нахождение X и Y-координат нажатой точки. В проекте мы будем использовать минимальное количество деталей и основной упор статьи сделаем на теорию.

Итак, задачей нашей схемы будет считывание координат с тачскрина и вывод их на LCD-экранчик. Естественно "рулить" всем этим хозяйством будет микроконтроллер.

Список используемых компонентов:

– PIC18F452 – микроконтроллер PIC (даташит)

– 7805 – стабилизатор напряжения 5В (КРЕН5)

– 20 МГц кварцевый резонатор. Частота не критична, могут быть использованы и 4, 8, 16 Мгц

– программатор PICkit 2 и т.п. для прошивки PIC

– 4-х проводной резистивный тачскрин (Touch Screen). Работают они все по одному принципу, поэтому нет никакой разницы, какой именно вы будете использовать

– 16×2 LCD дисплей

– отладочная плата и перемычки

В схеме использовано 6 линий связи тачскрина с микроконтроллером. Две из них используются для АЦП и четыре подключаются к PORTD пинам RD0 – RD3. Здесь PORTD используется для подачи питания или земли к 4-м линиям тачскрина.

LCD-экранчик подключается по 4-битному интерфейсу.

Как работает тачскрин

Чтобы было понятнее, проведем сравнение работы обычного подстроечного резистора и тачскрина. В тачскрине мы пока что будем использовать только одну ось координат.

Напряжение на выходе подстроечного резистора, относительно общего провода, зависит от его текущего сопротивления. Подобный принцип используется и в тач скрине. Если установить стилус на середине экрана (по аналогии с подстроечным резистором это будет половина круга), то выходное напряжение будет составлять 1/2 от входного.

Тачскрин имеет две координаты: X и Y. АЦП микроконтроллера считывает данные с каждой координаты и т.о. формируется координата нажатой точки.

Сборка устройства

На фотографии выше приведены все необходимые компоненты для сборки устройства.

Собираем устройство на отладочной плате согласно принципиальной схеме.

Тачскрин имеет плоский шлейф, и для его соединения с проводами я использовал скотч и обычную скрепку.

Программа

В программе реализуется две основные задачи: аналогово-цифровое преобразование координат и вывод данных на LCD. Реализуется в 4 шага: на первом шаге происходит считывание и преобразование значения Х-координаты через АЦП, затем тоже самое происходит с Y-координатой, третьим и четвертым шагом происходит отображение X и Y точек соответственно. После чего, весь цикл повторяется.

Приведу кусок фрагмента кода преобразования и вывода X-координаты на LCD:

//Don’t Display If X or Y Axis Not Active if( (result_x > 80 && result_x < 900 ) ){ /******** X-Axis Update ALL *********/ itoa( result_x, x_axis ); for(i=0;i<4;i++){ //Update Display if(isalnum(x_axis[i])){ prnt(x_axis[i]); } else{ prnt(0x20); } }

Функция itoa() используется для преобразования аналоговой величины в цифровое 10-битное значение. В десятичном коде максимальное значение составляет 1023, минимальное соответственно 0. Результат преобразования отображается на LCD-экранчике. Фрагмент кода АЦП преобразования X-координаты: //Set PORTA To Inputs/High Impedance TRISAbits.TRISA0 = 1; TRISAbits.TRISA1 = 1; //Set Lower 2 Bits to High Impedance TRISCbits.TRISC0 = 1; TRISCbits.TRISC1 = 1; //Set Higher 2 Bits to Output TRISCbits.TRISC2 = 0; TRISCbits.TRISC3 = 0; PORTCbits.RC0 = 0; PORTCbits.RC1 = 0; //Provide Ground To X-axis Of Touch Screen PORTCbits.RC2 = 0; //Provide Power To X-axis Of Touch Screen PORTCbits.RC3 = 1; // configure A/D convertor OpenADC( ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_8ANA_0REF,ADC_CH0 & ADC_INT_OFF ); Delay10TCYx( 5 ); // Delay for 50TCY ConvertADC(); // Start conversion while( BusyADC() ); // Wait for completion result_y = ReadADC(); // Read result CloseADC();

После того, как все собрано, скомпилируйте исходник и прошейте ваш МК. Устройство заработает сразу, без каких либо настроек. 1024 точек конечно многовато, но если нужно – уменьшите разрядность.

Скачать исходник и прошивку

Оригинал статьи на английском языке (перевод Колтыков А.В. для сайта cxem.net)


Категория: Микроконтроллеры
Метки:

Написать коментарий

*
= 4 + 6

Добавить изображение

Последние статьи