We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I am currently making a very simple vending machine project which uses the 8051 microcontoller. the pins im using is
sbit C=P3^3; ////// "C" is for coffee/////// sbit T=P3^4; ////// "T" is for tea/////// sbit H=P3^5; ////// "H" is for hot/////// sbit D=P3^6; ////// "D" is for cold/////// sbit S=P3^7; ////// "S" is for purchasing/////
i have done the coding for lcd initialization and selection.. the problem now is that i need the program to run in sequence for example
sequence one: customer should be able to choose only "C" or "T".. (during this sequence all the other pins should be disabled)
sequence two: customer should be able to choose only "H" or "D"..
sequence three: once the above sequence is completed only then customer can press the push button..
The question is how can i disable the other pins at respective sequences.. my code for the selection part is below..
void main () { TMOD=0x02; TH0=0xA4; IE=0x00; L1= L2= 0; a = 0; lcd_ini(); delay(20); lcd_command(0x01); lcd_string("Select Drink"); delay(200); lcd_command(0x01); lcd_string("1.Coffee 2.Tea"); delay(20); flagset=0; TR1 = 0; while (1) { if (C==0) { delay(30); lcd_command(0x01); lcd_string("Coffee: Hot/Cold"); } if (T==0) { delay(30); lcd_command(0x01); lcd_string("Tea: Hot/Cold"); } if (H==0) { delay(30); lcd_command(0x01); lcd_string("Hot Selected"); } if (D==0) { delay(30); lcd_command(0x01); lcd_string("Cold Selected"); } if (M1==0) { delay(30); b++; switch(b) {case 1: lcd_command(0x01); lcd_string("RM 1.00 Inserted"); delay(20); break; case 2: lcd_command(0x01); lcd_string("RM 2.00 Inserted"); delay(20); break; case 3: lcd_command(0x01); lcd_string("Insert Money"); if (b==3) {b=0;}} } if (S==0) { lcd_command(0x01); lcd_command(0x80); lcd_string("Processing"); delay(100); lcd_command(0x01); lcd_command(0x80); lcd_string("Please wait"); L1 = 1; delay(100); L1 = 0; ///////L1 and L2 is for lights/////// L2 = 1; lcd_command(0x01); lcd_command(0x80); lcd_string("Remove drink"); delay(100); L2 = 0; lcd_command(0x01); lcd_command(0x85); lcd_string("Thankyou"); delay (500); } } }
thank you in advance