void DispNum(uint8_t num,uint8_t dp,uint8_t time) { uint8_t digit1,digit2,digit3; digit3=num%10; num=num/10; digit2=num%10; num=num/10; digit1=num%10; for(;time;time--) { PORTD=(0<<5)|(1<<6)|(1<<7); SevenSegment(digit1, (dp==3)); _delay_ms(5); PORTD=(1<<5)|(0<<6)|(1<<7); SevenSegment(digit2, (dp==2)); _delay_ms(5); PORTD=(1<<5)|(1<<6)|(0<<7); SevenSegment(digit3, (dp==1)); _delay_ms(5); } PORTD=(1<<5)|(1<<6)|(1<<7); //kijelzõ kikapcsolása SevenSegment(10, 0); }
void Current (int current) { DispNum(current,2,DISPTIME); PORTD=(1<<5)|(1<<6)|(0<<7); SevenSegment('A', 0); _delay_ms(DISPTIME*15); PORTD=(1<<5)|(1<<6)|(1<<7); }
void Voltage(int voltage) { DispNum(voltage,2,DISPTIME); PORTD=(1<<5)|(1<<6)|(0<<7); SevenSegment('V', 0); _delay_ms(DISPTIME*15); PORTD=(1<<5)|(1<<6)|(1<<7); }
int main(void) { short int x, d1, d2, d3; TRISB = 0x00; SEG = 0x00; //TRISCbits.DSP1 = 0x00; TRISCbits.RC2 = 0x00; TRISCbits.RC1 = 0x00; TRISAbits.RA5 = 0x00; TRISAbits.RA1=1; // canal A1 do Trimpot como Entrada ADCON1bits.PCFG=0b1011; // pagina DS39626E-page 224 do Datasheet 18F2525 //o valor de 1011 esta na tabela para definir AN0 a AN3 como analogicos //e o restante dos outros ANs como digitais SEG=0xFF; for(x=0;x<5;x++) { DSP1=0b1; DSP2=0b1; DSP3=0b1; Delay10KTCYx(100); DSP1=0b0; DSP2=0b0; DSP3=0b0; Delay10KTCYx(100); } x=0; while (1) { //d1 = x / 100; //DSP1=0b1; DSP2=0b0; DSP3=0b0; //SevenSegment(d1); d2 = x / 10; DSP2=0b1; DSP3=0b0; SevenSegment(d2); PORTCbits.RC0 = 0b1; ADCON0bits.CHS=0b0001; //usa o AN1 para CONversao DS39626E-page 223 // AN1 = Trimpot ADCON0bits.ADON=1; // liga o AD para CONversao Delay1KTCYx(2); // delay aproximado de 1 ms ADCON0bits.GO=1; // inicia a CONversao while (ADCON0bits.GO) ; // aguarda o termino da CONversao Delay1KTCYx( ADRESH ); d3 = x % 10; DSP2=0b0; DSP3=0b1; SevenSegment(d3); PORTCbits.RC0 = 0b0; //DSP1=0b0; DSP2=0b0; DSP3=0b0; ADCON0bits.CHS=0b0001; //usa o AN1 para CONversao DS39626E-page 223 // AN1 = Trimpot ADCON0bits.ADON=1; // liga o AD para CONversao Delay1KTCYx(2); // delay aproximado de 1 ms ADCON0bits.GO=1; // inicia a CONversao while (ADCON0bits.GO) ; // aguarda o termino da CONversao Delay1KTCYx( ADRESH ); x++; if (x>99) x=0; } }