- •1 Расшифровка и анализ задания
- •1.2 Реакция системы на внешние события
- •2.1.1 Организация архитектуры к1816ве51.
- •2.1.2 Набор регистров мк51
- •2.1.3 Организация памяти мк51
- •2.1.5 Последовательный канал связи
- •2.1.6 Таймеры/счетчики
- •2.1.7 Система прерываний
- •2.1.8 Система команд мк ве51
- •2.2 Функциональное описание ве51
- •2.2.1 Интерфейс расширения
- •2.2.2 Работа таймеров/счетчиков
- •2.2.3 Работа последовательного канала связи
- •2.2.4 Работа с внешней памятью программ и памятью данных
- •2.2.5 Работа с портами
- •3 Разработка подсистемы памяти
- •3.1 Описание микросхемы кр537ру8
- •3.3 Подключение озу и пзу к системной шине
- •4 Разработка подсистем ввода/вывода, прерываний и пдп
- •4.1 Аналогово-цифровой преобразователь
- •4.2 Цифроаналоговый преобразователь
- •4.3 Контроллер прямого доступа к памяти кр580вт57
- •4.4 Многорежимный буферный регистр к589ир12
- •4.5 Контроллер клавиатуры/дисплея кр580вд79
- •4.5.1 Общие сведения о мс кр580вд79
- •4.5.2 Управление ккд с помощью сигналов на внешних выводах
- •4.5.3 Режимы работы клавиатуры
- •4.5.4 Режимы работы дисплея
- •4.5.5 Байт состояния памяти клавиатуры/датчиков
- •5 Разработка программного обеспечения
- •5.2 Разработка блок-схемы управляющей системы
- •6 Реализация устройства на базе микропроцессора к1816ве51
- •6.1 Основные технические данные и характеристики
- •6.1.1 Параметры назначения:
- •6.2 Устройство
- •6.2.1 Общие сведения
- •6.2.2 Принцип действия
4.5.4 Режимы работы дисплея
Ввод слева. Это самый простой формат ввода. При нем каждой позиции на дисплее однозначно соответствует байт в памяти дисплея. Нулевой адрес памяти дисплея соответствует самой левой нулевой позиции дисплея, адрес 15 (7 для 8-позиционного дисплея) соответствует самой правой позиции дисплея. При переходе за 16 (8) позиций следующие символы будут опять вводиться слева с нулевой позиции, т.е. 17-й (9) символ займет крайнюю левую позицию.
Ввод справа. Этот способ ввода используется в калькуляторах. Первый вводимый символ заносится в крайнюю правую позицию. Следующие символы также заносятся в крайнюю правую позицию, но после того, как все символы на дисплее сдвинутся на одну позицию влево. Самый левый символ при этом теряется. Заметим, что здесь номера позиций на дисплее уже не соответствуют адресам памяти дисплея. Адрес памяти дисплея в этом случае соответствует порядковому номеру нажатой клавиши. Указание позиции, в которую должен быть введен символ при автоинкрементируемом вводе (см. далее), может иметь непредсказуемый результат.
Автоинкрементирование. В состоянии ввода слева это означает, что следующий символ, поступающий из МК, будет размещен по адресу, на единицу большему, чем предыдущий. При отсутствии автоинкремента ввод будет произведен в ту же самую позицию. Использование автоинкремента при вводе слева не порождает непредсказуемых эффектов, даже если после ввода нескольких символов нужно ввести очередной символ не в следующую, а в произвольную позицию. Это обусловлено тем, что позиция на дисплее при вводе слева однозначно соответствует адресу памяти дисплея. При вводе справа с, автоинкрементированием попытка ввести символ в фиксированную позицию будет иметь непредсказуемый результат.
Формат дисплея. Если используется 8-позиционный дисплей, то время цикла сканирования дисплея в 2 раза меньше, чем для 16-позицион-ного дисплея. При внутренней частоте 100 кГц это время составляет 5,1 и 10,2 мс соответственно.
4.5.5 Байт состояния памяти клавиатуры/датчиков
Байт состояния используется в режиме клавиатуры и стробируемого ввода для отображения числа введенных символов и индикации ошибки. Возможны два вида ошибок: переполнение и переопустошение. Флаг переполнения устанавливается, когда делается попытка записи в заполненную память клавиатуры. Флаг переопустошения устанавливается, если была попытка считать из пустой памяти клавиатуры. Байт состояния имеет также бит DU, показывающий, что дисплей недоступен из-за того, что не завершена очистка памяти дисплея. В специальном режиме ошибки бит S/E является флагом ошибки и указывает на множественное нажатие клавиш. В режиме матрицы датчиков этот бит показывает, что имеется хотя бы один "замкнутый" (нулевой) датчик.
Формат байта состояния памяти клавиатуры/датчиков: DU.S/E.O.U.F.N.N.N, где:
DU - дисплей недоступен;
S/E – датчик «замкнут»/ошибка многократного нажатия;
О – ошибка переполнения;
U – ошибка переопустошения;
F – память клавиатуры заполнена;
NNN – количество символов в памяти клавиатуры.
4.5.6 Сопряжение микропроцессора с клавиатурой и линейным дисплеем на основе БИС КР580ВД79
Использование ККД позволяет разгрузить МС от рутинных операций опроса клавиатуры и поддержания (рефреша) изображения на однострочном дисплее. Одна из возможных схем подключения контроллера клавиатуры/ дисплея к МК51 показана на рисунке 23. При таком подключении контроллер входит в адресное пространство ВПД. Линия Р1.0 соединяется с линией А0 контроллера и должна быть установлена/сброшена перед обращением МК к контроллеру в зависимости от типа обращения (управление/данные). Вход выборки контроллера соединен с общей точкой, и, таким образом, контроллер всегда готов к обмену с МС. Выход сигнала запроса прерывания (IRQ) контроллера соединен с линией Р1.1 МС и может быть программно опрошен для определения факта нажатия клавиши. Шина данных и линии чтения/записи контроллера соединяются напрямую с соответствующими линиями МК51. На вход CLK подается сигнал частотой примерно 2 МГц с выхода ALE.
Рисунок 23 - Схема подключения ККД к МК51
Контроллер клавиатуры/ дисплея в нашем примере обеспечивает ввод в МС кода нажатой клавиши (одной из 20) и поддерживает изображение на восьмипозиционном однострочном дисплее. Для сканирования клавиатуры и дисплея дополнительно используется инвертирующий дешифратор на восемь выходов. Диоды на выходе дешифратора необходимы для защиты от короткого замыкания между собой его выходов при одновременном нажатии нескольких клавиш.
Дисплей показан на схеме условно; предполагается, что он снабжен необходимыми буферными схемами для обеспечения требуемых токов нагрузки. Сигнал 0 на входе R обеспечивает гашение всех индикаторов одновременно.
Матрица клавиш расположена таким образом, чтобы SCAN-код кла виши совпадал с двоичным кодом шестнадцатеричной цифры, нанесенной на клавишу. Входы SHIFT и CNTL заземлены. Клавиатура состоит из 16 цифровых клавиш (0-F) и 4 клавиш управления (функциональных), коды которых больше 0FH.
Для того чтобы настроить контроллер клавиатуры/дисплея на определенный режим работы, основная программа МК-системы должна загрузить в него управляющие слова инициализации (УСИ) и в требуемый момент выдать управляющее слово операции (УСО).
Коэффициент деления входного синхросигнала (CLK) необходимо установить таким образом, чтобы внутренняя опорная частота контроллера получилась около 100 кГц. Так как частота сигнала ALE равна примерно 2 МГц, то коэффициент деления выбирается равным 20. Содержимое регистра R0 не имеет значения, так как в нашем примере контроллер "закрывает" собой все адресное пространство ВПД. После инициализации контроллер будет работать параллельно с МС и избавит его от необходимости выполнения программ опроса клавиатуры и поддержания изображения на дисплее. Как только контроллер клавиатуры/дисплея зафиксирует нажатие клавиши и определит ее SCAN-код (совпадающий с двоичным кодом шестнадцатеричной цифры клавиши), он сразу оповестит об этом МС, установив сигнал на выходе запроса прерывания (IRQ). После обнаружения сигнала 1 на входе Р1.1 МС может прочитать код клавиши из контроллера. Но для этого надо предварительно загрузить в контроллер УСО "Чтение", специфицирующее источник информации (буфер кодов клавиш) и адрес ячейки. После этого при Aq = 0 можно вводить код клавиши в МС.
4.6 Уточненная схема управляющей микро ЭВМ
По результатам сделанного подбора микросхем начертим уточненную схему управляющей микроЭВМ (рисунок 24) и функциональную схему управляющей микроЭВМ (приложение А1).
Y4
Пульт
управления
ЦАП
К572ПА1
ОМВЭВМ К1816ВЕ51
УВВ
АЦП
К1113ПВ1
Буферный регистр
К589ИР12
КПДП
КР580ВТ57
Сигналы с датчиков
Контроллер
клавиатуры/дисплея
КР580ВД79
Рисунок 24 – Уточненная структурная схема управляющей микроЭВМ
Для сопряжения блоков АЦП и ЦАП с микроЭВМ использован многорежимный буферный регистр К589ИР12.
Ввод управляющих сигналов и световой индикации через интерфейс ввода-вывода (ИВВ) осуществляется с помощью контроллера клавиатуры/дисплея КР580ВД79.