Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <16F877a.h> //O PIC utilizado, obrigatório!
- #FUSES NOWDT //Sem Watch dog, evitando reset
- #FUSES XT //Crystal de oscilação igual a 4mhz
- #FUSES PUT //Tempo de início do PIC
- #FUSES NOPROTECT //Codigo sem proteção de leitura, software livre!
- #FUSES NODEBUG //No Debug mode for ICD
- #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
- #FUSES NOCPD //No EE protection
- #use delay(clock=4000000)
- #include <lcd.c>
- //t16 rpm;
- int8 aux;
- int8 escreve_numero;
- int n1 = 0;
- int n2 = 0;
- int n3 =0;
- int n4 =0;
- int n5 = 0x46; // Caracter ponto decimal
- int nx;
- int8 linha;
- long value;
- //---------------------------------------------------------------
- void lcd_load_custom_chars(void);
- //---------------------------------------------------------------
- void escreve_numero(int8 *numero, linha);
- int8 num[10][6] ={ {5, 2, 5, 5, 3, 5},
- {2, 5, 1, 3, 5, 3},
- {2, 4, 5, 5, 3, 3},
- {2, 4, 5, 3, 3, 5},
- {5, 3, 5, 1, 1, 5},
- {5, 4, 2, 3, 3, 5},
- {5, 4, 2, 5, 3, 5},
- {2, 2, 5, 1, 1, 5},
- {5, 4, 5, 5, 3, 5},
- {5, 4, 5, 3, 3, 5} };
- //--------------------------------------------------------------
- void escreve_numero(int8 *numero, int8 linha) {
- int8 j;
- int8 k;
- int8 aux= 0;
- for (k=1; k<=2; k++) {
- for (j=0; j<=2; j++) {
- lcd_gotoxy(linha + j, k);
- lcd_putc(numero[aux]);
- aux++;
- }
- }
- }
- //--------------------------------------------------------------
- void main(void) {
- lcd_init();
- lcd_load_custom_chars();
- delay_ms (50);
- linha= 1;
- while (TRUE) {
- float test = 21.38; // Variavel para guardar valor float com 2 casas decimair
- long value ; // Variavel para guardar valor em long
- value = (long)(test*100); // Multiplica float por 100 para zerar 2 casas depois da virgula, e
- // Transforma o float em long
- n1 = ((value/1000)%10); // Calcula valor digito milhar
- n2 = ((value/100)%10); // Calcula valor digito centena
- n3 = ((value/10)%10); // Calcula valor digito dezena
- n4 = ((value)%10); // Calcula valor digito unidade
- escreve_numero(num[n1], 1);
- escreve_numero(num[n2], 5);
- escreve_numero(num[n5], 9); // Manda o caracter ponto decimal
- escreve_numero(num[n3], 13);
- escreve_numero(num[n4], 17);
- }
- }
- //----------------------------------------------------------------
- const int8 lcd_custom_chars[]=
- {
- 0b00011111, //2 em cima (0)
- 0b00011111,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000, //nada (1)
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000
- 0b00011111, //3 em cima (2)
- 0b00011111,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000, //3 em baixo (3)
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,// alterado
- 0b00000000,
- 0b00011111,
- 0b00011111, // alterado
- 0b00011111, //2 em cima e 2 em baixo (4)
- 0b00011111,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00011111,
- 0b00011111,
- 0b00011111, //completo (5)
- 0b00011111,
- 0b00011111,
- 0b00011111,
- 0b00011111,
- 0b00011111,
- 0b00011111,
- 0b00011111, // alterado
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000
- 0b00000000, // SEQUENCIA PARA O PONTO
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00000000,
- 0b00111100,
- 0b00111100
- };
- //----------------------------------------------------------------
- void lcd_load_custom_chars(void) // copiadooo
- {
- int8 i;
- lcd_send_byte(0, 0x40);
- for(i= 0; i < sizeof(lcd_custom_chars); i++)
- {
- lcd_send_byte(1, lcd_custom_chars[i]);
- }
- lcd_send_byte(0, 0x80);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement