+ All Categories
Home > Documents > Erasmus+ KA-202 Proiecte de parteneriate strategice pentru ... · Antet Condensator C1, C2 2 22pF...

Erasmus+ KA-202 Proiecte de parteneriate strategice pentru ... · Antet Condensator C1, C2 2 22pF...

Date post: 03-Mar-2020
Category:
Upload: others
View: 21 times
Download: 0 times
Share this document with a friend
18
1 Erasmus+ KA-202 Proiecte de parteneriate strategice pentru educație și formare profesională Titlul proiectului: "Predarea și învățarea microcontrolerelor prin limbajul PicBasicPro (PBP) în VET" Acronimul proiectului: "PBPinVET" Numărul proiectului: "2016-1-TR01-KA202-033963" KIT ȘI MODUL TASTATURĂ Ce este o tastatură O tastatură este un sistem de butoane aranjate într-o matrice care funcționează ca un dispozitiv de comutare pentru a asigura o conexiune între o linie și o coloană. Figure: 3x3 and 3x4 keypads
Transcript

1

Erasmus+ KA-202

Proiecte de parteneriate strategice pentru educație și formare profesională

Titlul proiectului: "Predarea și învățarea microcontrolerelor prin limbajul

PicBasicPro (PBP) în VET"

Acronimul proiectului: "PBPinVET"

Numărul proiectului: "2016-1-TR01-KA202-033963"

KIT ȘI MODUL TASTATURĂ

Ce este o tastatură

O tastatură este un sistem de butoane aranjate într-o matrice care funcționează ca un

dispozitiv de comutare pentru a asigura o conexiune între o linie și o coloană.

Figure: 3x3 and 3x4 keypads

2

Atunci când tastatura este denumită, aceasta este codată ca 3x4 și 4x4. La această

codificare, primul număr este numărul de coloane, al doilea număr este numărul de rânduri.

Figura de mai jos prezintă numele de pini ale tastaturii pentru conexiuni.

Column-2

Row-1

Column-1

Row-4

Column-3

Row-3

Row-2

Row-1

Row-2

Row-3

Column-1

Row-4

Column-1

Column-2

Column-3

Column-4

Figura: Pinuri de conectare pentru tastaturi 3x3 și 3x4

Principii de interfațare a tastaturii

Interfața cu câteva butoane este simplă, dar când sunt necesare mai multe, o tastatură

este aproape esențială.

Figura de mai jos arată dispunerea tastaturii cu 12 butoane și 16 taste.

După cum se vede, ele sunt aranjate ca o matrice, acest lucru minimizează cantitatea

de linii I/O necesare, în caz contrar ar trebui să se utilizeze 12 sau 16 intrări pentru interfața

cu aceleași cantități de taste. Prin aranjarea cheilor în Rânduri și Coloane, avem nevoie doar

de 7 sau 8 intrări pentru a o utiliza, dar prețul de plată este că trebuie folosit o rutină de

scanare a tastaturii.

3

Figura: Structura tastaturii cu 12 butoane și 16 taste

Rutina de scanare a tastaturii caută sistematic o apăsare de tastă. Începe prin a stabili

conexiunile la pinii coloanei ca intrări și conexiunile la pinii de rând ca ieșiri. Intrările sunt

susținute de rezistențele interne de tracțiune. Obiectul căutării este să aflăm dacă una dintre

rândurile tastaturii este conectată la una dintre coloane și, dacă da, care dintre ele. Rutina de

scanare trage una dintre liniile de rând scăzute, apoi se uită la intrarea coloanelor pentru a

vedea dacă este detectat un 0. Dacă nu, atunci încearcă următorul rând; acest lucru este

continuat până când toate rândurile de rânduri au fost scanate.

Există la fel de multe rutine de scanare a tastaturii ca și în cazul programatorilor.

Fiecare programator are modul său de a face lucrurile. Cu toate acestea, oricare ar fi modul de

a face treaba în mod eficient este OK.

Utilizarea unei tastaturi

O tehnică de scanare este folosită de obicei pentru a detecta tastatura care este apăsată

pe tastatură. Rândurile sunt conectate la pinii RB4, RB5, RB6 și RB7, în timp ce coloanele

