Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабРабота_2.docx
Скачиваний:
19
Добавлен:
04.05.2019
Размер:
252.62 Кб
Скачать

3.7. Задания для самостоятельной работы

Задание 3. Используя схему МКУ, приведенную на рис. 4, разработайте программу, выполняющую следующий алгоритм. После запуска программы светодиод горит. При нажатии на кнопку (даже кратковременного) диод гаснет на время 5 с, а затем вновь загорается. Тактовая частота работы МК равна 4 МГц. Программу назовите sw_led2.c. Создайте для нее новый проект pr10 и папку proj10. Проверьте работу программы с помощью Proteus Viewer с использованием проекта sw_led1.dsn из папки proj9.

Подсказка. Для получения задержки на 5 с можно последовательно вызывать задержки меньшей длительности, например, на 2 и 1 с.

Задание 4. Используя схему МКУ на рис. 4, разработайте программу, выполняющую следующий алгоритм. После включения питания МК (его сброса) светодиод VD1 не горит. При нажатии на кнопку SB1 светодиод начинает мигать с частотой 1 Гц (0,5 с горит и 0,5 с не горит). При отжатии кнопки (размыкании ее контакта) светодиод гаснет. Для упрощения программы будем предполагать, что даже при кратковременном замыкании контакта кнопки светодиод загорается на время 0,5 с, а потом гаснет. Частота работы МК равна 4 МГц. Программу назовите sw_led3.c. Создайте для нее новый проект pr11 и папку proj11. Проверьте работу программы с помощью Proteus Viewer с использованием проекта sw_led1.dsn из папки proj9.

3.8. Разработка и исследование программы проверки работы кнопочных переключателей

Рассмотрим программу, которая проверяет работу кнопочных переключателей SB1 и SB2 микроконтроллерного устройства, схема которого приведена на рис.1. Эта программа должна выполнять следующий алгоритм. После запуска программы (например, включения электропитания) производится инициализация МК, при которой линии RB0 и RB7 порта В настраиваются на ввод, а линии RC0 и RC7 порта С – на вывод. Затем производится диагностика светодиодов, для чего светодиоды VD1 и VD2 включаются на время 1 секунду, а потом гаснут. Затем программа в бесконечном цикле ожидает момент срабатывания контактов переключателей SB1 и SB2. При замыкании SB1 загорается светодиод VD1 красного цвета, а при замыкании SB2 загорается светодиод VD2 зеленого цвета.

Программа на языке Си с именем check.c (проверка) будет состоять из главной функции main( ) и двух функций пользователя: функции инициализации микроконтроллера init( ) и функции диагностики светодиодов diagn( ). Для выполнения задержки на 1 с будем использовать библиотечную функцию задержки Delay10KTCYx( ). Предполагаем, что тактовая частота работы МК равна 4 МГц.

В микроконтроллерах семейства PIC18 для упрощения реализации схем сопряжения с контактами клавиатуры имеется возможность подключения к линиям порта В внутренних подтягивающих резисторов (pull up resistors). Эти резисторы подключаются только к линиям порта В, настроенных на ввод. Подключить резисторы можно установкой специального бита в регистре опций OPTION, однако проще это сделать с помощью вызова библиотечной функции EnablePullups( ), которая входит в набор функций управления портом В. Для использования этой функции в программу на Си необходимо подключить заголовочный файл portb.h.

/*************************************************************

check.c – программа проверки переключателей SB1, SB2

************************************************************/

#include<p18f242.h>

#include<delays.h> // заголовочный файл для функций задержки

#include<portb.h> // заголовочный файл для функций порта В

#pragma config WDT = OFF, OSC = HS

void init(void); // прототип функции инициализации

void diagn(void); // прототип функции диагностики

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]