RFID (Radio Frequency Identification and Detection) is widely used everywhere from highly secured defense laboratories to school attendance system. By employing RFID, much secured entry systems can be developed without incurring huge costs. These are the reasons of excessive use of RFID technology. In this article, interfacing of an RFID reader module has been explained with PIC18F4550. The USART interrupt, an internal PIC interrupt, has also been explained. (For more details on USART, refer PIC EUSART)
Pin No.
|
Name
|
Description
|
1
|
Vcc
|
Supply Voltage; 5V
|
2
|
GND
|
Ground (0V)
|
3
|
BEEP
|
Beep or LED drive
|
4
|
ANT
|
No Use
|
5
|
ANT
|
No Use
|
6
|
SEL
|
High is RS232, Low is Weigand
|
7
|
RS232
|
TTL output data
|
8
|
D1
|
Weigand Data 1
|
9
|
D0
|
Weigand Data 0
|
Bit 7
|
Bit 6
|
Bit 5
|
Bit 4
|
Bit 3
|
Bit 2
|
Bit 1
|
Bit 0
|
GIE/GIEH
|
PEIE/GIEL
|
TMR0IE
|
INT0IE
|
RBIE
|
TMR0IF
|
INT0IF
|
RBIF
|
Fig. 4: Bit configuration of Interrupt Control Register in PIC18F4550
Bit 7
|
Bit 6
|
Bit 5
|
Bit 4
|
Bit 3
|
Bit 2
|
Bit 1
|
Bit 0
|
SPPIF
|
ADIF
|
RCIF
|
TXIF
|
SSPIF
|
CCP1IF
|
TMR2IF
|
TMR1IF
|
Fig. 5: Bit configuration of PIR1/ Peripheral Interrupt Request 1 in PIC18F4550
Bit 7
|
Bit 6
|
Bit 5
|
Bit 4
|
Bit 3
|
Bit 2
|
Bit 1
|
Bit 0
|
SPPIE
|
ADIE
|
RCIE
|
TXIE
|
SSPIE
|
CCP1IE
|
TMR2IE
|
TMR1IE
|
Fig. 6: Bit configuration of PIE1/Peripheral Interrupt Enable 1 PIC18F4550
Project Source Code
###
// Program to interface RFID module using EUSART in PIC18F4550 // Configuration bits /* _CPUDIV_OSC1_PLL2_1L, // Divide clock by 2 _FOSC_HS_1H, // Select High Speed (HS) oscillator _WDT_OFF_2H, // Watchdog Timer off MCLRE_ON_3H // Master Clear on */ #define FREQ 12000000 #define baud 9600 #define spbrg_value (((FREQ/64)/baud)-1) #define rs LATA.F0 #define rw LATA.F1 #define en LATA.F2 #define lcdport LATB unsigned char rx_data(); void lcd_ini(); void lcdcmd(unsigned char); void lcddata(unsigned char); unsigned char data[]="Unique ID No."; unsigned char card_id[12]; unsigned int i=0,pos; void main() { TRISB=0; // Set Port B as output port LATB=0; TRISA=0; LATA=0; SPBRG=spbrg_value; // Fill SPBRG register to set the baud rate RCSTA.SPEN=1; // To activate serial port (Tx and Rx pins) RCSTA.CREN=1; // To enable continuous reception PIE1.RCIE=1; // To enable the Reception (Rx) Interrupt INTCON.GIE=1; INTCON.PEIE=1; lcd_ini(); // LCD initialization while(data[i]!='