Разработка таймера прямого хода

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



в зависимости от знакоместа) и после выполнения команды LPM нужное значение будет содержаться в регистре R0, которое впоследствии и выдаётся в порт A.

3.7 Подпрограмма опроса клавиатуры (SCAN)

Рисунок 3.10 - Блок-схема подпрограммы опроса клавиатуры

Клавиатура сканируется с помощью логического 0, который подается на соответствующую линию при выводе на индикацию. Далее производится опрос 3-х младших разрядов порта D, и если один из них равен 0, то это является признаком нажатия соответствующей кнопки, в зависимости от чего к регистру NOM_KNOP (номер строки (0тАж3), умноженный на 3) прибавляется номер столбца, в результате чего получаем номер нажатой кнопки.

В этой подпрограмме также вызывается подпрограмма ANTIDREBEZG. На рисунке 3.9 показан дребезг контактов при нажатии на кнопку. Как видно из рисунка, в результате дребезга контактов кнопки, происходит имитация ее многократного нажатия. Для того, чтобы избежать неправильного декодирования, считывание скан-кода производится через некоторое время после фиксации факта изменения состояния.

Рисунок 3.11 - Дребезг контактов

После того, как зафиксирован факт нажатия кнопки, включаем флаг блокировки ввода - BLOK_VVODA, который отключается после того, как счетчик S_BLOK достигает значения 100 и обнуляется.

Если программа работает в режиме ввода времени, то вызывается подпрограмма GET_KEY, определяющая корректность ввода цифры.

3.8 Подпрограмма антидребезга (ANTIDREBEZG)

Рисунок 3.12 - блок-схема подпрограммы антидребезга

Подпрограмма вызывается после того, как зафиксирован факт нажатия кнопки и предназначена для того, чтобы избежать неправильного декодирования, считывание скан-кода производится через некоторое время после фиксации факта изменения состояния. Это время определяется числом 32x255, которое было подобрано экспериментально.

3.9 Подпрограмма проверки корректности нажатия клавиши (GET_KEY)

Рисунок 3.13 - Блок-схема подпрограммы проверки корректности нажатия клавиши

Данная подпрограмма предназначена для проверки корректности нажатия клавиши в режиме ввода времени.

При этом игнорируется нажатие клавиш * и #". При нажатии 0 в регистр NOM_KNOP записывается 0, которое впоследствии выдаётся в один из счётчиков часов (минут).

Далее, в зависимости от того, на какой индикатор в данный момент происходит выдача информации (состояние регистра REGIM), производятся следующие проверки:

REGIM = 1 - то можно ввести только цифры от 0 до 2;

REGIM = 2 - если HOUR_1 = 2, то в HOUR_2 можно ввести цифру от 0 до 3, в других случаях в HOUR_2 можно ввести цифру от 0 до 9;

REGIM = 3 - в MIN_1 можно ввести цифру от 0 до 5;

REGIM = 4 - в MIN_2 можно ввести цифру от 0 до 9.

Заключение

В данном курсовом проекте была разработана программа, реализующая таймер прямого хода на базе микроконтроллера AT90S8515. Приложением и средой программирования был выбран Algorithm Builder, по причине того, что он обладает простым для понимания и восприятия графическим интерфейсом.

В результате выполнения курсового проекта были получены и закреплены основные навыки программирования устройств на базе микроконтроллеров.