Ir para conteúdo
Fórum Script Brasil
  • 0

Balança com microcontrolador 8051/8052


//Texugo

Pergunta

Olá, recebi como tarefa de meu curso técnico desenvolver uma balança com o microcontrolador 8051. A balança vai de 0 kg até 150 kg e enviará o valor da massa para o porto P3 do microcontrolador. O problema é que o porto P3 receberá o valor em binário e para realizar a regra de três para obter uma massa e enviá-la para o display, preciso dos valores em decimal e eu não sei como realizar essa conversão. Vejam o que já consegui:

//Balanca
#include <8052.h>
#define  display   P2
#define  RS        P0_2
#define  RW        P0_1
#define  EN        P0_0
#define  Delay     200
#define  NumCol    15
#define  Linha1    0x80
#define  Linha2    0xC0
#define  MSG1      0
#define  MSG2      1
#define  Grau_C    0x00
#define  Seta_E    0x01
#define  Seta_D    0x02
#define  Seta_C    0x03
#define  Seta_B    0x04
#define  Grau_F    0x05
#define  massa     P3
unsigned long x;
unsigned long y;
unsigned char mint, resto, mdec;
unsigned char Tab_Conf[5] = {0x38, 		//Display matriz 7x5 e 8 bits
			     			 0x0E, 		//Habilita cursor
			     		     0x06, 		//Deslocando para a direita
			     			 0x01, 		//Limpa display
			     			 0x0C};		//Desliga cursor
void Disp_8bits (void)
{
 for (y=0; y<=4; y++)
    {
      display = Tab_Conf[y];
      RS = 0;
      RW = 0;
      EN = 1;
      for (x=0; x<=Delay; x++);
      EN = 0;
    }
}
void Posi_Char (unsigned char Position)
{
 display = Position;
 RS = 0;
 RW = 0;
 EN = 1;
 for (x=0; x<=Delay; x++);
 EN = 0;
}
void Escreve_Char (unsigned char Num_CGRAM)
{
  display = Num_CGRAM;
  RS = 1;
  RW = 0;
  EN = 1;
  for (x=0; x<=Delay; x++);
  EN = 0;
}
void Escreve_Frase (unsigned char Local)
{

 unsigned char Message[2][16] = {"  BALANCA  ",
                                 "    ,  kg  "};
 for (y=0; y<=NumCol; y++)
  {
   display = Message[Local][y];
   RS = 1;
   RW = 0;
   EN = 1;
   for (x=0; x<=Delay; x++);
   EN = 0;
  }
}
void main (void)
{
 TMOD = 0x11;
 Disp_8bits ( );
 Posi_Char (Linha1);
 Escreve_Frase (MSG1 );
 Posi_Char (Linha2);
 Escreve_Frase (MSG2);
 while(1)
 { mint=(massa*150)/255;
   resto=(massa*150)%255;
   mdec=(resto*100)/255;
   Posi_Char (Linha2+1);
   Escreve_Char (mint + 0x30);
   Posi_Char (Linha2+5);
   Escreve_Char (mdec + 0x30);
 }
}

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...