Professional Documents
Culture Documents
Search
Home Insight EG Labs o Microcontroller 8051 AVR PIC Arduino Raspberry Pi o Electronic Circuits o Components o Tutorials Articles Invention Stories Forum Knowledge Base o Projects o Blogs o How to o Guest Column DMohanKumar o C-Programs Advertise Submit Contact Us
Simple toll plaza system using low frequency RFID interfaced with 8051 microcontroller (AT89C51)
MC061 Summary Description Circuit Diagram Video Code Components
//Program for a simple toll plaza system using low frequency RFID interfaced with 8051 microcontroller (AT89C51) #include<reg51.h> #define port P1
#define key P0 void memory(); sfr lcd_data_pin=0xA0; sbit rs = P1^3; sbit rw = P1^4; sbit en = P1^5;
sbit col1=key^4; sbit col2=key^5; sbit col3=key^6; sbit row1=key^0; sbit row2=key^1; sbit row3=key^2; sbit row4=key^3; unsigned int number=0,pointer=1; unsigned char card_mem[4][12]; unsigned char card_id[12],index=0,key1=0,lcd,print=0,new_user=0,recharge=0,user_inde x,t,tool=0; unsigned int amount[4]; unsigned char current_byte = 0,money[6]; unsigned char pos=0,set=0; void delay(unsigned char count) { unsigned int j; unsigned char i; for(i=0;i<count;i++) for(j=0;j<1275;j++); } //Function to provide time delay
void lcd_command(unsigned char comm) { lcd_data_pin=comm; en=1; rs=0; rw=0; delay(1); en=0; } void lcd_data(unsigned char disp) { lcd_data_pin=disp; en=1;
rs=1; rw=0; delay(1); en=0; } lcd_string(unsigned char *disp) { char x; for(x=0;disp[x]!=0;x++) { lcd_data(disp[x]); } } void lcd_ini() the LCD { lcd_command(0x38); delay(5); lcd_command(0x0F); delay(5); } lcd_display(unsigned int val) { unsigned char flg=0; lcd_command(0xCC); if(val==0) lcd_data('0'); while(val>0) { lcd=val%10; val=val/10; lcd_command(0xCC-flg); lcd_data(lcd+'0'); flg++; } } //LCD string function
//Function to initialize
void recieve() interrupt 4 //Function to recieve data serialy from RS232 { card_id[current_byte]=SBUF;
RI=0; recieving the byte current_byte++; } void display(unsigned char value) { lcd_command(0x80+pos); if(value==10) { print=1; } if(value==12) { set=1; } if(value<=9) { lcd_data('0'+value); money[pos]=value; pos++; } } check_col1() { row1=row2=row3=row4=1; row1=0; if(col1==0) display(1); row1=1; row2=0; if(col1==0) display(4); row2=1; row3=0; if(col1==0) display(7); row3=1; row4=0; if(col1==0) display(10); row4=1; } check_col2()
{ row1=row2=row3=row4=1; row1=0; if(col2==0) display(2); row1=1; row2=0; if(col2==0) display(5); row2=1; row3=0; if(col2==0) display(8); row3=1; row4=0; if(col2==0) display(0); row4=1; } check_col3() { row1=row2=row3=row4=1; row1=0; if(col3==0) display(3); row1=1; row2=0; if(col3==0) display(6); row2=1; row3=0; if(col3==0) display(9); row3=1; row4=0; if(col3==0) display(12); row4=1; } keypad() { row1=row2=row3=row4=0; if(col1==0) check_col1();
if(col2==0) check_col2(); if(col3==0) check_col3(); } void show() { unsigned char count,i,key,val,flag=0,in; unsigned int balance,j; TMOD=0x00; Timer 1 TH1=0x00; SCON=0x00; TR1=0; IE=0x00; lcd_command(0x01); val=index; for(i=0;i<index;i++) { key=0; for(count=0;count<12;count++) { if(card_id[count]==card_mem[i][count]) { key++; } } if(key==12) { flag=1; if(amount[i]<=10) { user_index=i; lcd_string("Insuff. balance"); lcd_command(0xC0); lcd_string("Pls recharge"); delay(250); lcd_command(0x01); lcd_string("To recharge"); lcd_command(0xC0); lcd_string("press *"); for(in=0;in<250;in++) { for(j=0;j<1275;j++) {
//Enable
row1=row2=row3=row4=0; if(col1==0) { tool=1; recharge=1; t=1; keypad(); break; } } if(t==1) break; } lcd_command(0x01); lcd_string("Pls scan your ID"); break; } if(tool==0) { lcd_string("Thank you User "); lcd_command(0x8F); lcd_data(49+i); delay(250); lcd_command(0x01); lcd_string("Charges 10.00"); amount[i]=amount[i]-10; lcd_command(0xC0); lcd_string("Amt left "); balance=amount[i]; lcd_display(balance); lcd_command(0xCD); lcd_string(".00"); delay(250); lcd_command(0x01); if(amount[i]<=30) { user_index=i; lcd_string("Pls recharge"); lcd_command(0xC0); lcd_string("your account"); delay(250); lcd_command(0x01); lcd_string("To recharge"); lcd_command(0xC0); lcd_string("press *"); for(in=0;in<250;in++)
{ for(j=0;j<1275;j++) { row1=row2=row3=row4=0; if(col1==0) { recharge=1; t=1; keypad(); break; } } if(t==1) break; } } } t=0; lcd_command(0x01); lcd_string("Pls scan your ID"); break; } } if(flag==0) { lcd_string("Wrong ID"); delay(100); } if(flag==0) { lcd_command(0x01); lcd_string("New user press *"); new_user=1; } current_byte=0; tool=0; TMOD=0x20; Timer 1 TH1=0xFD; SCON=0x50; TR1=1; IE=0x94; } recharge_acc() {
//Enable
unsigned char pin; lcd_command(0x01); lcd_string("Pls enter the"); lcd_command(0xC0); lcd_string("Balance"); delay(250); lcd_command(0x01); while(set!=1) { keypad(); delay(40); } set=0; lcd_command(0x01); lcd_string("Your balance is"); for(pin=0;pin<=pos;pin++) { number=number+money[pos-pin-1]*pointer; pointer=pointer*10; } amount[user_index]=amount[user_index]+number; lcd_command(0xC0); lcd_display(amount[user_index]); lcd_command(0xCD); lcd_string(".00"); delay(250); lcd_command(0x01); number=0; pointer=1; pos=0; lcd_string("Pls scan your ID"); } void memory() { unsigned char i,key=0,count,pin,try=0; lcd_command(0x01); lcd_string("New user scan ID"); current_byte=0; while(current_byte!=12); for(i=0;i<4;i++) { key=0; for(count=0;count<12;count++) { if(card_id[count]==card_mem[i][count])
{ key++; } } if(key==12) { lcd_command(0x01); lcd_string("Sorry ! You are"); lcd_command(0xC0); lcd_string("already an user"); delay(200); lcd_command(0x01); lcd_string("Pls scan your ID"); key=0; try=1; current_byte=0; break; } } if(key<12 && try==0) { key=0; for(i=0;i<12;i++) { card_mem[index][i]=card_id[i]; } current_byte=0; lcd_command(0x01); lcd_string("Pls scan again"); while(current_byte!=12); for(i=0;i<12;i++) { if(card_mem[index][i]==card_id[i]) { key++; } } current_byte=0; TMOD=0x00; TH1=0x00; SCON=0x00; TR1=0; IE=0x00; if(key==12) { lcd_command(0x01);
lcd_string("Congratulation !"); lcd_command(0xC0); lcd_string("You are User"); lcd_command(0xCC); lcd_data(index+49); delay(250); lcd_command(0x01); lcd_string("Pls enter the"); lcd_command(0xC0); lcd_string("Balance"); delay(150); lcd_command(0x01); while(set!=1) { keypad(); delay(40); } set=0; lcd_command(0x01); lcd_string("Your balance is"); for(pin=0;pin<=pos;pin++) { number=number+money[pos-pin-1]*pointer; pointer=pointer*10; } lcd_command(0xC0); lcd_display(number); lcd_command(0xCD); lcd_string(".00"); amount[index]=number; delay(250); lcd_command(0x01); number=0; pointer=1; pos=0; lcd_string("Pls scan your ID"); } else { lcd_command(0x01); lcd_string("ERROR"); delay(200); for(i=0;i<12;i++) { card_mem[index][i]=0; }
lcd_command(0x01); lcd_string("Pls scan your ID"); } if(key==12) index++; } TMOD=0x20; Timer 1 TH1=0xFD; SCON=0x50; TR1=1; IE=0x94; } void main() { col1=col2=col3=1; TMOD=0x20; TH1=0xFD; SCON=0x50; TR1=1; IE=0x94; lcd_ini(); second position of first line lcd_string("Pls scan your ID"); while(1) { row1=row2=row3=row4=0; if(col1==0) { keypad(); } if(print==1 && new_user==1) { memory(); print=0; new_user=0; } if(print==1 && recharge==1) { recharge_acc(); print=0; recharge=0; } if(current_byte==12) { //Enable
//Place cursor to
show(); } } }
43462 reads
Adapter Banana Jack Electric Beard Trimmer HDMI Cable Membrane Keypad
Micro Switch
Scientific Calculator SMPS Telephone Turbidity Sensor USB Connector ...more
FEATURED ARDUINO PROJECTS Getting Started with Arduino LCD Arduino Interfacing Xbee Arduino Interfacing Interface GPS with Arduino Interface SD Card with Arduino Call using Keyboard, GSM & Arduino SPI Module of Arduino
RELATED CONTENT RFID | Radio Frequency Identification and Detection Microcontrollers 8051 and 8051 Microcontroller AVR Microcontroller PIC Microcontroller YOU ARE HERE Home
Top
Copyright 2012 EngineersGarage. All rights reserved. Privacy Policy | Refund Policy | About Us