- •Аналоговые и цифровые устройства автоматики
- •Глава 1. Архитектура и устройство
- •1.1. Внутренняя организация мк
- •1.2. Назначение выводов микросхемы мк
- •1.3. Организация памяти в мк
- •1.4. Регистр состояния программы psw
- •1.5. Таймеры/счетчики, регистры tmod и tcon
- •1. 6. Режимы работы таймеров/счетчиков
- •Структура прерываний мк
- •1.8. Блок последовательного интерфейса мк
- •1.8.1. Последовательная передача информации
- •1.8.2. Последовательный порт однокристального мк
- •1.8.3. Регистр управления последовательным портом scon
- •1.8.4. Режимы работы последовательного порта
- •1.8.5. Асинхронный обмен (режимы 1,2,3) данными
- •1.8.6. Скорость приёма/передачи
- •1.8.7. Работа мк в локальной сети
- •1.9. Системный сброс однокристального мк
- •1.10. Режим пониженного энергопотребления мк
- •1.11. Нагрузочная способность портов ввода/вывода
- •1. 12. Расширение портов ввода/вывода
- •Глава 2. Система команд однокристальных мк семейства mcs51
- •Способы адресации операндов
- •2.2. Команды мк
- •2.3. Правила написания программ на языке assembler
- •Метка операция операнд(ы) комментарии
- •2.3.1. Метка
- •2.3.2. Операция
- •2.3.3. Операнды
- •2.3.4. Комментарий
- •2.4. Директивы ассемблера
- •2.4.1. Директивы символических определений
- •Пример:
- •Ozu_org xdata 0800h; Адрес начала области внешнего озу.
- •2.4.2. Директивы резервирования и инициализации памяти
- •2.4.3. Директивы управления состоянием ассемблера
- •Глава 3. Обработка данных в однокристальных микроконтроллерах
- •3.1. Обращение к внутренней, внешней памяти данных и памяти программ
- •3.2. Арифметические операции
- •3.3. Логические операции
- •3.4. Операции с битами
- •Глава 4. Взаимодействие однокристального мк с объектом управления
- •4.1. Программный опрос и ожидание срабатывания позиционных датчиков
- •4.2. Ожидание импульсного сигнала
- •4.3. Программирование таймеров/счетчиков и формирование дискретных управляющих сигналов
- •4.4. Программирование прерываний в микропроцессорном устройстве
- •4.5. Программирование последовательного порта
- •Глава 5. Аппаратные средства
- •5.1. Ввод информации с клавиатуры
- •5.1.1. Прямое подключение клавиш к разрядам порта мк
- •В блоке основной программы происходит инициализация системы, разрешение прерываний, а затем выполняется основная программа.
- •Применение шифратора для организации клавиатуры
- •Шифратора
- •5.1.3. Матричный способ подключения клавиатуры
- •5.1.4. Комбинированный способ организации клавиатуры
- •5.2. Отображение информации в микропроцессорном устройстве
- •5.2.1. Контроллер клавиатуры и дисплея к580вв79 ( intel 8279 )
- •5.2.2. Матричные светодиодные индикаторы
- •5.2.3. Жидкокристаллический дисплей
- •Ввод аналоговых сигналов в микропроцессорный контроллер
- •Ацп с параллельными цифровыми выходами
- •5.3.2. Применение ацп с последовательным выходом
- •5.3.3. Применение таблиц для вычисления функций
- •5.4. Формирование управляющих аналоговых сигналов
- •5.5. Построение ацп с использованием цап
- •5.6. Микропроцессорный контроллер как управляющее устройство в системах автоматического регулирования
- •Согласование дискретных датчиков и исполнительных механизмов с однокристальным мк
- •5.8. Контроль напряжения питания в микропроцессорных системах
- •Глава 6. Отладка программного обеспечения и программирование однокристальных мк
- •6.1. Интегрированная система отладки программного обеспечения для мк ProView
- •6.1.1. Оптимизирующий кросс - компилятор c51
- •6.1.2. Макроассемблер a51
- •6.1.4. Отладчик/симулятор WinSim51
- •6.2. Запуск ProView и создание файла проекта
- •Если в системе задействованы таймеры-счетчики, то удобно промоделировать их работу при разворачивании соответствующих окон Timer (рис.76).
- •В окне указаны источники и адреса векторов прерываний, их состояние и приоритет. Разрешенные прерывания отмечены словом Enable, неразрешенные - Not Enable.
- •Рассмотрим основные пункты раздела debug (отладка), представлены на рис. 84. Эти функции предназначены для выполнения процесса отладки прикладной программы пользователя.
- •6.3. Программирование однокристальных мк
- •Контрольные вопросы для закрепления материала
- •Заключение
- •Библиографический список
- •Глава 1. Архитектура и устройство однокристальных мк семейства mcs51………………………..6
- •Глава 6. Отладка программного обеспечения и программирование однокристальных мк ……….203
- •162600, Г.Череповец , пр. Луначарского, 5
5.1.3. Матричный способ подключения клавиатуры
На рис. 31 показан матричный (3 х 3) способ включения клавиатуры. Клавиши включаются на пересечении линий строк и линий столбцов. Линии строк подключены на входы (I0, I1, I2 ) мультиплексора К555KП7. Линии столбцов через резисторы R1, R2 и R3 подключены к источнику питания +5 В. Столбцы также подключены к разрядам порта Р1 и входам логической микросхемы К555ЛИ3 , выполняющей функцию “И”. Выход схемы “И” подключен к входу Р3.2 (INT0) -аппаратному запросу прерывания процессора. Разряды порта Р1.0, Р1.1, Р1.3 подключены к адресным входам мультиплексора K555KП7, а также к выходам счетчика импульсов К555ИЕ2. Счетный вход С0 счетчика подключен к выходу генератора тактовых импульсов, выполненного на микросхеме K555ЛН1.
Рассмотрим работу схемы. Генератор тактовых импульсов вырабатывает импульсы прямоугольной формы и подает их на вход счетчика К555ИЕ2. Счетчик считает импульсы и формирует на своих выходах 1, 2, 4 двоичный код от 000 до 111. При достижении кода 1000 с выхода 8 счетчика подается сигнал сброса последнего в нулевое состояние.
Сигналы с выхода счетчика поступают на адресные входы А0, А1, А2 мультиплексора, в результате строки матрицы клавиш последовательно одна за другой подключаются к общей шине, так как выход К555KП7 подключен к GND. Если ни одна из клавиш не нажата, то строки матрицы не обнуляются и на входе схемы “И” имеют место единичные сигналы, в результате на выходе “И” также наблюдается единичный уровень, и поэтому прерывания в работе МК не наступает.
При нажатии на одну из клавиш соответствующая строка оказывается обнуленной и на входе схемы “И” один из сигналов будет также нулевым, поэтому на вход INT0 МК поступит запрос на прерывание, что приведет к прерыванию в работе процессора. После этого МК должен прочитать содержимое порта Р1 и идентифицировать клавишу. В этой схеме подключения клавиатуры при невысокой частоте генератора (100 Гц) исключается явление “дребезга контакта”.
Рис. 31. Матричный способ подключения клавиатуры
Определим коды клавиш, используя табл. 20.
Таблица 20
Клавиша |
P1.7 |
P1.6 |
P1.5 |
P1.4 |
P1.3 |
P1.2 |
P1.1 |
P1.0 |
HEX код |
SB1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
F0H |
SB2 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
E8H |
SB3 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
D8H |
SB4 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
F1H |
SB5 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
E9H |
SB6 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
D9H |
SB7 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
F2H |
SB8 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
EAH |
SB9 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
DAH |
Рассмотрим программу, реализующую нахождение кода нажатой клавиши и выполнение соответствующей функции.
<1> ORG 0000H
<2> JMP START
<3> ORG 0003H
<4> JMP INT_KLAV; Вектор прерывания от INT0
<5> START: MOV IE,#01 ; Установка прерывания по входу INT0
<6> SETB IT0 ; Вид прерывания по переходу из "1" в "0"
<7> SETB EA ;
<8> MAIN: ; Выполнение основной программы
JMP MAIN ;
<9> INT_KLAV:MOV A,P1; Получение байта состояния клавиатуры
<10> MOV R1,A ; Сохранение состояния клавиатуры в R1
<11> MOV R2,#00h ; Обнуление счетчика номера клавиш
<12> ANL A,#07h ; Выделение битов строк
<13> MOV B,#03h ;Загрузка в В количества столбцов
<14> MUL AB ; Определение номера строки
<15> MOV R2,A ; Сохранить номер строки в R2
<16> MOV A,R1 ; Восстановление состояния клавиатуры в А
<17> RL A ; Установка кода столбца в старшей тетраде
<18> SWAP A ; Код столбца в младшую тетраду
<19> ANL A,#07h; Выделить 3 младших бита кода столбца
<20> STOLB: RRC A ; Определение активного (нулевого) столбца
<21> JNC DEF_COD ; Если столбец активен, то перейти на определение номера клавиши
<22> INC R2 ;Инкремент счетчика номера клавиш
<23>SJMP STOLB; Продолжить сдвигать до определения активного столбца
<24> DEF_COD:MOV A,R2 ;
<25> ADD A,#01h ; Вычисление номера нажатой клавиши
<26> MOV R2,A
<27> MOV B,#03h ;
<28> MUL AB ; Вычисление адреса
<29>ADR:MOV DPTR,#ADR+1; перехода на подпрограмму
<30> JMP @A+DPTR ; Переход на подпрограмму обработки
<31>JMP SB1;Переход на процедуру обработки при нажатии SB1
<32> JMP SB2 ;Переход на процедуру обработки при нажатии SB2
<33>JMP SB3 ;Переход на процедуру обработки при нажатии SB3
<34> JMP SB4 ;Переход на процедуру обработки при нажатии SB4
<35>JMP SB5;Переход на процедуру обработки при нажатии SB5
<36>JMP SB6 ;Переход на процедуру обработки при нажатии SB6
<37>JMP SB7 ;Переход на процедуру обработки при нажатии SB7
<38>JMP SB8 ;Переход на процедуру обработки при нажатии SB8
<39>JMP SB9 ;Переход на процедуру обработки при нажатии SB9
<40> SB1: ; Выполнение функции при нажатии на клавишу SB1
<41> JMP END_INT ;
<42> SB2: ; Выполнение функции при нажатии на клавишу SB2
<43> JMP END_INT ;
<44> SB3: ; Выполнение функции при нажатии на клавишу SB3
<45> JMP END_INT ;
<46>SB4: ; Выполнение функции при нажатии на клавишу SB4
<47> JMP END_INT ;
<48> SB5: ; Выполнение функции при нажатии на клавишу SB5
<49> JMP END_INT ;
<50> SB6: ; Выполнение функции при нажатии на клавишу SB6
<51> JMP END_INT ;
<52>SB7: ; Выполнение функции при нажатии на клавишу SB7
<53> JMP END_INT ;
<54>SB8: ; Выполнение функции при нажатии на клавишу SB8
<55> JMP END_INT ;
<56>SB9: ; Выполнение функции при нажатии на клавишу SB9
<57> JMP END_INT ;
<58>END_INT: RETI ; Выход из прерывания