Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Microcontroler - Tastatura

Microcontroler - Tastatura

Tastaturile sunt dispozitive mecanice utilizate pentru a executa o intrerupere sau pentru a realiza o conexiune intre doua puncte. Ele au diferite marimi si au diferite scopuri. Tastele care sunt utilizate aici sunt denumite "taste dip". Ele sunt lipite direct pe o placa de circuit si sunt deseori intalnite in electronica. Au patru pini (doi pentru fiecare contact), ceea ce le ofera stabilitate mecanica.

Exemplu pentru conectarea tastelor la pinii microcontrolerului



Functia tastei este simpla. In momentul in care apasam o tasta, doua contacte sunt unite si se realizeaza o conexiune. Totusi, nu toate lucrurile sunt simple. Problema consta in natura tensiunii ca valoare, si in imperfectiunea contactelor mecanice. Inainte ca un contact sa fie realizat sau decuplat, exista o perioada scurta de timp cand pot aparea vibratii (oscilatii) ca rezultat al imperfectiunii contactelor mecanice, sau din cauza vitezei diferite de apasare (acest lucru depinde de persoana care apasa tasta). Termenul atribuit acestui fenomen este denumit switch (contact) debounce. Daca acest lucru nu este prevazut in momentul in care un program este conceput, poate aparea o eroare sau programul poate produce mai mult decat un singur impuls la iesire pentru o singura apasare de tasta. Pentru a evita acest lucru, putem introduce o mica intarziere cand detectam inchiderea unui contact. Aceasta va asigura faptul ca apasarea unei taste este interpretata ca un singur impuls. Intarzierea de debounce este produsa in software si durata intarzierii depinde de buton si de scopul butonului. Problema poate fi partial rezolvata prin adaugarea unui condensator in paralel la tasta, dar un program bine realizat ofera rezultate mai bune. Programul poate fi ajustat pana cand detectia falsa este complet eliminata. In anumite cazuri o simpla intarziere poate fi suficienta dar daca vreti ca programul sa se ocupe de mai multe lucruri in acelasi timp, o simpla intarziere va insemna ca procesorul nu va face nimic pe o lunga perioada de timp si poate rata alte intrari sau poate decupla portul de iesire catre un afisor. Solutia este sa avem un program care sa urmareasca apasarea unei taste cat si decuplarea unei taste. Macroul de mai jos poate fi folosit pentru keypress debounce.

Macroul precedent are mai multe argumente care trebuiesc explicate:

BUTTON macro HiLo, Port, Bit, Delay, Address



HiLo poate fi '0' sau '1' care reprezinta frontul crescator sau cazator unde subrutinele pot fi executate in momentul in care apasati o tasta. Port este un port al microcontrolerului la care trebuie conectata tasta. In cazul microcontrolerului PIC16F84, el poate fi PORT A sau PORT B. Bit este un pin al portului la care tasta este conectata. Delay este un numar de la 0 la 255, folosit pentru a atribui timpul necesar pentru a detecta key debounce - contact oscillation - to stop. El este calculat astfel: TIME = Delay x 1ms. Adress este adresa la care microcontrolerul se duce dupa ce este detectat un eveniment provenit de la tastatura. Subrutina de la aceasta adresa executa instructiunile necesare pentru apasarea unei taste.

Exemplu 1 BUTTON 0, PORTA, 3, .100, Tester1_above

Tasta-1 este conectata la RA0 (prima iesire a portului A) cu o intarziere de 100 milisecunde si cu o reactie la zero logic. Subrutina care proceseaza tasta este localizata la adresa etichetei Tester1_above.

Exemplu 2 BUTTON 1, PORTA, 2, .200, Tester1_below

Tasta-2 este conectata la RA1 (a doua iesire a portului A) cu 200ms intarziere si cu reactie la unu logic.

Exemplul urmator arata modul de folosire intr-un program. BUTTON.ASM aprinde si stinge LEDul. LEDul este conectat la cea de-a saptea iesire a portului B. Tasta-1 este folosita pentru a aprinde LEDul. Tasta-2 stinge LEDul.