ера представлена ??в додатку А.
1.3 Програмування мікроконтролера
В основі схеми мікросхема PIC16C84. Стабілізатор напруги DA1 служить для отримання напруги стабілізованого +5 В, яке живить весь пристрій. На елементах R1, C4 зібрана частотно задающая ланцюжок, для внутрішнього тактового генератора мікросхеми. Вхід RA0 використовується для введення стартового сигналу у мікроконтролер. Для цього на нього, через резистор R2 подана напруга харчування, що утворить на вході сигнал логічної одиниці. Контактна пара «Старт» спрацьовує при різкому прискоренні руху пристрою і замикає вхід RA0 на загальний провід, створюючи на ньому нульовий рівень. Програма постійно опитує стан цього входу. Коли після чергового циклу опитування програма отримає нульовий рівень в молодшому розряді порту RA, вона перейде до циклу виведення зображення. Світлодіоди підключені до п'яти молодшим розрядам порту RB процесора. Автор підключив світлодіоди безпосередньо до виходів мікросхеми для отримання більшої яскравості світіння, хоча така схема включення створює дуже велике навантаження на виходи. Для підвищення надійності і яскравості світлодіодів не завадило б підключити світлодіоди через транзисторні ключі.
Для синхронізації процесу виведення зображення з рухом палички застосовується інерційний контактний датчик руху. Влаштований він таким чином:
Малюнок 2 - Пристрій інерційного контактного датчика руху
У стані спокою контакти розімкнуті. Якщо ж різко махнути паличкою, то вантаж під дією сили інерції замкне контакти. На вході RA0 контролера з'явиться сигнал логічного нуля. За цим сигналом процесор запустить процес виведення зображення.
У цій програмі реалізований самий елементарний алгоритм. В авторському варіанті вона може виводити тільки великі латинські літери. Після включення програма спочатку робить налаштування портів (процедура init). Всі розряди порту b переводяться в режим виводу. А порт b налаштовується таким чином, що його молодший розряд RA.0 включається в режим введення. Для цього в керуючі регістри відповідних портів записуються керуючі коди. Далі програма переходить до процедури опитування датчика запуску getbut. Поки датчик не замкнутий, програма знаходиться в безперервному процесі опитування датчика і з програми опитування не виходить. Як тільки програма виявить нульовий сигнал на RA0, вона переходить до процедури виведення слова letters.
Процедура виведення слова являє собою послідовні звернення до підпрограм виведення букв відображуваного слова. У автора програма виводить слово «HELLO». Тому вона послідовно звертається до підпрограм виведення саме цих букв. Для виведення кожної букви є своя окрема підпрограма. Для виведення літери «A» служить підпрограма, на яку можна перейти за мітці «la». Підпрограма виведення літери «B» має позначку «lb» і так далі. Всі підпрограми виведення букв абсолютно однакові. Розрізняються вони лише виведеними кодами. Кожна підпрограма послідовно виводить на вихідні світлодіоди чотири коду, що відповідають чотирьом стовпцях матриці, що відображає зображення літери. Ця матриця, як ми знаємо, утворюється при русі п'яти світлодіодів в просторі. Отже, кожен знак відображається матрицею 4X5 точок. Після виведення чергового стовпця матриці, підпрограма малювання букви переходить до п...