Olá, estou 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:
Pergunta
//Texugo
Olá, estou 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
0 respostass 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.