Подключение к микроконтроллеру клавиатуры матричного типа
Методическое указание к лабораторной работе на учебном стенде LESO1.
1 Цель работы
- Изучить особенности работы параллельных портов микроконтроллера.
- Изучить схемы подключения кнопок и матричной клавиатуры к микроконтроллеру.
- Научиться определять состояние кнопок при помощи программы.
- Изучить способы отладки программ на лабораторном стенде LESO1.
- Изучить принцип работы матричной клавиатуры.
2 Предварительная подготовка к работе
- По конспекту лекций и рекомендуемой литературе изучить схемы параллельных портов микроконтроллеров.
- По конспекту лекций и рекомендуемой литературе изучить схемы подключения кнопок и клавиатуры к параллельным портам.
- Изучить архитектуру микроконтроллера ADuC842.
- Изучить принципиальную схему лабораторного стенда LESO1.
- Составить алгоритм работы программы: при нажатии на кнопку, согласно варианту, загорается комбинация светодиодов, соответствующая в бинарном виде номеру кнопки; при отпускании кнопки, светодиоды должны погаснуть.
- Составить программу на языке программирования С.
3 Краткие теоретические сведения
3.1 Применение матричной клавиатуры для ввода информации в микропроцессорную систему
Для реализации взаимодействия пользователя с микропроцессорной системой используют различные устройства ввода-вывода информации. В самом простом случае в роли устройства ввода может выступать кнопка, представляющая собой элементарный механизм, осуществляющий замыкание-размыкание контактов под действием внешней механической силы. Схема подключения кнопки к линии ввода параллельного порта ввода микроконтроллера показана на рисунке 1. Когда контакты кнопки S1 разомкнуты через резистор R1 на вход контроллера поступает высокий логический уровень "1", когда же контакты замкнуты, то вход оказывается соединенным с общим проводом, что соответствует логическому уровню "0". Если параллельный порт микроконтроллера имеет встроенный генератор тока, то в схеме можно обойтись без резистора R1.
Недостаток приведенной схемы заключается в том, что для подключения каждой кнопки требуется отдельная линия параллельного порта. Так как часто требуется вводить информацию с большого количества кнопок, то для уменьшения количества линий ввода-вывода используется клавиатура, представляющая собой двухмерную матрицу кнопок, организованных в ряды и столбцы (рисунок 2).
Подключение клавиатуры отличается от схемы подключения одиночной кнопки тем, что потенциал общего провода на опрашиваемые кнопки подается не непосредственно, а через порт вывода.
В каждый момент времени сигнал низкого уровня (логический ноль) подается только на один столбец кнопок, на остальные должна подаваться логическая единица. Это исключит неоднозначность определения номера нажатой кнопки. Двоичные сигналы, присутствующие при этом на строках клавиатуры, считываются через порт ввода микроконтроллера.
Временная диаграмма напряжений на портах вывода при выполнении программы опроса клавиатуры приведена на рисунке 3.
В каждый момент времени производится чтения информации из порта ввода. Программа микроконтроллера по считанной комбинации должна определить номер нажатой кнопки клавиатуры.
3.2 Рекомендации к составлению программы
Программа для микроконтроллера жестко зависит от принципиальной схемы разрабатываемого устройства. Невозможно написать программу для микроконтроллерного устройства не имея перед глазами его схемы. Поэтому, перед началом работы по принципиальной схеме учебного стенда LESO1 следует изучить способ подключения клавиатуры и светодиодов к микроконтроллеру: определить, к каким портам подключены светодиоды, столбцы и строки клавиатуры. Затем по таблице SFR нужно узнать адреса регистров задействованных портов ввода-вывода.
Программа, управляющая микроконтроллером, запускается при включении питания устройства и не завершает свою работу, пока не будет выключено питание. Поэтому в программе обязательно должен быть организован бесконечный цикл. В теле цикла должен производиться опрос клавиатуры, анализ полученных данных и вывод результата на светодиод. Опрос клавиатуры заключается в последовательном сканировании каждого столбца, для этого на соответствующую линию порта вывода подается логический ноль (эквивалент общего провода), на остальных столбцах должен быть высокий уровень, после чего с порта ввода, к которому подключены строки, считывается код. Если считаны все единицы, то ни одна из клавиш не нажата, в противном случае код содержит информацию о нажатых клавишах. Стоит заметить, что считанный код содержит не только номер замкнутого контакта, но и информацию о нажатии нескольких кнопок одновременно, поэтому лучше хранить в памяти котроллера непосредственно считанный код, а не готовый номер кнопки. Для хранения считанного кода следует ввести специальную переменную.
При написании программы нужно помнить об особенности параллельного порта P1 в микроконтроллере ADuC842. Этот порт по умолчанию настроен на ввод аналоговых сигналов (функция АЦП). Для того чтобы перевести порт в режим цифрового входа, в соответствующий бит порта необходимо записать логический ноль. Сделать это нужно один раз при инициализации микроконтроллера. Порт не имеет внутреннего усиливающего транзистора, и потому при вводе дискретной информации через него не требуется записывать в разряды логическую единицу.
4 Задание к работе в лаборатории
- По принципиальной схеме установите, к каким портам микроконтроллера подключены светодиоды, а также столбцы и строки клавиатуры.
- По таблице регистров специальных функций (SFR) определите адреса регистров требуемых портов.
- Войдите в интегрированную среду программирования Keil-C.
- Создайте и настройте должным образом проект.
- Введите текст программы в соответствии с заданием: При нажатии на кнопку, согласно варианту, загорается комбинация светодиодов, соответствующая в бинарном виде номеру кнопки; при отпускании кнопки, светодиоды должны погаснуть.
- Оттранслируйте программу, и исправьте синтаксические ошибки.
- Загрузите полученный *.hex файл в лабораторный стенд LESO1.
- Убедитесь, что программа функционирует должным образом.
5 Указания к составлению отчета
Отчет должен содержать:
- Цель работы.
- Принципиальную схему подключения клавиатуры к микроконтроллеру.
- Графическую схему алгоритма работы программы.
- Исходный текст программы.
- Содержимое файла листинга программного проекта.
- Выводы по выполненной лабораторной работе.
Схемы, а также отчет в целом, выполняются согласно нормам ЕСКД.