Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Особенности подключения датчиков с механическими контактами к МК




 

При работе МК с датчиками, имеющими механические или электромеханические контакты (кнопки, клавиши, реле, клавиатуры и т.д.), возникает явление, называемое дребезгом. Оно заключается в том, что при замыкании контактов происходит их отскок, который

 


 

приводит к переходному процессу. При этом сигнал с контакта может быть прочитан как случайная последовательность нулей и единиц (рис. 2.16). Подавить это нежелательное явление можно аппаратными либо программными способами.

 

1...20 мс

 

«1»

 

«0» t

 

Рис. 2.16. К пояснению эффекта дребезга контактов

Аппаратные способы заключаются в использовании буферного RS-триггера (рис. 2.17, а) в качестве одновибратора, или фильтра нижних частот (рис. 2.17, б) для сглаживания пульсаций, следующих с периодом меньшим, чем постоянная времени фильтра.

 


Vпит


Vпит


 


 

R1 R2

 

&


 

МК

 

Px.x


 

R1 МК

 

Px.x


S1

S1 C1

&

 

а б

Рис. 2.17. Способы аппаратного подавления дребезга контактов Среди программных способов наибольшее распространение

получили два: 1) подсчет заданного числа совпадающих значений сигнала, 2) временная задержка. Суть первого способа заключается в многократном считывании сигнала с контакта. Подсчет удачных опросов (т.е. опросов, обнаруживших, что контакт замкнут) ведется программным счетчиком. Если после серии удачных опросов встречается неудачный, то подсчет начинается сначала. Контакт считается устойчиво замкнутым (дребезг устранен), если последовало N удачных опросов. Число N подбирается


 

 

Устранение дребезга контактов путем введения временной задержки заключается в том, что программа, обнаружив замыкание контакта, запрещает опрос состояния этого контакта на время, заведомо большее длительности переходного процесса. Время задержки подбирается экспериментально для каждого типа датчиков в пределах 1…20 мс и реализуется обычно с помощью одного из таймеров.

Пример 2.1.

Разработать устройство для ввода данных с клавиатуры (восемь клавиш).


Время дребезга контактов


tдр


клавиш не превышает 1 мс. Устройство должно


ожидать нажатия клавиши, после чего выводить номер нажатой клавиши на выводы одного из портов МК.

 

При небольшом количестве подключаемых клавиш можно воспользоваться одним из аппаратных способов подавления дребезга.

Используем способ подавления дребезга с помощью простейшего ФНЧ (RC-цепочки), так как он требует меньших аппаратных затрат. Для взаимодействия с клавиатурой выберем порт D, а для вывода данных используем порт А МК. Тогда схема разрабатываемого устройства будет иметь вид, изображенный на рис. 2.18.


Vпит

 

R1

 

S1 C1


 

 

PD0


 

PA0 PA1


 

ATmega16

 


 

R8

 

S8 C8


 

PD7


PA7


 

 

Рис. 2.18. Схема подключения клавиатуры

 

Определим номинальные значения элементов RC-цепочки. Условием стабильной фиксации логического уровня на входе МК при устранении дребезга контактов с помощью ФНЧ является


 

где tФНЧ


 

 

= RC


tдр£ tФНЧ, (2.4)

– постоянная времени ФНЧ.


 

 

Зададимся значением резисторов RC-цепочки, равным R1 – R8 = 100 кОм,


тогда при


tФНЧ= 1


мс должно выполняться условие С1 – С8 ≥ 0,1 мкФ.


Выберем значение из стандартного ряда номиналов С1 – С8 = 0,1 мкФ.

Алгоритм подпрограммы опроса клавиш для рассматриваемого случая представлен блок-схемой на рис. 2.19.

Ниже приведен фрагмент программы для опроса клавиатуры, написанный на ассемблере МК ATmega16. Описание системы команд МК ATmega16 приведено в приложении В. Символ “;” указывает начало комментария.

Программа выполняет циклическое сканирование клавиатуры. По окончании цикла сканирования в регистре key появляется номер нажатой клавиши. Если ни одна из клавиш не была нажата, то его значение равно нулю. Номер клавиши в виде двоичного кода выводится на выводы порта А.

В инициализирующей части программы указывается, для какого устройства будет компилироваться программа, символическим именам присваиваются адреса ячеек пространства ввода/вывода, по которым хранятся соответствующие регистры управления, а также назначаются символические имена регистрам общего назначения. Это улучшает читаемость программы, так как в дальнейших выражениях позволяет использовать указанные имена вместо непосредственных значений, им присвоенных, которые являются менее информативными для пользователя.

 

Key_scan

 


Да

PD0=0


 

Key=1


 


Нет

Да

PD1=0


 

 

Key=2


 

Нет

 

 


Да

PD7=0


 

Key=8


 

Нет

 

Возврат

 

Рис. 2.19. Блок-схема подпрограммы сканирования клавиатуры

 

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

В основной программе используется подпрограмма, поэтому в ее начале инициализируется указатель стека. Ему присваивается значение адреса самой


 

 

старшей ячейки ОЗУ (для ATmega16 – 0х045F), тем самым указывается, что под область стека может быть использована вся доступная память ОЗУ.

 

;********************** Программа опроса клавиатуры **********************

.device ATmega16

;**** Назначение символических имен **************************************

 

.equ .equ .equ .equ .equ .equ SPH SPL PОRTA DDRA DDRD PIND =0x3E =0x3D =0x1В =0x1A =0x11 =0x10 ;указатель стека (старший байт) ;указатель стека (младший байт) ;регистр данных порта А МК ;регистр направления данных порта A МК ;регистр направления данных порта D МК ;регистр адресов выводов порта D МК
.def .def key tmp =r16 =r17 ;регистр кода нажатой клавиши ;регистр промежуточных значений

 

;**** Основная программа ******************************************************

.cseg

.org 0

 

  ldi tmp,0x5F ;установить значение tmp
out SPL,tmp ;записать младший байт указателя стека
ldi tmp,0x04 ;установить значение tmp
out SPH,tmp ;записать старший байт указателя стека
clr tmp ;очистить tmp
out DDRD,tmp ;сконфигурировать выводы порта D (все входы)
ser tmp ;установить tmp
out DDRА,tmp ;сконфигурировать выводы порта А
    (все выходы)
loop1: clr key ;очистить key
  rcall key_scan ;вызов подпрограммы сканирования клавиш
  out PORTA,key ;вывод номера нажатой клавиши на порт А
  rjmp loop1 ;перейти на метку loop1

 

;**** Подпрограмма сканирования клавиатуры ******************************

 

key_scan: sbrs PIND,0 ;пропустить, если PIND(0) = 1 /PD0 = 1/
ldi key,1 ;присвоить номер нажатой клавиши
sbrs PIND,1 ;пропустить, если PIND(1) = 1
ldi key,2 ;присвоить номер нажатой клавиши
sbrs PIND,2 ;пропустить, если PIND(2) = 1
ldi key,3 ;присвоить номер нажатой клавиши
sbrs PIND,3 ;пропустить, если PIND(3) = 1
ldi key,4 ;присвоить номер нажатой клавиши
sbrs PIND,4 ;пропустить, если PIND(4) = 1
ldi key,5 ;присвоить номер нажатой клавиши
sbrs PIND,5 ;пропустить, если PIND(5) = 1
ldi key,6 ;присвоить номер нажатой клавиши

 

 


 

.exit


sbrs PIND,6 ;пропустить, если PIND(6) = 1

ldi key,7 ;присвоить номер нажатой клавиши sbrs PIND,7 ;пропустить, если PIND(7) = 1

ldi key,8 ;присвоить номер нажатой клавиши ret ;возврат из подпрограммы


 

При большом количестве клавиш (N>8) более выгодным (с точки зрения аппаратных затрат) способом реализации является матричная клавиатура (рис. 2.20).

PВ0 PВ1

 

 


S1 S5 S9 S13


S2 S6 S10 S14


S3 S7 S11 S15

 


S4 S8 S12 S16


 

ATmega16

 

PВ7


Рис. 2.20. Схема подключения матричной клавиатуры

 

В этом случае изменяется алгоритм опроса клавиш. Один из способов сканирования клавиатурной матрицы заключается в следующем: изначально все выходы МК, к которым подключены строки клавиатурной матрицы, установлены в состояние лог. 0; далее один из выходов устанавливается в состояние лог. 1 и сканируются все входы МК, к которым подключены столбцы клавиатуры; пересечение строки, на которой установлена лог. 1, и столбца, на котором определена лог. 1, позволяет найти код нажатой клавиши.

Для устранения дребезга при использовании матричной клавиатуры может быть использован один из программных способов (например временная задержка).

 

2. Классификация.

 

 

Способы реализации алгоритмов ЦОС


Поделиться:

Дата добавления: 2015-01-19; просмотров: 203; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты