Тачскрин (Touch Screen - сенсорный экран) изобретен несколько десятилетий назад, однако только в последние года он получил широкое распространение. Для человека, способ ввода при помощи сенсорного экрана более привычен и удобен, чем другие способы.
В данной статье мы рассмотрим работу с резистивным 4-х проводным тачскрином, а именно нахождение X и Y-координат нажатой точки. В проекте мы будем использовать минимальное количество деталей и основной упор статьи сделаем на теорию.
Итак, задачей нашей схемы будет считывание координат с тачскрина и вывод их на LCD-экранчик. Естественно "рулить" всем этим хозяйством будет микроконтроллер.
Список используемых компонентов:
- PIC18F452 - микроконтроллер PIC (даташит)
- 7805 - стабилизатор напряжения 5В (КРЕН5)
- 20 МГц кварцевый резонатор. Частота не критична, могут быть использованы и 4, 8, 16 Мгц
- программатор PICkit 2 и т.п. для прошивки PIC
- 4-х проводной резистивный тачскрин (Touch Screen). Работают они все по одному принципу, поэтому нет никакой разницы, какой именно вы будете использовать
- 16x2 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 точек конечно многовато, но если нужно - уменьшите разрядность.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
Микроконтроллер | PIC18F452 | 1 | Поиск в магазине Отрон | |||
Линейный регулятор | LM7805 | 1 | Поиск в магазине Отрон | |||
Электролитический конденсатор | 47 мкФ | 1 | Поиск в магазине Отрон | |||
Подстроечный резистор | 5 кОм | 1 | Поиск в магазине Отрон | |||
Кварцевый резонатор | 20 МГц | 1 | Поиск в магазине Отрон | |||
LCD-дисплей | 16x2 LCD (HD 44780) | 1 | Поиск в магазине Отрон | |||
4-х проводный резистивный тачскрин | 1 | Поиск в магазине Отрон | ||||
Батарея питания | 9 В | 1 | Поиск в магазине Отрон | |||
Скачать список элементов (PDF)
Прикрепленные файлы:
- touch_screen.rar (4 Кб)
Комментарии (0) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация