├── Design Circuit Diagram - Proteus Software.pdsprj ├── Program Code Water Level Controller using 8051.c ├── README.md └── Water Level Controller using 8051.hex /Design Circuit Diagram - Proteus Software.pdsprj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vishallprasad/Water-Level-Controller-using-8051-Microcontroller/27cdc69b108523e92e8f68b652432e08aace39a1/Design Circuit Diagram - Proteus Software.pdsprj -------------------------------------------------------------------------------- /Program Code Water Level Controller using 8051.c: -------------------------------------------------------------------------------- 1 | #include 2 | sbit full=P1^0; 3 | sbit mid=P1^1; 4 | sbit emp=P1^2; 5 | sbit t2=P1^3; 6 | sbit rs=P0^0; 7 | sbit rw=P0^1; 8 | sbit en=P0^2; 9 | sbit rly=P3^0; 10 | 11 | void lcddta(unsigned char[],unsigned char); 12 | void lcdcmd(unsigned char); 13 | void msdelay(unsigned int); 14 | void main(void){ 15 | rly=0; 16 | P0=00; 17 | P2=00; 18 | full=1; 19 | mid=1; 20 | emp=1; 21 | t2=1; 22 | 23 | lcdcmd(0x38); 24 | lcdcmd(0x0c); 25 | lcdcmd(0x06); 26 | lcdcmd(0x01); 27 | while(1){ 28 | if(t2==0){ 29 | //lower motor condition 30 | 31 | if(emp==1 && mid==1 && full==1){ 32 | rly=1; 33 | lcdcmd(0x01); 34 | lcdcmd(0x80); 35 | lcddta("tank is empty",13); 36 | lcdcmd(0xc0); 37 | lcddta("motor is on",11); 38 | }else if(emp==0 && mid==1 && full==1){ 39 | rly=1; 40 | lcdcmd(0x01); 41 | lcdcmd(0x80); 42 | lcddta("tank filling",12); 43 | lcdcmd(0xc0); 44 | lcddta("motor is on",11); 45 | }else if(emp==0 && mid==0 && full==1){ 46 | rly=1; 47 | lcdcmd(0x01); 48 | lcdcmd(0x80); 49 | lcddta("tank is mid",11); 50 | lcdcmd(0xc0); 51 | lcddta("motor is on",11); 52 | }else if(full==0 && mid==0 && emp==0){ 53 | rly=0; 54 | lcdcmd(0x01); 55 | lcdcmd(0x80); 56 | lcddta("tank is full",12); 57 | lcdcmd(0xc0); 58 | lcddta("motor is off",12); 59 | } 60 | else{ 61 | } 62 | 63 | }else{ 64 | rly=0; 65 | lcdcmd(0x01); 66 | lcdcmd(0x80); 67 | lcddta("tank 2 empty",12); 68 | lcdcmd(0xc0); 69 | lcddta("fill tank 2",11); 70 | } 71 | } //end of while 72 | }//end of main 73 | 74 | void lcdcmd(unsigned char cmd){ 75 | P2=cmd; 76 | rs=0;//cmd 77 | rw=0;//write 78 | en=1;//latch 79 | msdelay(5); 80 | en=0; 81 | }//end of lcdcmd 82 | 83 | void lcddta(unsigned char a[],unsigned char len){ 84 | unsigned char x; 85 | 86 | for(x=0;x