EngineersGarage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise
You are here: Home / Topics / Help on RFID Toll plaza system based on vehicle category interface with 8051 microcontroller (AT89C51)

Help on RFID Toll plaza system based on vehicle category interface with 8051 microcontroller (AT89C51)

|

Microcontroller › 8051 › Help on RFID Toll plaza system based on vehicle category interface with 8051 microcontroller (AT89C51)

  • This topic has 5 replies, 4 voices, and was last updated 9 years, 1 month ago by hami.
Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • May 25, 2014 at 4:10 pm #3098
    mohammed Fahad
    Participant

    HI All,

     

    i am working on this circuit 

    Toll plaza system based on vehicle category interface with 8051 microcontroller (AT89C51)

    i am not able to get few things:

     

    1.what is the polarity of the capacitor connected to Max232 and 89c51

    2.does any body have proteus schematics and code avilable for the project

    3.when i run the simulator there is nothing on the screen

     

    Thanks and Regards,

    Fahad

    May 26, 2014 at 7:09 am #11768
    Ashutosh Bhatt
    Participant

    Capacitors connected to 8051 are non polarized.
    With max232 u have to connect polarized capacitors
    U just post ur problem with circuit n ur code. We will try to help

    May 26, 2014 at 3:49 pm #11769
    mohammed Fahad
    Participant

    wysiwyg_imageupload:12427:

    //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  // Port for keypad
     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_index,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) //Function to provide time delay
    {
      unsigned int j;
    unsigned char i;
      for(i=0;i<count;i++)
      for(j=0;j<1275;j++);
    }
     
    void lcd_command(unsigned char comm)   //LCD command funtion 
    {
      lcd_data_pin=comm;
      en=1;
      rs=0;
      rw=0;
      delay(1);
      en=0;
    }
     
    void lcd_data(unsigned char disp)  //LCD data function 
    {
      lcd_data_pin=disp;
      en=1;
      rs=1;
      rw=0;
      delay(1);
      en=0;
    }
     
    lcd_string(unsigned char *disp) //LCD string function 
    {
      char x;
      for(x=0;disp[x]!=0;x++)
    {
      lcd_data(disp[x]);
    }
    }
     
    void lcd_ini()  //Function to initialize 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++;
    }
    }
     
     
    void recieve() interrupt 4 //Function to recieve data serialy from RS232 
    {
    card_id[current_byte]=SBUF;
    RI=0; // Reset the serial interrupt after 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; //Enable 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[count])
    {
    key++;
    }
    }
    if(key==12)
    {
    flag=1;
    if(amount<=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++)
    {
    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=amount-10;
    lcd_command(0xC0);
    lcd_string(“Amt left  “);
    balance=amount;
    lcd_display(balance);
    lcd_command(0xCD);
    lcd_string(“.00”);
    delay(250);
    lcd_command(0x01);
    if(amount<=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; //Enable Timer 1
    TH1=0xFD;
    SCON=0x50;
    TR1=1;
    IE=0x94;
    }
     
    recharge_acc()
    {
    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[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]=card_id;
    }
    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]==card_id)
    {
    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]=0;
    }
    lcd_command(0x01);
    lcd_string(“Pls scan your ID”);
    }
    if(key==12)
    index++;
    }
    TMOD=0x20; //Enable 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(); //Place cursor to 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)
    {
    show();
    }
    }
    }
    June 23, 2014 at 9:04 am #11844
    Ashutosh Bhatt
    Participant

    with virtual terminal you need not to connect MAX232.
    directly connect TX with RX and vice versa of 8051 and virtual terminal

    July 15, 2014 at 5:53 am #11906
    Jaymin D
    Participant

    Hello,

     

    I made this type of project by myself with completely running mode and coding and circuit by my self.

     

    i.e. for car it deposite toll 30 Rs.

    for truck / bus toll is 50 Rs.

    very hevy vehicle toll is 100 Rs.

     

    Its show these on LCD 16×2 with IC AT89S52 and EM – 18 RFID reader.

    Complete project is ready with 2200 Rs. with 3 catagory vehicle..(mean 3 RFID card)

     

    also I made project on 8051 so if you unterested in this just mail me or msg me if I can help you in this issue.

     

    email : project[dot]student123[at]gmail[dot]com

     

    or just google the DABHI ELECTRONICS and go to electronics project[dot]webs website..

     

    Really it very very low cost..

     

    Also if you want any support in h/w or s/w related of 8051 then you can ask me and also for buy any components at very very low cost.

     

     

    Thanks

     

    It may be helpful to you

     

    Best Luck

     

    Regards

     

    Jaymin D

    April 3, 2016 at 7:54 am #13853
    hami
    Participant

    c code version is lemited how to increse microvresion means icrease the byte of keli version ?

    please give the visible circut digram of project/

     

  • Author
    Posts
Viewing 6 posts - 1 through 6 (of 6 total)
  • You must be logged in to reply to this topic.
Log In

RSS Recent Posts

  • LED circuit for 1/6 scale diorama May 15, 2025
  • stud mount Schottky diodes May 15, 2025
  • Hi Guys May 15, 2025
  • using a RTC in SF basic May 14, 2025
  • Can I use this charger in every country? May 14, 2025

Stay Up To Date

Newsletter Signup
EngineersGarage

Copyright © 2025 WTWH Media LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media
Privacy Policy | Advertising | About Us

Search Engineers Garage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise