Você está na página 1de 14

RFID_Fuel_Distribution

Microcontroller

#include <16F917.h> #use delay(osc=4000000) #use UART(9600, Tx=C6, Rx=E2)

#define Rly_Liquid1 C0 #define Rly_Liquid2 C1 #define Buzzer #define Trigger #define Echo C2 A0 A1

#define K1 C3 #define K2 D3 #define K3 C4 #define K4 C5 #define K5 B0 #define K6 B1 #define K7 B2 #define K8 B3 #define K9 B4 #define K0 B5 #define K_ok B6

#define K_cancel B7

char string[15]; unsigned char SetPassword[4], TmpPassword[4], TmpCharacter[4], TmpAmount[5]; unsigned char key_value, Option; unsigned int Amount; unsigned long TotalSale; float Distance;

void Read_sensor() { float TmpDistance;

Trigger = 1; Trigger = 0; timer1 = 0; A: if(Echo == 0) { TmpDistance = timer1 * 0.96;} else { goto A;}

if(TmpDistance > 20.00)

{ TmpDistance = 20.00;}

Distance = TmpDistance; Ext: }

void Key_scan() { if(!K0) { key_value = 0;} else if(!K1) { key_value = 1;} else if(!K2) { key_value = 2;} else if(!K3) { key_value = 3;} else if(!K4) { key_value = 4;} else if(!K5) { key_value = 5;} else if(!K6) { key_value = 6;} else if(!K7) { key_value = 7;} else if(!K8)

{ key_value = 8;} else if(!K9) { key_value = 9;} else if(!K_ok) { key_value = 10;} else if(!K_cancel) { key_value= 11;} }

void Password_Entry() { int m; Begin1: TmpPassword[0]='-'; TmpPassword[1]='-'; TmpPassword[2]='-'; TmpPassword[3]='-'; TmpCharacter[0]='-'; TmpCharacter[1]='-'; TmpCharacter[2]='-'; TmpCharacter[3]='-'; lcdout("Enter Password\n TmpCharacter[3]); for(m=0; m<5; m++) { delay_ms(500); key_scan(); if(key_value == 11) { TmpPassword[m] = '-'; TmpCharacter[m] = '-'; } %u%u%u%u", TmpCharacter[0], TmpCharacter[1], TmpCharacter[2],

else if (key_value == 10) { goto B2;} else if(m<4) { TmpPassword[m] = key_value; TmpCharacter[m] = *; } lcdout("Enter Password\n TmpCharacter[3]); } delay_ms(600); B2: return; } %u%u%u%u", TmpCharacter[0], TmpCharacter[1], TmpCharacter[2],

void Amount_Entry() { int m; Begin2: TmpAmount[0]='_'; TmpAmount[1]='_'; TmpAmount[2]='_'; TmpAmount[3]='_'; lcdout("Enter Rs. %u%u%u%u", TmpAmount[0], TmpAmount[1], TmpAmount[2], TmpAmount[3]); for(m=0; m<5; m++) { delay_ms(500); key_scan(); if(key_value == 11)

{ TmpAmount[m] = '_'; } else if (key_value == 10) { goto B2; } else if(m<4) { TmpAmount[m] = key_value; } lcdout("Enter Rs. %u%u%u%u", TmpAmount[0], TmpAmount[1], TmpAmount[2], TmpAmount[3]); } delay_ms(600); B2: Amount = convert(TmpAmount); return; }

void FuelDistribution() { unsigned int i; lcdout("V.ID: %s\n Accepted...", string); delay_ms(3000); Password_Entry();

if((TmpPassword[0] == SetPassword[0]) && (TmpPassword[1] == SetPassword[1]) && (TmpPassword[2] == SetPassword[2]) && (TmpPassword[3] == SetPassword[3])) { lcdout( "Accepted..."); delay_ms(2000); lcdout( "Press 1 Petrol\nPress 2 Diesel"); Key_scan(); Option = key_value; Amount_Entry(); lcdout( "Amount: RS.%lu", Amount); TotalSale = TotalSale + Amount; Read_sensor(); printf("%lu%lu%f", TotalSale, Amount, Distance); delay_ms(3000);

if(Option == 1) { lcdout( "Distribution \n Start...."); Rly_Liquid1= 1; delay_ms(Amount); Rly_Liquid1= 0; lcdout( "Distribution \n Finished...."); } else if(Option == 2) {

lcdout( "Distribution \n Start...."); Rly_Liquid2= 1; delay_ms(Amount); Rly_Liquid2= 0; lcdout( "Distribution \n Finished...."); delay_ms(3000); } else { lcdout( "Exit.."); delay_ms(3000); } Read_sensor(); printf("%lu%lu%f", TotalSale, Amount, Distance); } else { lcd_putc(" Wrong Password"); Buzzer= 1; delay_ms(3000); Buzzer= 0; } }

void main() { lcd_init(); lcdout("Automatic Fuel\n Distribution..."); Rly_Liquid1= 0; Rly_Liquid2= 0; Buzzer= 0; TotalSale = 0; Amount = 0; setup(T1INTERNAL); Read_sensor(); delay_ms(2000); Read_sensor(); delay_ms(1000); Read_sensor(); printf("%lu%lu%f", TotalSale, Amount, Distance);

while (TRUE) { Begin: Read_sensor(); if(Distance < 4.00) { lcdout("No Stock..."); printf("%lu%lu%f", TotalSale, Amount, Distance);

delay_ms(1000); goto Begin; } else { lcdout("Waiting for\n getstr(string); delay_ms(900); if(string[6] == 7 && string[7] == 9) { SetPassword[0] = 1; SetPassword[1] = 2; SetPassword[2] = 3; SetPassword[3] = 4; FuelDistribution(); } else if(string[6] == 3 && string[7] == 1) { SetPassword[0] = 9; SetPassword[1] = 8; SetPassword[2] = 7; SetPassword[3] = 6; FuelDistribution(); } else Access ...");

{ lcdout("ID: %s\n Not Accepted...", string); Buzzer= 1; delay_ms(3000); Buzzer= 0; } } }//while (TRUE) }

System Program

Imports System.Windows.Forms Namespace Automatic_Fuel_Distribution Public Partial Class Form1 Inherits Form Public strArr As String() Private Level As Int32 = 0

Public Sub New() InitializeComponent() End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Try SerialPortA.Port = [Default] SerialPortA.Open()

Catch ex As Exception MessageBox.Show(ex.Message, "Communication Port") End Try End Sub

Public Overloads Sub Update() strArr = RxBufferData If strArr.Length > 3 Then textBox1.Text = strArr(1) textBox2.Text = strArr(2) textBox3.Text = strArr(3) Level = strArr(3) * 10 [Object].Value = Level If Level < 40 Then textBox4.Text = "Empty" Else textBox4.Text = Level / 2.0

End If End If End Sub End Class End Namespace

Você também pode gostar