Программирование клавиатуры
Цель работы: обучение созданию программ с вводом данных с помощью клавиатуры. Закрепление навыков организации условных переходов и инициализации портов.
Теоретические сведения
Клавиатура используется в реальных программах для ввода данных, инструкций, изменения алгоритма вычислений. В лабораторной работе с клавиатуры будем подавать сигнал ’1’ в PORTD, без применения дополнительного источника питания. Сигнал будет обработан микропроцессором и в PORTC будет выведен результат работы программы. Изучите принципиальную схему подключения пленочной клавиатуры к микроконтроллеру (см. рисунок 9.1). Использование такой схемы подключения продиктовано тем, что все кнопки подключаются к одному регистру PORTD, имеющему восемь бит. На рисунке 9.1 приведена, в качестве примера, монтажная схема подключения кнопки с цифрой «1» к PORTD. Разряды RD7, RD6, RD5, RD4 предназначены для подачи сигнала «1». Остальные для приема сигнала. В разряде RD0 по заводской схеме всегда записана «1». Одна клемма кнопки «1» подключена к выводу RD7, вторая подключена к выводу RD3.
Задание на проектирование
Создайте программу автоматизации окрасочной камеры по заданию лабораторной работы №8. Предусмотреть запуск и останов камеры кнопками по месту и с пульта оператора. Дребезг контактов клавиатуры убирается включением подпрограммы Timer. Кнопка Stop в данной программе находится в подпрограмме Timer. Выключение оборудования кнопкой здесь возможно, потому что при выполнении данной программы, МК практически все время находится во внутреннем цикле подпрограммы Timer. При других алгоритмах такой вариант выключения невозможен, необходимо предусмотреть прерывание.
Фрагмент 9.1. Программирование клавиатуры. Добавленные команды по сравнению с лабораторной работой №8, выделены курсивом. ; Инструкции для настройки МК опущены. CLRF TRISC MOVLW b'00001111' MOVWF TRISD; настраиваем PORTD: биты 0-3 на ввод, 4-7 на ввод. BCF STATUS, 5 CLRF PORTC ; Рабочая часть программы MOVLW B'11110000' MOVWF PORTD; подаем питание на выводы К7-К4 клавиатуры. MOVLW B'10000000' MOVWF PORTC; включаем сигнализацию наличия питания на пульт. Sled_det BTFSS PORTD, 2; проверяем нажатие кнопки Pusk. GOTO Sled_det; если кнопка Pusk не нажата повторяем проверку. BSF PORTC, 0; если нажата, включаем звуковую сигнализацию S1. MOVLW d'40'; задаем время работы сигнализации S1. CALL Timer MOVLW B'10001110' MOVWF PORTC; включаем двигатели D1 и D2, сигнализацию L1. MOVLW d'60'; задаем время работы D1. CALL Timer BCF PORTC, 2; выключаем D1, продолжают работать D2, L1 и L2. MOVLW d'20'; задаем время работы вентилятора D2 и лампочки L1. CALL Timer MOVLW B'10000000' MOVWF PORTC; выключаем вентилятор D2 и сигнализацию L1. MOVLW d’20’; задаем время для замены заготовки. CALL Timer GOTO Sled_det; на метку Sled_det для нового запуска установки. GOTO $; разделитель основной программы и подпрограмм. Timer; в подпрограмме показан только внутренний цикл с кнопками Stop. M_in; метка внутреннего счетчика. BTFSC PORTD, 1; проверяем нажатие кнопки Stop1 или Stop2. GOTO Stop; если кнопка Stop нажата, останавливаем камеру. DECF Sch_in, F; уменьшаем значение счетчика Sch_in на 1. BTFSS STATUS, Z; если счетчик обнулился (Z=1), пропускаем GOTO. GOTO M_in; срабатывает только при Z=0. DECF Sch_out, F; уменьшаем значение счетчика Sch_out на 1. .... RETURN Stop CLRF PORTC; окончание работы окрасочной камеры.
END; конец текста всей программы.
Задание на выполнение
Разработайте программу, автоматизации окрасочной камеры, согласно варианту задания из таблицы 9.1. Для уменьшения паразитных наводок необходимо все клеммы клавиатуры соединить с выводами PORTD и на биты RD4…RD7 подать напряжение.
Т а б л и ц а 9.1 – Варианты заданий
Время работы S1, D1, D2, L1 и L2 и биты их подключения к PORTC принять как в лабораторной работе №8. Продемонстрируйте работу программы преподавателю.
9.4 Контрольные вопросы
1. Расскажите, какую реальную задачу решает ваша программа 2. Назначение клавиатуры. 3. Зачем разряды PORTD настраивают на ввод и на вывод? 4. Как инициализируется PORTD? 5. Как проверяется нажатие кнопки клавиатуры? 6. Почему каждая кнопка клавиатуры не имеет отдельной клеммы? 7. Что выполняет инструкция BTFSS PORTD, 2? 8. Что выполняет инструкция BTFSC PORTD, 2? 9. Как подключить кнопки «1» и «2» параллельно по схеме ИЛИ? 10. Что записано в файле p16F877.inc? 11. Назначение сигнализации в программе. 12. Можно ли кнопку Stop разместить вне подпрограммы Timer.
Автоматизация упаковки
Цель работы: разработка автоматизации упаковочной машины.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|