Виберіть свою мову

Застосування сучасної елементної бази, зокрема мікроконтролерів, дозволяє зменшити масу і габарити електронних пристроїв, збільшити число виконуваних ними функцій. У пропонованій статті розказано про модулі кодового замку, виконаному з використанням PIC-контролера.

Пристрій призначений для застосування в якості вузла секретності (електронної замковій "личинки") в кодових замках, системах управління сигналізацією або інших пристроях, доступ до використання яких необхідно обмежити або повністю в окремих режимах.

Модуль забезпечує появу високого логічного рівня на своєму виході при наборі з клавіатури семизначного десяткового числа - коду. При повторному його набір на виході виникає низький рівень. У складі модуля - два незалежних друг від друга каналу, кожний з них керує одним виходом. Коди доступу в канал можуть бути задані (модифіковані) користувачем у спеціальному режимі предустановки. У нього канал переходить при наборі з клавіатури семизначного коду передустановки (кожен канал має свій код). З цього режиму можна модифікувати як код доступу, так і сам код предустановки. Усі коди обох каналів зберігаються в електрично програмованої пам'яті даних (ЕЕРROM) модуля, що доступна для запису програмно.

Схема модуля показана на рис. 1. Його основа - мікроконтролер фірми PIC16F84 MICROCHIP, що забезпечує мале енергоспоживання і мінімальні витрати [1]. Всі функції реалізовані програмно. Висновки порту мікроконтролера DD1 (RBO- RB6) використовуються для підключення стандартної 12-кнопкової клавіатури. RB0-RB3 запрограмовані на ввід даних, a RB4-RB6 - на вивід. Висновок RB7, запрограмований як вихід, застосовується для подачі звукових сигналів.

При кожному натисканні на будь-яку клавішу, яка виявляється та оцінюється програмою як "істинне", на виводі 13 DD1 з'являється пачка з 124 імпульсів з періодом між ними близько 4 мс. Звучить короткий звуковий сигнал. При утримуванні клавіші пачки слідують одна за одною без пауз (постійний сигнал). При наборі правильного коду (доступу або предустановки) на цьому виводі з'являються 1240 таких імпульсів (звуковий сигнал тривалістю близько 5 с).

На елементах R5, R6, С4, VD1 виконаний вузол зовнішнього скидання мікроконтролера при включення живлення. Висновки порту А мікроконтролера RAO - RA4 запрограмовані як виходи. RAO є прапором дозволу режиму предустановки для обох каналів. Установка цього прапора (дозволу режиму предустановки) висвічується світіння світлодіода HL1. Прапор встановлюється при натисканні на кнопку "*" клавіатури, а скидається при натисканні на кнопку "#" чи по закінченню модифікації кодів у режимі предустановки в будь-якому каналі або в момент системного скидання (при відключенні-включенні живлення).

RA1 і RA2 - прапори режимів предустановки каналів 1 і 2. Кожен з них встановлюється при наборі відповідного коду предустановки, а скидається при натисканні на кнопку "#" чи по закінченню модифікації кодів у режимі передустановки у відповідному каналі або при системному скиданні. Установка кожного з цих прапорів відображається світінням відповідного світлодіода HL2, HL3. Модифікація кодів у вибраному каналі можлива тільки в тому випадку, якщо встановлено прапор режиму предустановки цього каналу і прапор дозволу режиму предустановки.

RA3 і RA4 - виходи каналів 1 і 2 відповідно. На кожному з них виникає високий рівень під час набору відповідного коду доступу, а скидається при повторному наборі коду або системному скиданні. RA3 має ТТЛ-рівні, a RA4 - вихід з відкритим стоком. До виходів каналів підключають виконавчі пристрою.

Зі сказаного випливає, що модуль фактично є четырехканаль-вим: крім двох "повних" каналів, встановлюваних і скидаються тільки набором кодів доступу, є ще два "неповних" каналу (RA1 і RA2). Їх встановлюють набором кодів предустановки, а скидають натисненням на кнопку "#", тобто вони обмежують доступ тільки до включення виконавчих пристроїв, але не до їх вимикання. У уникнути помилкової модифікації кодів у EEPROM. при використанні "неповних" каналів слід стежити, щоб прапор дозволу режиму предустановки був скинутий.

Спрощена блок-схема алгоритму роботи програми показана на рис. 2. Після включення живлення відбувається системне скидання, обнуління всіх прапорів і виходів порту А. Далі програма починає опитувати клавіатуру. При виявленні натиснутою клавіші опитування припиняється, поки клавіша не буде відпущена. Захист від брязкоту контактів клавіш реалізована програмно. Набирається код накопичується в регистровом ОЗП мікроконтролера.

(натисніть для збільшення)

Після введення сьомій цифри набраний код порівнюється з кодом предустановки каналу 1. У випадку розбіжності - порівнюється з кодом предустановки каналу 2. Коли набраний код збігається з одним з цих кодів, програма встановлює відповідний прапор режиму предустановки і скидає набраний код. Якщо ж не збігається, він послідовно порівнюється з кодами доступу каналів 1 і 2. Якщо і з ними набраний код не збігається, він скидається.

Слідом за введенням з клавіатури кожної цифри програма перевіряє, чи встановлений прапор дозволу режиму предустановки. Переконавшись, що це сталося, програма послідовно уточнює, встановлені прапори режиму предустановки каналів 1 і 2. Якщо хоча б один з них встановлено, відбудеться перехід у режим предустановки. В результаті кожного натиснення на клавіші "Про"-"9" в цьому режимі проводиться запис у комірку EEPROM коду відповідної цифри, "стираючи" знаходився там раніше код. Після введення чотирнадцяти цифр (семи цифр коду доступу та семи - коду предустановки) автоматично здійснюється вихід з режиму предустановки (скидання всіх прапорів).

Вийти з режиму предустановки можна також шляхом набору будь-якої кількості цифр (менше чотирнадцяти), наприклад, коли потрібно модифікувати тільки код доступу. Для цього треба натиснути на кнопку "'#" після набору семи цифр.

Програма була підготовлена в середовищі MPLAB [2]. При програмуванні кристала слід встановити OSC=XT, WDT=Off, PWRTE=On, CP=Off, а в EEPROM даних записати код 00h no всіма адресами.

Для живлення модуля можна використовувати джерело постійної напруги +7,5...+15 Ст. Струм споживання мікроконтролера DD1 від інтегрального стабілізатора DA1 при погашених світлодіоди HL1 - HL3 становить близько 1 мА. Кварцовий резонатор ZQ1 можна застосувати на частоту 2...4 МГц (можна замінити RC-ланцюгом), однак слід враховувати, що від частоти тактового генератора залежить тональність звукових сигналів на виводі 13 DD1. Пьезоизлучатель НА1 - ЗП-3.

Для узгодження логічних рівнів на виході каналу 2 (висновок 3 DD1) з виконавчим пристроєм нижній за схемою вивід резистора R12 відключають від стабілізатора і підключають до плюсового виводу джерела живлення виконавчого пристрою.

Конструктивне виконання модуля має бути таким, щоб виключити доступ ззовні до ланцюгів його виходів.

Пристрій не вимагає налагодження, однак перед початком експлуатації користувачеві необхідно ввести в пам'ять обох каналів свої власні коди. Це роблять наступним чином. Після першого включення живлення потрібно сім раз натиснути на пункт "О". Повинен засвітитися світлодіод HL2 і пролунати довгий звуковий сигнал. Потім натискають на кнопку "*". Тепер повинен засвітитися світлодіод HL1. Наступна операція - користувач з клавіатури вводить чотирнадцять цифр, перші сім з яких будуть кодом доступу каналу 1, а решта - кодом предустановки цього каналу.

Коли будуть набрані чотирнадцять цифр, світлодіоди HL1, HL2 згаснуть. Повторно натиснувши сім разів на кнопку "0" (повинний загорітись світлодіод HL3 і прозвучати довгий звуковий сигнал), а потім на кнопку "*" (повинний загорітись світлодіод HL1), користувач вводить ще чотирнадцять цифр - код і код доступу предустановки каналу 2. Світлодіоди HL1 і HL3 гаснуть. Тепер в EEPROM модуля записані власні коди користувача.

У випадку, якщо користувач забув свій пароль, його просто замінюють на новий з режиму предустановки. Якщо забули код предустановки, то можна побачити його тільки з допомогою програматора, прочитавши EEPROM даних PIC-контролера. Код предустановки каналу 1 розташований там за адресами 19h-1Fh, а каналу 2 - адрес 27h-2Dh.

Слід зауважити, що EEPROM має обмежене число циклів запису даних контролера, тому не рекомендується дуже часто модифікувати коди.

Кнопкою "#" можна примусово скинути набраний код при помилці в наборі.

Таблиця прошивки

Література

  • Сучасні мікроконтролери: архітектура, засоби проектування, приклади застосування, ресурси мережі Інтернет. Телесистеми". Під ред. Шуліки В. В. - М.: Акім,1998.
  • CD-ROM. Сучасні мікроконтролери: документація, засоби розробки, приклади використання. Телесистеми", 1998.
  • Автор: П. Редькін, Ульяновськ р.