sunt conectate la pinii RB0, RB1 și RB2 ai portului B al PIC16F84 cu rezistențe de tracțiune

de 10KΩ. Întregii rânduri și coloanele sunt la nivelul 0 logic. Procesul de scanare este

efectuat pentru a detecta butonul apăsat în timpul fazei de scriere a programului. Pentru a

detecta tasta presată, în primul rând rândul 1 este făcut logic 1. Dacă 1, 2 sau 3 este apăsat pe

oricare dintre taste, nivelul coloanei se face logică 1. De exemplu, dacă este apăsată tasta 1 ,

rândul 1 și coloana 1 vor fi întrerupte. Dacă este apăsat numărul 2, această coloană 2 este

făcută logică 1, dacă tasta 3 este apăsată, coloana 3 devine logică 1. Se determină că una din

tastele de pe rândul 1 nu a fost apăsată. Același proces va fi efectuat și pentru alte rânduri.

4

Figura: O conexiune pentru tastatura 3x4 la microcontroler

O tastatură 4x4 constă din 16 taste cu comutatoare mecanice interne la fiecare poziție

a tastei. Figura de mai jos prezintă o tastatură tipică 4x4 conectată la PORT D a unui

microcontroler PIC. Tastatura funcționează pe principiul "scanării și detectării", unde RD0,

RD1, RD2 și RD3 sunt configurate ca intrări și conectate la coloanele tastaturii prin

intermediul rezistențelor de tragere. RD4, RD5, RD6 și RD7 sunt configurate ca ieșiri și conectate la rândurile tastaturii.

Figura: O tastatură 4x4, conectată la un microcontroler

5

Programul trimite logic 1 la fiecare rând al tastaturii în schimb și verifică coloanele

citirea stării logice la coloană. Apăsarea oricărei taste va face ca logica 1 să fie aplicată pinilor

de intrare ai microcontrolerului. Software-ul detectează ce tastă este apăsată prin scanarea

intrărilor. De exemplu, presupunem că în timp ce trimitem logica 1 la rândul 2 unde numerele

4, 5, 6, B sunt detectate, intrarea RD2 este logică 1. În acest caz, tasta presată trebuie să fie

numărul 5 și așa mai departe.

Schema de circuit a kitului tastatură:

Figura: Circuitul electronic al kitului modulului tastaturii

6

Lista componentelor utilizate pentru implementarea practică a kitului

tastatură:

Comment Description Designator Quantity Value Antet Condensator C1, C2 2 22pF

ICSP

programming Antet, 5-Pin P1 1 NSL25G-5p

Display Antet, 10-Pin P2 1 NSL25G-10p

Tastatura Antet, 10-Pin P3 1 NSL25G-10p

Antet 2 Antet, 2-Pin P4 1

DG128-5.0-

02P-14-

00A(H)

RPot Potentiometru R1 1 5K

Res1 Rezistenta R2 1 10K

Res1 Rezistenta R3 1 10K

PIC16F84-

04/SO

Flash/EEPROM 8-Bit Microcontroller,

1K (x14-Bit words) Flash Program

Memory, 68 Bytes Data RAM, 4 MHz,

18-Pin SOIC, Standard VDD Range,

Commercial Temperature U1 1 PIC16F84-04

LM7805CT Series 3-Terminal Positive Regulator U2 1 LM7805

4MHz Oscilator de cristal Y1 1 4MHz

Cables 1

Keyboard 3x4 keypad 1

Display 2x8

characters 44780 LCD Display 1

LED Led rosu 4

Rezistenta 6 300, 10K

7

COMANDA SPECIALĂ pentru acest KIT

GOSUB

Sintaxă: Etichetă GOSUB

Salt la subrutina de la Etichetă salvând adresa de întoarcere din stivă. Spre

deosebire de GOTO, când se ajunge la o instrucțiune RETURN, execuția se reia

cu instrucțiunea urmând ultima instrucțiune GOSUB executată. Un număr

nelimitat de subrutine pot fi utilizate într-un program. Subrutinele pot fi, de

asemenea, imbricate. Cu alte cuvinte, este posibil ca o subrutină să apeleze o altă

subrutină. O astfel de cuibare a subrutinei ar trebui să fie limitată la maximum

patru niveluri adânci.

Exemplu

GOSUB beep ' Executați subrutina numită beep

...

beep: HIGH 0 ' Porniți LED-ul conectat la Pin0

SOUND 1,[80,10] ' Difuzor bip conectat la Pin1

LOW 0 ' Opriți LED-ul conectat la Pin0

RETURN ' Du-te înapoi la rutina principală care ne-a sunat

ÎNTOARCERE

Sintaxa: ÎNTOARCERE

Întoarcere din subrutină. RETURN reia executarea la declarația care urmează după

GOSUB care a numit subrutina.

Exemplu:

GOSUB sub1 ' Mergeți la subrutina etichetă sub1

...

sub1:

SEROUT 0,N2400,["Lunch"] ' Trimiteți "Pranz" din seria Pin0

RETURN ' Reveniți la programul principal după Gosub

8

EXEMPLE DE PROGRAM PENTRU MODULUL ȘI KITUL TASTATURĂ

CIRCUIT-1: Utilizați schema principală de circuit de mai sus.

Titlul circuitului: Programul care se afișează pe ecranul LCD atunci când una

dintre tastele 1, 2 sau 3 din prima linie a tastaturii este apăsată

Descrierea circuitului:

Pentru a ușura înțelegerea logicii lucrării cu tastatură, în program sunt utilizate

primul rând și trei coloane ale tastaturii. Ce tastă este apăsată pe acest prim rând

al tastaturii, numărul de cheie este afișat pe ecranul LCD.

Programul PicBasicPro:

'****************************************************************

Nume: PROGRAMUL CARE SE APLICĂ PE SCREENUL LCD CÂND

Una din cheile 1, 2, 3 pe prima linie a lui

Tastatura este presată

' Autor: PBPinVET

'****************************************************************

' Set LCD Data port

DEFINE LCD_DREG PORTA

' Set starting Data bit (0 or 4) if 4-bit bus

DEFINE LCD_DBIT 0

' Set LCD Register Select port

DEFINE LCD_RSREG PORTB

' Set LCD Register Select bit

DEFINE LCD_RSBIT 7

' Set LCD Enable port

DEFINE LCD_EREG PORTA

' Set LCD Enable bit

DEFINE LCD_EBIT 4

' Set LCD bus size (4 or 8 bits)

DEFINE LCD_BITS 4

' Set number of lines on LCD

DEFINE LCD_LINES 2

OPTION_REG.7=0 ' Extracția externă a PortB este activată

TRISA=%00000000 ' Setați pini PORTA ca ieșiri

TRISB=%01110000 ' Setați pinii B4-B6 ai intrărilor PORTB, alții sunt ieșiri

9

KEY VAR BYTE ' Declarați KEY ca octet

SYMBOL ROW1=PORTB.0 ' Definiți portb.0 ca Row1

SYMBOL COLON1=PORTB.4 ' Definiți portb.4 ca Colon1

SYMBOL COLON2=PORTB.5 ' Definiți portb.5 ca Colon2

SYMBOL COLON3=PORTB.6 ' Definiți portb.5 ca Colon3

PORTA=0 ' Clear PORTA

PORTB=0 'Clear PORTB

KEY_SCAN:

LOW ROW1

IF COLON1=0 THEN ' Dacă este apăsată tasta 1

KEY=1

GOSUB LCD ' dute la LCD sub- program

ENDIF

IF COLON2=0 THEN ' Dacă este apăsată tasta 2

KEY=2

GOSUB LCD ' dute la LCD sub- program

ENDIF

IF COLON3=0 THEN ' Dacă este apăsată tasta 3

KEY=3

GOSUB LCD ' dute la LCD sub- program

ENDIF

GOTO KEY_SCAN

LCD:

LCDOUT $FE,1," KEY=",#KEY ' Afișați numărul tastei apăsate

PAUSE 50 ' Asteptati 50ms

RETURN

END ' Sfarsitul programului

10

CIRCUIT-2: Utilizați schema principală de circuit de mai sus.

Titlul circuitului: Programul care utilizează 3 coloane și 4 rânduri ale tastaturii pentru afișarea

numerelor 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, # (11) și * (12) LCD atunci când este apăsată o tastă.

Programul PicBasicPro:

'****************************************************************

Nume: PROGRAM CARE DISPLAY NUMĂRUL CHEIE PE SCREENUL LCD CÂND

ESTE PRESUPAT O UTILIZARE A TEXTURILOR PE TASTATURĂ

' Autor: PBPinVET

'****************************************************************

' Set LCD Data port

DEFINE LCD_DREG PORTA

' Set starting Data bit (0 or 4) if 4-bit bus

DEFINE LCD_DBIT 0

' Set LCD Register Select port

DEFINE LCD_RSREG PORTB

' Set LCD Register Select bit

DEFINE LCD_RSBIT 7

' Set LCD Enable port

DEFINE LCD_EREG PORTA

' Set LCD Enable bit

DEFINE LCD_EBIT 4

' Set LCD bus size (4 or 8 bits)

DEFINE LCD_BITS 4

' Set number of lines on LCD

DEFINE LCD_LINES 2

OPTION_REG.7=0 ' Extracția externă a PortB este activată

TRISA=%00000000 ' Setați pini PORTA ca ieșiri

TRISB=%01110000 ' Setați pinii B4-B6 ai intrărilor PORTB, alții sunt ieșiri

KEY VAR BYTE ' Declarați KEY ca octet

SYMBOL ROW1=PORTB.0

SYMBOL ROW2=PORTB.1

SYMBOL ROW3=PORTB.2

SYMBOL ROW4=PORTB.3

SYMBOL COLON1=PORTB.4

SYMBOL COLON2=PORTB.5

SYMBOL COLON3=PORTB.6

11

PORTA=0

PORTB=0

KEY_SCAN:

LOW ROW1

IF COLON1=0 THEN:KEY=1 : GOSUB LCD

IF COLON2=0 THEN:KEY=2 : GOSUB LCD

IF COLON3=0 THEN:KEY=3 : GOSUB LCD

HIGH ROW1

LOW ROW2

IF COLON1=0 THEN:KEY=4 : GOSUB LCD

IF COLON2=0 THEN:KEY=5 : GOSUB LCD

IF COLON3=0 THEN:KEY=6 : GOSUB LCD

HIGH ROW2

LOW ROW3

IF COLON1=0 THEN:KEY=7 : GOSUB LCD

IF COLON2=0 THEN:KEY=8 : GOSUB LCD

IF COLON3=0 THEN:KEY=9 : GOSUB LCD

HIGH ROW3

LOW ROW4

IF COLON1=0 THEN:KEY=10 : GOSUB LCD

IF COLON2=0 THEN:KEY=0 : GOSUB LCD

IF COLON3=0 THEN:KEY=12 : GOSUB LCD

HIGH ROW4

GOTO KEY_SCAN

LCD:

LCDOUT $FE,1," KEY=",#KEY ' Afișați numărul tastei apăsate

PAUSE 50 ' Asteptati 50ms

RETURN

END ' Sfârșitul programului

12

CIRCUIT-3: Utilizați schema principală de circuit de mai sus.

Titlul circuitului: Programul afișează numărul de două cifre de pe ecranul LCD când este

introdus de pe tastatură.

Programul PicBasicPro:

'****************************************************************

Nume: Programul afișează numărul de două cifre, introdus de la tastatură, pe ecranul LCD.

'Autor: PBPinVET

'****************************************************************

' Set LCD Data port

DEFINE LCD_DREG PORTA

' Set starting Data bit (0 or 4) if 4-bit bus

DEFINE LCD_DBIT 0

' Set LCD Register Select port

DEFINE LCD_RSREG PORTB

' Set LCD Register Select bit

DEFINE LCD_RSBIT 7

' Set LCD Enable port

DEFINE LCD_EREG PORTA

' Set LCD Enable bit

DEFINE LCD_EBIT 4

' Set LCD bus size (4 or 8 bits)

DEFINE LCD_BITS 4

' Set number of lines on LCD

DEFINE LCD_LINES 2

OPTION_REG.7=0 ' Extracția externă a PortB este activată

TRISA=%00000000 ' Setați pini PORTA ca ieșiri

TRISB=%01110000 ' Setați pinii B4-B6 ai intrărilor PORTB, alții sunt ieșiri

KEY VAR BYTE ' Declarați KEY ca octet

ONES VAR BYTE ' Declarați ONES ca un octet

TENS VAR BYTE ' Declarați TENS ca un octet

SYMBOL ROW1=PORTB.0

SYMBOL ROW2=PORTB.1

SYMBOL ROW3=PORTB.2

SYMBOL ROW4=PORTB.3

SYMBOL COLON1=PORTB.4

SYMBOL COLON2=PORTB.5

SYMBOL COLON3=PORTB.6

PORTA=0 : PORTB=0 : key=0 : ONES=0 : TENS=0

KEY_SCAN:

13

LOW ROW1

IF COLON1=0 THEN:KEY=1 : gosub lcd

IF COLON2=0 THEN:KEY=2 : gosub lcd

IF COLON3=0 THEN:KEY=3 : gosub lcd

HIGH ROW1

LOW ROW2

IF COLON1=0 THEN:KEY=4 : gosub lcd

IF COLON2=0 THEN:KEY=5 : gosub lcd

IF COLON3=0 THEN:KEY=6 : gosub lcd

HIGH ROW2

LOW ROW3

IF COLON1=0 THEN:KEY=7 : gosub lcd

IF COLON2=0 THEN:KEY=8 : gosub lcd

IF COLON3=0 THEN:KEY=9 : gosub lcd

HIGH ROW3

LOW ROW4

IF COLON1=0 THEN:KEY=10 : gosub lcd

IF COLON2=0 THEN:KEY=0 : gosub lcd

IF COLON3=0 THEN:KEY=12 : gosub lcd

HIGH ROW4

GOTO KEY_SCAN

LCD:

TENS=ONES

ONES=KEY

LCDOUT $FE,1," NUMBER= ",DEC TENS,DEC ONES 'Afișați un număr din două cifre

PAUSE 200

RETURN

END

14

CIRCUIT-4: Schimbați circuitul principal ca în diagrama de mai jos. Scoateți ecranul LCD

și conectați 4 LED-uri în circuit printr-o placă de proiect.

Titlul circuitului: Programul care arată valoarea presetată a tastelor pe LED-uri, conectate la

portul A.

Programul PicBasic Pro:

'****************************************************************

Nume: Programul afișează valoarea cheii presate pe LED-urile conectate la PortA. De

exemplu, dacă este apăsat numărul 9, 1010 este afișat pe LED-uri ca număr binar.

'Autor: PBPinVET

'****************************************************************

OPTION_REG.7=0 ' Extracția externă a PortB este activată

TRISA=%00000000 ' Setați pini PORTA ca ieșiri

TRISB=%01110000 ' Setați pinii B4-B6 ai intrărilor PORTB, alții sunt ieșiri

KEY VAR BYTE ' Declarați KEY ca octet

SYMBOL ROW1=PORTB.0

SYMBOL ROW2=PORTB.1

SYMBOL ROW3=PORTB.2

SYMBOL ROW4=PORTB.3

SYMBOL COLON1=PORTB.4

SYMBOL COLON2=PORTB.5

SYMBOL COLON3=PORTB.6

15

PORTA=0: PORTB=0: KEY=0 ' Clear PortA, PortB, Key

KEY_SCAN: ' Start scanning the keypad

LOW ROW1

IF COLON1=0 THEN:KEY=1 : gosub LED

IF COLON2=0 THEN:KEY=2 : gosub LED lcd

IF COLON3=0 THEN:KEY=3 : gosub LED lcd

HIGH ROW1

LOW ROW2

IF COLON1=0 THEN:KEY=4 : gosub LED

IF COLON2=0 THEN:KEY=5 : gosub LED

IF COLON3=0 THEN:KEY=6 : gosub LED

HIGH ROW2

LOW ROW3

IF COLON1=0 THEN:KEY=7 : gosub LED

IF COLON2=0 THEN:KEY=8 : gosub LED

IF COLON3=0 THEN:KEY=9 : gosub LED

HIGH ROW3

LOW ROW4

IF COLON1=0 THEN:KEY=10 : gosub LED

IF COLON2=0 THEN:KEY=0 : gosub LED

IF COLON3=0 THEN:KEY=12 : gosub LED

HIGH ROW4

GOTO KEY_SCAN

LED:

PORTA=KEY ' Afișați valoarea variabilei cheie pe PortA

PAUSE 500

RETURN

END

16

Imagine: vizualizarea LED-urilor

CIRCUIT-5: Utilizați schema de circuit revizuită de mai sus.

Titlul circuitului: Programul afișează valoarea tastei apăsate pe LED-urile conectate la PortA.

Programul care contorizează binar înainte prin LED-uri conectate la portA, de la valoarea

numerică introdusă de la tastatură.

NOTĂ: Acest program este aproape același cu cel precedent. Deci, doar o parte a programului

de subrutine cu LED-uri este scrisă aici.

Programul PicBasicPro:

'****************************************************************

Nume: Programul afișează valoarea cheii presate pe LED-urile conectate la PortA. De

exemplu, dacă este apăsat numărul 9, 1010 este afișat pe LED-uri ca număr binar.

'Autor: PBPinVET

'****************************************************************

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

LED:

PORTA=KEY

PAUSE 500

KEY=KEY+1

GOTO LED

END

17

CIRCUIT-6: Utilizați schema de circuit revizuită de mai sus.

Titlul circuitului: Aplicație de blocare combinată

Descrierea circuitului: programul este aliniat LED-ului timp de 5 secunde, conectat la

PortA.0, când sunt introduse cifrele de 1357 de pe tastatură.

Programul PicBasicPro:

'****************************************************************

'Nume: Aplicație de blocare combinată (parola: 1357)

'Autor: PBPinVE T

'****************************************************************

OPTION_REG.7=0 External pull-Ups of PortB is ON

TRISA=%00000000 ' Setați pini PORTA ca ieșiri TRISB=%01110000 ' Setați pinii B4-B6 ai intrărilor PORTB, alții sunt ieșiri

' ***** Declarați tipurile de variabile

KEY VAR BYTE

ONES VAR BYTE

TENS VAR BYTE

HUNDREDS VAR BYTE

THOUSANDS VAR BYTE

NUMBER VAR WORD

PASSWORD VAR WORD

' ***** Declarați pinii pentru tastatură

SYMBOL ROW1=PORTB.0

SYMBOL ROW2=PORTB.1

SYMBOL ROW3=PORTB.2

SYMBOL ROW4=PORTB.3

SYMBOL COLON1=PORTB.4

SYMBOL COLON2=PORTB.5

SYMBOL COLON3=PORTB.6

PORTA=0 : PORTB=0 : KEY=0

ONES=0 : TENS=0 : HUNDREDS=0 : THOUSANDS=0

PASSWORD=1357

KEY_SCAN: ' Scan the keypad

LOW ROW1

IF COLON1=0 THEN:KEY=1 : gosub LED

IF COLON2=0 THEN:KEY=2 : gosub LED

IF COLON3=0 THEN:KEY=3 : gosub LED

HIGH ROW1

LOW ROW2

18

IF COLON1=0 THEN:KEY=4 : gosub LED

IF COLON2=0 THEN:KEY=5 : gosub LED

IF COLON3=0 THEN:KEY=6 : gosub LED

HIGH ROW2

LOW ROW3

IF COLON1=0 THEN:KEY=7 : gosub LED

IF COLON2=0 THEN:KEY=8 : gosub LED

IF COLON3=0 THEN:KEY=9 : gosub LED

HIGH ROW3

LOW ROW4

IF COLON1=0 THEN:KEY=10 : gosub LED

IF COLON2=0 THEN:KEY=0 : gosub LED

IF COLON3=0 THEN:KEY=12 : gosub LED

HIGH ROW4

GOTO KEY_SCAN

LED:

THOUSANDS=HUNDREDS : HUNDREDS =TENS

TENS=ONES : ONES=KEY

NUMBER=1000* THOUSANDS+100* HUNDREDS+10*TENS+ONES

IF PASSWORD=NUMBER THEN

HIGH PORTA.0

PAUSE 5000

LOW PORTA.0

ENDIF

PAUSE 500

RETURN

END


Recommended