Anto Anush Ответов: 2

Plzzz дайте мне правильный код для индикатора уровня воды?


я создал код автоматического индикатора уровня воды для микроконтроллера.я должен написать код автоматического сбора соленой воды и чистой воды путем замены клапанов.... как я могу создать с помощью встроенного c........
приведен пример программы
#include<reg51.h>
sbit rs=P1^0; 	
sbit rw=P1^1; 	
sbit e=P1^2; 		
sbit quat=P3^0; // Quad water level 
sbit half=P3^1; // half level of tank
sbit quat_3=P3^2; // three -fourth level of tank
sbit full=P3^3; 	//full level of tank
sbit motor=P3^4;  //pin connected to motor

void delay(int k) //delay function
{
int i,j;
for(i=0;i<k;i++)
  for(j=0;j<1275;j++);
}

void write(int j) 
{
rs=1;  //selecting rs pin to data mode
rw=0;  //selecting rw pin to write mode
P2=j;  //putting value on the pins
e=1;  //high pulse 
delay(1);
e=0;	// low pulse
return;
}

void cmd(int j)  //command function
{
P2=j;  //put the data on pins
rs=0;  //selecting rw pin to command mode
rw=0;  //selecting to write
e=1;  
delay(1);
e=0;
return;
}

void puts(char *a) // function to display string on LCD'
{
unsigned int p=0;
for(;a[p]!=0;p++)
write(a[p]);
}

void lcd_init(void) // function to initialise the LCD
{
cmd(0x38); 
delay(1);
cmd(0x0c); //LCD turning on cmd
delay(1);     
cmd(0x01); //clear lcd cmd 
cmd(0x80); // starting point of LCD
}

void main()
{
lcd_init();  	//LCD intialization
quat=half=quat_3=full=1; //configuring as input pins
quat=half=quat_3=full=0; //lowering input pins
motor = 0;
while(1)
{
  if(quat==0&&half==0&&quat_3==0&&full==0)   //when tank is empty
  {
   cmd(0x80);   		// to move the cursor to starting point of LCD
   puts("EMPTY   ");      // dispalys empty on lcd 
		motor=1;							// start motor
  }
  else if(quat==1&&half==0&&quat_3==0&&full==0)	// when tank is quater
  {
   cmd(0x80); 
   puts("QUATER   ");     // dispalys Quarter on lcd
  }
  else if(quat==1&&half==1&&quat_3==0&&full==0)	// when tank is half
  {
    cmd(0x80); 
   puts("HALF    ");      // dispalys half on lcd
  }
  else if(quat==1&&half==1&&quat_3==1&&full==0)	// when tank is three-fourth
  {
   cmd(0x80); 
   puts("3/4 FULL   ");     // dispalys 3/4 full on lcd
  }
  else if(quat==1&&half==1&&quat_3==1&&full==1)	// when tank is full
  {
   cmd(0x80); 
   puts("FULL    ");    // dispalys full on lcd
   motor=0;            // to stop the motor 
  }
 
}
}


Что я уже пробовал:

я пытался использовать if вместо while .... но я не получил желаемого результата>>>>> & gt;;


пожалуйста, дайте мне правильный код!!!!помогите пожалуйста...... колледж project....my следы на твоих руках!!!!!!

Dave Kreskowiak

Неправильно! Ваши метки в ваших руках, а не в наших.

Мы не собираемся писать ваш код для вас. Именно здесь вы демонстрируете то, чему научились на курсах, а не мы.

Mohibur Rashid

Если твои метки в наших руках, ты этого не заслуживаешь.

Цель вашей работы - не получить отметку. Получение отметки определяет, как много вы узнали. Полагаю, ты все равно не заслуживаешь этого знака. Прости, что так сказал.

2 Ответов

Рейтинг:
2

Jochen Arndt

Вы неправильно настроили порт ввода-вывода:

quat=half=quat_3=full=1; //configuring as input pins
quat=half=quat_3=full=0; //lowering input pins

Первая строка устанавливает порты для ввода по мере необходимости.
Но вторая строка устанавливает их на выходы на низком уровне.

Правильное использование:
sbit mybit = P3^0

// Set port as input
mybit = 1;
// Read input
value = mybit;

// Set port as low level output
mybit = 0;
// Set port as high level output (and input)
mybit = 1;


Рейтинг:
0

Patrice T

Цитата:
я попытался использовать if вместо while ....
if и while есть разные обычаи. Нет смысла пытаться заменить одно другим. Это только показывает, что вы не знаете, что делаете.
Цитата:
но я не получил желаемого результата
Это не информативно,мы даже не знаем, каков желаемый результат. Улучшите вопрос с помощью полезной информации о проблеме.
Задавать вопросы-это навык[^]

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.