Урок 8. Введення інформації в МК. Підключення кнопки до МК BASCOM-AVR

У попередніх уроках були розглянуті способи виводу інформації з мікроконтролера: підключення світлодіода та ЖК-індикатора. Але як же вводити інформацію в мікроконтролер? Існує безліч варіантів та пристроїв для цього. Але поки що розглянемо найпростіший варіант, це звичайна кнопка. Кнопки бувають двох видів: тактові та фіксуючі. Тактові кнопки працюють за таким принципом: натиснув – контакти замкнулися, відпустив – контакти розімкнулися. Слід врахувати, що існують тактові кнопки, які спочатку замкнуті, а при натисканні розмикаються. Фіксуючі кнопки (їх іноді називають: тумблери, вимикачі, перемикачі) на відміну від тактових фіксують своє положення при натисканні, тобто: натиснув – контакти замкнулися, ще раз натиснув – контакти розімкнулися. У загальному, з кнопками розібралися, тепер будемо розбиратися, як підключити ці кнопки до мікроконтролера. А підключити насправді дуже просто! Дивимося схему:

Підключення кнопки до МК

Можливо, ви запитаєте: Зачем резистор R1? А тому, що без резистора R1, коли кнопка S1 буде розімкнута, мікроконтролер на порту, до якого все це підключено, буде бачити то логічну 1, то логічний 0, тим самим будуть відбуватися помилкові спрацьовування кнопки. Щоб цього не відбувалося, необхідно цей порт "підтягувати" опором до плюса живлення. Опір резистора R1 може бути в інтервалі від 4,7 кОм до 10 кОм. З резистором виходить така картина: кнопка S1 натиснута – на порту МК виникає логічний 0, кнопка S1 не натиснута – на порту МК виникає логічна 1 завдяки опору R1. Звісно, потрібно знати, що в деяких AVR мікроконтролерах є вбудовані підтягуючі резистори опором порядку 50 кОм, за замовчуванням вони вимкнені. У BASCOM-AVR ці резистори можна ввімкнути, записавши в необхідний порт логічну 1. Але я вкрай не рекомендую використовувати ці вбудовані, набагато надійніше використовувати зовнішні, як показано на схемі вище. Ну що, зі схемним рішенням розібралися, тепер будемо розбиратися програмно. Для роботи з кнопкою спочатку потрібно сконфігурувати порт мікроконтролера на вхід, в BASCOM-AVR це робиться ось так:
Config (порт мікроконтролера) = input
Приклад:
Config PINB.3 = input

Зверніть увагу, що для роботи порту на вхід, ім'я порту повинно починатися з PIN, а не з PORT, як для конфігурації порту на вихід!

Після конфігурації порту на вхід ми можемо зчитувати з нього значення 1 або 0, в нашому випадку 0 – кнопка натиснута, 1 – кнопка не натиснута. А перевірити, що кнопка натиснута, ми можемо так:
If (порт мікроконтролера) = 0 then
(якщо кнопка натиснута, то виконуємо дії, описані тут)
End if
Можна і навпаки, перевірити, чи не натиснута кнопка:
If (порт мікроконтролера) = 1 then
(якщо кнопка не натиснута, то виконуємо дії, описані тут)
End if
Приклад:
If PINB.3 = 0 then
PORTB.2 = 1 "якщо кнопка натиснута, то вмикаємо світлодіод, підключений до PB.2
End if

Просто, чи не так? Отже, тепер спробуємо реалізувати підключення кнопки до мікроконтролера в "залізі". За основу візьмемо мікроконтролер Attiny13 та відладочну плату для нього, зроблену трохи раніше. Для тих, хто не робив відладочну плату, ось схема:

Схема підключення кнопки до мікроконтролера

Алгоритм роботи програми такий: кнопка S1 натиснута – світлодіод не горить, кнопка S1 не натиснута – світлодіод горить. А ось і сама програма на BASCOM-AVR:

$regfile = "attiny13.dat"
$crystal = 8000000

Config Pinb.3 = Input
Config Portb.2 = Output

Do
If Pinb.3 = 0 Then Portb.2 = 0
If Pinb.3 = 1 Then Portb.2 = 1
Loop

End

Ось така проста програма. Скомпільована прошивка знаходиться в архіві нижче. Фьюз біти можна не виставляти, оскільки в такій простій програмі тактова частота не особливо важлива. Для ледачих збирати в залізі є проект в нашому улюбленому симуляторі Proteus, скачати можна в архіві нижче. Робота в схемі в симуляторі Proteus:

Схема в Proteus

Скачати файли для уроку (проект в Proteus, вихідний код, прошивка) ви можете нижче

Список радіоелементів

Обозначення Тип Номінал Кількість Примітка
IC1 МК AVR 8-біт
ATtiny13
1
R1, R2 Резистор
4.7 кОм
2
R3 Резистор
150 Ом
1
HL1 Світлодіод 1
Bat1 Елемент живлення 3 Вольт 1

Прикреплені файли:

Top