Простой тачскрин (touch screen) интерфейс на PIC микроконтроллере » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки
Опрос

Какой средой программирования вы пользуетесь?


MPLab/MPLabX
MicroC
MicroBasic
MicroPascal
Другой


Последние материалы
  • Тестовая плата для отладки программ на микроконтроллере PIC18F4550
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Электронная "Незабудка" для забывчивых
  • Популярные материалы
    Случайная книга
    Программирование устройств на PIC микроконтроллерах » Схемотехника » Прочее » Простой тачскрин (touch screen) интерфейс на PIC микроконтроллере
    Простой тачскрин (touch screen) интерфейс на PIC микроконтроллере
    Автор публикации: alex Просмотров: 8441 Добавлен: 9-08-2012, 09:32 Комментарии: 0

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

    В архиве исходный код и прошивка для микроконтроллера PIC18F452

    touchscreen.rar [5,17 Kb] (cкачиваний: 332)

    Категория: Прочее, PIC18
    « Назад
    Комментарии