Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

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






Блок клавиатуры




Схема платы блока клавиатурыпредставлена на рис.26. К контактам порта Р0.0-Р0.3 подключены линии сканирования, Р0.4-Р0.7 – линии считывания. Чтобы узнать состояние какой-либо клавиши, необходимо на линии сканирования выставить сканирующий код. Для первого ряда код 1110, для второго ряда 1101, для третьего ряда 1011, для четвертого ряда 0111.

Если клавиша не нажата (например, клавиша А), напряжение источника питания через резисторы R7 и R6 поступает на вход антидребезговой схемы (что соответствует логической 1), собранной на двух инверторах DD1.1 и DD1.2, с выхода которой логическая 1 поступает на соответствующий вход микроконтроллера.

Если клавиша нажата, то точка соединения R7 и R6 через открытый выходной транзистор выхода Р0.0 (поскольку при сканировании первого ряда на этот выход подан логический 0) замыкается на корпус, ее потенциал становится близким к нулю, что микросхемой DD1.1 воспринимается как логический 0. С выхода антидребезговой схемы на вход Р0.7 поступает логический 0.

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

 

Рис.25. Принцип работы антидребезговой схемы

 

В момент нажатия клавиши возникает дребезг – хаотичное изменение напряжения. При нажатии клавиши А потенциал точки а (а следовательно и точки b) начинает снижаться (через открытый выходной транзистор выхода Р0.0 она подключается на корпус). В точке b cнижение потенциала происходит по экспоненциальному закону (сглаживаются шумы) за счет заряда конденсатора С7.

При снижении потенциала точки b до 0,4В (уровень логического 0) инверторы срабатывают и на их выходе появляется логический 0. Постоянная времени цепи R6C7 подобрана таким образом, чтобы время заряда емкости было больше или равно времени дребезга. На входе и выходе инверторов устанавливается логический 0, емкость разряжается.

При размыкании кнопки наблюдается аналогичная ситуация, инверторы срабатывают при увеличении потенциала точки b до 2,4В.

Задача.Проверить состояние клавиш 1, 2, 5 и В. При нажатии клавиши выполнить заданные действия. Если нет нажатых клавиш, то повторить опрос клавиш.

 

Фрагмент программы, реализующей указанную задачу:

 

OPROS: MOV P0,#11111110B ; выдать сканкод 1 ряда

LCALL PAUZA ; подпрограмма задержки

JNB P0.4,MET1 ; перейти на метку МЕТ1, если

; нажата кнопка 1

JNB P0.5,MET2 ; перейти на метку МЕТ2, если

;нажата кнопка 2

MOV P0,#11111101B ; выдать сканкод 2 ряда

LCALL PAUZA ; подпрограмма задержки

JNB P0.5,MET3 ; перейти на метку МЕТ3, если

; нажата кнопка 5

JNB P0.7,MET4 ; перейти на метку МЕТ4, если



; нажата кнопка В

LJMP OPROS ; если не нажата ни одна клавиша,

; то повторить опрос клавиатуры;

MET1: ; команды, выполняемые при нажатии кнопки 1

LJMP OPROS

MET2: ; команды, выполняемые при нажатии кнопки 2

LJMP OPROS

MET3: ; команды, выполняемые при нажатии кнопки 5

LJMP OPROS

MET4: команды, выполняемые при нажатии кнопки В

LJMP OPROS

 

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

 

PAUZA: MOV R0, #20h ;загрузить в регистр R0 число 20h

M0: MOV R1, #FFh ;загрузить в регистр R0 число FFh

M1: DJNZ R1, M1 ; уменьшить на 1 содержимое реги-

; стра R1 и перейти, если не 0

DJNZ R0, M0 ; уменьшить на 1 содержимое реги-

; стра R0 и перейти, если не 0

RET ; выход из подпрограммы

 


Рис.26Блок клавиатуры



mylektsii.ru - Мои Лекции - 2015-2019 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал