Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОВС (шпоры).doc
Скачиваний:
14
Добавлен:
20.09.2019
Размер:
670.72 Кб
Скачать
  1. Pic16f84. Подключение и использование сдвиговых регистров

О чень широко исп. регистры сдвига в виде преобразователей последовательных кодов в параллельные.

Сдвиг происходит в некий момент времени при некотором фазовом переходе, т.е. при фронте.

R – сигнал сброса, регистр обнуляется.

D – сигнал вх. данных.

<Q0..Q7> -- паралл. выход регистра.

Функционирование сдвигового регистра

  1. Пусть нач. состояние CLK=’0’, R=’1’, D=’0’, Q=’XXXXXXXX’. Линии управления CLK, R, D подключены к МК.

  2. Сброс сдвигового регистра: R=’0’, Q становится =’00000000’.

  3. CLK=’1’, Q остаётся =‘00000000’. Т.к. CLK ст. =’1’ (фронт), происх. Сдвиг: захват знач. D и перед. регистру.

  4. D=’1’, CLK=’0’. Ничего не происходит, т.к. спад (CLK).

  5. CLK=’1’. Происходит сдвиг. При подаче на вход синхронизации логич. единицы осуществляется захват значения входа D с его записью в старший значимый разряд сдвигового регистра, в данном случае Q7. Т.о. выход Q=’10000000’. После чего CLK желательно сбросить в 0.

  6. CLK=’1’, Q=’11000000’. Для полного заполнения выходов Q0..Q7 необх. 8 периодов на входе синхронизации CLK. Управление при этом осущ. 3 линиями со стороны МК.

Сдвиговые регистры могут исп. и в обратном назначении, т.е. выполнять функцию преобразования паралл. кода в последовательный. Исп. для обработки входной инф-ции.

D

Q7

0..D7 – паралл. входы данных, Q7, неQ7 – парафазные

PL – Parallel Load – сигнал паралл. Загрузки

Как и в предыдущем примере, сдвиг может осуществляться

посредством фронта сигнала синхронизации CLK либо при

помощи управл. сигнала CE. CE д. б. равно ‘0’, чтобы исп. CLK

сигналы для сдвига.

Алгоритм управления:

  1. PL=’1’, CE=’1’, D = ‘(HSB)10011100(LSB)’.

  2. Перед загрузкой значения D в регистр Q находится в неизвестном состоянии X. Загрузка осуществляется путём установки PL=’0’. При PL=’0’ регистр явл. открытым: если изменим D, то изменится то значение, которое будет храниться в регистре. Чтобы зафиксировать нужное значение, надо PL=’1’. Тогда захватывается значение D и записывается внутрь регистра. При этом на Q7 появл. значение старшего разряда D7 (Q7=’HSB’).

  3. Сдвиг: CE=’0’  CE=’1’

  4. После сдвига на Q7 значение 6-го разряда: Q7  [HSB-1]=’0’.

В нашем случае необх. 7 периодов синхронизации на линии CE, чтобы захватить все 8 разрядов Di (старший уже доступен без сдвига).

  1. Pic16f84. Структура и программирование матричных клавиатур

МАТРИЧНЫЕ КЛАВИАТУРЫ – отдельные технологические периферийные блоки, которые представляют собой физические контакты, выполн. по различным технологиям, эквивалент триггерных кнопок.

Все триггерные кнопки находятся в узлах 2-мерной матрицы. Нажатие кнопки приводит к тому, что соотв. линии, на пересечении которых находится кнопка, соединяются. Все остальные линии по умолчанию всегда разомкнуты.

С хема подключения Matrix Kbd

Вых. линии R0-R3 клавиатуры подкл. ко входам старших разрядов порта B для возможности обработки прерывания по изменению кода на линиях RB4-RB7.

Порты RB1-RB3 – выходы, на которых генерируются соотв. значения 3-разрядной последовательности, которые подаются на входы C0-C2 клавиатуры.

Предположим, что для кодирования кнопки будет исп. 7-битный код.

6 5 4 3 2 1 0

С0 С1 С2 R0 R1 R2 R3

Условием кодирования каждой клавиши будет нажатие и удержание только 1 кнопки. В этом случае можно исп. символы из последовательности one-hot , которые подаются на C0-C2, при этом анализируется R0-R3.

Предполагаем, что нажата и удерживается кнопка «1», которая имеет координаты C0, R0.

Scan code “1”: 1001000

Scan code “0”: 0100001

  1. Имеем процедуру генерирования циклической one-hot последовательности:

001

010

100

001

010

  1. После подачи некого текущего значения one-hot последовательности мы должны прочитать значение старших 4 разрядов порта B либо составить обработчик прерывания изменения кода на старших разрядах порта B (более предпочтительно).

  2. Анализируем значение старших разрядов порта B, сост. scan-код нажатой кнопки. Анализ будет сост. в определении веса полученного 4-разрядного слова, этот вес д. б. по Хэммингу равен 1. Если не равен 1, то произошла ошибка. Как только анализ завершён, формирование scan-кода осущ. конкатенацией 2 значений: значения one-hot последовательности и значения старших разрядов порта B.

Всегда необх. учитывать:

  1. Ограничения по функционированию матричной клавиатуры

  2. Мин. время нажатия одной кнопки, чтобы рассчитать частоту генерирования символов последовательности one-hot.

  3. Предпочтительнее исп. обработчик прерывания для исключения коллизий нескольких последовательных нажатий одной и той же кнопки. В обработчике необходимо также анализировать нулевое состояние на RB4-RB7 (ни одна клавиша не нажата/клавиша только что отжата).