Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

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

Тачскрин (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

Тачскрин имеет две координаты: 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 точек конечно многовато, но если нужно - уменьшите разрядность.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
МикроконтроллерPIC18F4521 Поиск в магазине ОтронВ блокнот
Линейный регулятор
LM7805
1 Поиск в магазине ОтронВ блокнот
Электролитический конденсатор47 мкФ1 Поиск в магазине ОтронВ блокнот
Подстроечный резистор5 кОм1 Поиск в магазине ОтронВ блокнот
Кварцевый резонатор20 МГц1 Поиск в магазине ОтронВ блокнот
LCD-дисплей16x2 LCD (HD 44780)1 Поиск в магазине ОтронВ блокнот
4-х проводный резистивный тачскрин1 Поиск в магазине ОтронВ блокнот
Батарея питания9 В1 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Оригинал статьи

Прикрепленные файлы:

Теги:

Колтыков А.В. Опубликована: 2011 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
USB осциллограф DSO-2090 Конструктор регулируемого преобразователя напряжения LM317
вверх