Sunteți pe pagina 1din 4

Lec\ia 3.

Utilizarea tastaturii

3.1. Obictivul lec\iei


Realizarea unui program simplu de utilizare a tastaturii pl[cii de dezvoltare KT458-V0.

3.2. Resurse necesare


Pentru realizarea proiectului sunt necesare urm[toarele resurse software:
• mediul integrat pentru dezvoltarea aplica\iilor MPLAB IDE;
• compilatorul C pentru familia de microcontrollere PIC18F MCC18;
• interfa\a grafic[ pentru programarea serial[ a memoriei FLASH PICUL (PIC USART
Loader V 2.0.0).
Resurse hardware:
• placa de dezvoltare KT458-V0 (cu nucleul K4520 V1.0).

3.3. Preg[tirea hardware-ului


Se procedeaz[ conform lec\iei 1.

3.4. Realizarea programului


3.4.1. Func\ia programului =i detalii hardware
Programul func\ioneaz[ astfel:
• la ap[sarea tastei “UP” (vezi figura 3.1), se aprind LED-urile de iluminare (backlight) ale
afi=ajului LCD;
• la ap[sarea tastei “DOWN”, LED-urile se sting;
• la ap[sarea tastei “RIGHT” se revine ]n BootLoader.

Figura 3.1. A=ezarea tastelor.


}n figura 3.1 este prezentat[ dispunerea tastelor pe placa de dezvoltare KT458-V0.

L3.1
Lec\ia 3. Utilizarea tastaturii
Schema electric[ a tastaturii este prezentat[ ]n figura 3.2 (vezi schema complet[ ]n
“C:\MPLAB\DB\KT4520\Docs\ KT458V0.pdf”).
Din schem[ se observ[ c[ dac[, de exemplu, tasta SW1 nu este ap[sat[, semnalul S1 este “1” logic iar
dac[ tasta este ap[sat[, S1=0 (logic[ “negativ[“).

Figura 3.2. Schema elelctric[ a tastaturii.


Semnalele S1 (LEFT), S2 (RIGHT), S3 (UP) =i S4 (DOWN) sunt conectate la pinii RC0, RC1, RC3
respectiv RA4 ai microcontroller-ului (vezi figura 3.3).

Figura 3.3. Semnalele S1, S2, S3 =i S4.


Programul va configura ace=ti pini ca intr[ri digitale.
3.4.2. Generarea proiectului
Se creaz[ un nou proiect cu numele “Lectia3” ]n directorul “C:\MPLAB\Work\Tutorial\L3” (vezi
Lec\ia 1).
Fi=ierul “main.c” are urm[torul con\inut:
/***********************************************
main.c
Tutorial Lectia 3
Utilizarea tastaturii

Hardware: KT458-V0 (PIC18F4520)


Nucleu: K5420 V1.0
Adresa de start Firmware: 0x400

Resurse utilizate:
RA4 - intrare tasta DOWN
RC0 - intrare tasta LEFT
RC1 - intrare tasta RIGHT
RC2 - intrare tasta UP
RC5 - iesire LCD backlight
***********************************************/

L3.2
Lec\ia 3. Utilizarea tastaturii
/***********************************************
Fisiere incluse
***********************************************/
#include <p18cxxx.h>

/***********************************************
Definitii
***********************************************/
#define BKL LATCbits.LATC5 // Comanda backlight
#define DOWN PORTAbits.RA4 // Tasta DOWN
#define LEFT PORTCbits.RC0 // Tasta LEFT
#define RIGHT PORTCbits.RC1 // Tasta RIGHT
#define UP PORTCbits.RC2 // Tasta UP

// Macro-uri pentru comanda backlight


#define BKL_Off() BKL = 1
#define BKL_On() BKL = 0

/***********************************************
Prototipuri
***********************************************/
void high_isr(void);
void low_isr(void);

/***********************************************
Redirectari intreruperi
***********************************************/
#pragma code high_vector = 0x408
void interrupt_at_high_vector(void)
{
_asm
goto high_isr
_endasm
}//end interrupt_at_high_vector

#pragma code low_vector = 0x418


void interrupt_at_low_vector(void)
{
_asm
goto low_isr
_endasm
}//end interrupt_at_low_vector

/***********************************************
Rutine de tratare a intreruperilor (ISR)
***********************************************/
#pragma code
#pragma interrupt high_isr
void high_isr(void)
{
}//end high_isr

#pragma interruptlow low_isr


void low_isr(void)
{
}//end low_isr

L3.3
Lec\ia 3. Utilizarea tastaturii
/***********************************************
Functia main
***********************************************/
#pragma code
void main(void)
{
// Initializare pin interfata
LATAbits.LATA4 = 1; // Initializare PORT LATCH
TRISAbits.TRISA4 = 1; // RA4 intrare

LATC = 0b11011111; // Initializare PORT LATCH


TRISC = 0b11011111; // RC5 - iesire, restul intrari

while(1)
{
if(!UP) // Test tasta UP apasata
BKL_On(); // Aprinde backlight

if(!DOWN) // Test tasta DOWN apasata


BKL_Off(); // Stinge backlight

if(!RIGHT) // Test tasta RIGHT apasata


Reset(); // Reset
}//end while
}//end main

/***********************************************
End Of File main.c
***********************************************/

Se compileaz[ proiectul =i se verific[ apari\ia ]n directorul “C:\MPLAB\Work\Tutorial\L3\_output” a


fi=ierului “Lectia3.hex”.
3.4.3. Preg[tirea fi=ierul Intel Hex pentru programare ]n FLASH
Vezi lec\ia 2 (se export[ fi=ierul “L3.hex”).

3.5. Programarea memoriei FLASH


Vezi lec\ia 2.

3.6. Execu\ia programului


}n fereastra PICUL se apas[ butonul “Open”.
}n Hyper Terminal, se introduce de la tastatur[ comanda:
g[ENTER]
Not[: }n documenta\ia pl[cii KT458-V0, semnalele S3 =i S4 sunt inversate. }n consecin\[, la ap[sarea
tastei “DOWN” ecranul LCD-ului se aprinde iar la ap[sarea tastei “UP” se stinge.
Pentru revenirea ]n BootLoader, se apas[ tasta “RIGHT”.

L3.4

S-ar putea să vă placă și