SIDNEI RODRIGUES DO SANTOS
Membro Júnior-
Posts
3 -
Cadastrado em
-
Última visita
Reputação
0-
pic 16f877a lm35 7seg
SIDNEI RODRIGUES DO SANTOS respondeu ao tópico de SIDNEI RODRIGUES DO SANTOS em Microcontroladores
RESOLVI ACHEI UM NA NET E MODIFIQUEI DO MEU JEITO ERA PARA DISPLAY DE 6 DIGITOS MODIFIQUEI PARA 4 OK 100% MUITO OBRIGADO PELA ATENÇÃO. E SERVE PARA VARIOS PICS 16F873A,16F877A,16F882 E MAIS ALGUNS unsigned short num; //num = numeros 0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ; unsigned short mask(unsigned short num)//mask mostra os numeros de 0 a 9 (num) { switch (num)//indentifica os numeros de 0 a 9 { case 0 : return 0x40; //define e mostra os numeros dec para hexa 0 = 0x40 case 1 : return 0x79; case 2 : return 0x24; case 3 : return 0x30; case 4 : return 0x19; case 5 : return 0x12; case 6 : return 0x02; case 7 : return 0x78; case 8 : return 0x00; case 9 : return 0x10; } } char valor; // unsigned short shifter; unsigned short j; unsigned short portd_index; unsigned int i; unsigned short portc_array[4]; float temino,temp; void interrupt() { PORTB = 0; PORTC = portc_array[portd_index]; PORTB = shifter; TMR0 = 0; INTCON = 0x20; shifter <<= 1; if (shifter > 32u) shifter = 1; portd_index++ ; if (portd_index > 5u) portd_index = 0; } void main() { OPTION_REG = 0x80; TMR0 = 0; INTCON =0xA0; ADCON1 =0x80; CMCON = 0x07;// desliga os comparadores TRISA = 0x01; TRISB = 0; TRISC = 0; PORTA = 0; PORTB = 0; PORTC = 0; portd_index = 0; shifter = 1; i = 0; j = 0; while (1) { temp = ADC_Read(0); //seleciona a entrada a ser lida RA0/AN0 =(lm35) temp = temp*5.0/1023.0;//temperatura a ser lida em bits(150) *5 / 1023(10bits) temino = temp*1000.0; // i= temino;// numero (27) a ser mostrado em graus celsius j = i / 100u; // divid 27 por 100 = 0,27 valor = mask(j); portc_array[3] = valor;//mostra o numero (2) da temperatura no diplay 1 j = (char)(i / 10u)% 10u; valor = (mask(j)|0x80); portc_array[2] = valor; //mostra o numero (7) de temperatura no diplay 2 portc_array[1] = 0x1C;//mostra no display 3 a bolinha da grau celsius portc_array[0] = 0x46;//mostra no display 4 o C do grau celsius delay_ms(1000); //tempo de reinicialização ou atualização do programa } while (1); } -
pic 16f877a lm35 7seg
SIDNEI RODRIGUES DO SANTOS respondeu ao tópico de SIDNEI RODRIGUES DO SANTOS em Microcontroladores
qual o passo a passo para fazer .dicas como devo começar já vi vários vídeos mais não sei como começo. converte adc configurar comcon ,port, já sei configurar os port a,b,c,d tris -
Boa tarde me ajudem por favor to ficando louco , há uma semana to tentando fazer um termômetro com pic16f877a lm35 display de 7segmentos não consigo fazer a programação em mikro c ele não mostra os números no display, se alguém puder corregir eu agredece sou novo no clube e espero ficar por muito tempo. int lm35; float temp; int uni=0; int dez=0; void main() { TRISA = 1; TRISB = 0; TRISC = 0; PORTB = 0; PORTC = 0; PORTA.RA1 =0; ADC_Init(); while(1) { lm35 = ADC_read(0); temp = (lm35/150); { if(temp==6.82) PORTC = 0x06; PORTB = 0x3F; } { if(temp==13.64) PORTC = 0x5B; PORTB = 0x3F; } { if(temp==20.46) PORTC = 0x4F; PORTB = 0x3F; } { if(temp==28.28) PORTC = 0x66; PORTB = 0x3F; } { if(temp==34.1) PORTC = 0x6d; PORTB = 0x3F; } { if(temp==40.92) PORTC = 0x7d; PORTB = 0x3F; } { if(temp==47.74) PORTC = 0x07; PORTB = 0x3F; } { if(temp==54.56) PORTC = 0x7f; PORTB = 0x3F; } { if(temp==61.38) PORTC = 0x67; PORTB = 0x3F; } { if(temp==68.2) PORTC = 0x3F; PORTB = 0x06; } } }
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais