samuel.sam77
Member
HI any one help me code for seven segment display 4 digit with pic16f873A
a-RB1 t0 g-RB7
dot-RBO
common cathode -dig1-RC7
dig2-RC6
dig3-RC5
dig4-RC4
complier ccs c
i tried this code 2 digit but not working
#include <16F873A.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT //No Power Up Timer
#FUSES PROTECT //Code protected from reads
#FUSES NODEBUG //No Debug mode for ICD
#FUSES BROWNOUT //Reset when brownout detected
#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4000000)
Void init_peripheral();
Void Referesh();
#bit sel1 =0x07.7
#bit sel2 =0x07.6
#bit sel3 =0x07.5
#bit sel4 =0x07.4
#byte portb=0x06
#bit menu =0x07.0
#bit up = 0x07.1
#bit down =0x07.2
#bit enter =0x7.3
#bit relay1=0x05.4
#byte trisb=0x86
#byte trisa=0x85
#byte trisc =0x87
const int8 seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
int8 d;
void main()
{
//setup_adc_ports(sANO_ANALOGS);
//setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//enable_interrupts(global);
init_peripheral();
while(1)
{
set_adc_channel(AN0);
delay_ms(100);
d=read_adc();
referesh();
}
}
void init_peripheral()
{
trisb=0;trisa=0xff;trisc=0x0f;
}
void referesh()
{
int8 d2,d3;
d2=(d/10)%10;//second digit
d3= d/100; //first disgit
portb=seg[d3];sel4=1;delay_ms(50);sel4=0;
portb=seg[d2];sel3=1;delay_ms(50);sel3=0;
}
a-RB1 t0 g-RB7
dot-RBO
common cathode -dig1-RC7
dig2-RC6
dig3-RC5
dig4-RC4
complier ccs c
i tried this code 2 digit but not working
#include <16F873A.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT //No Power Up Timer
#FUSES PROTECT //Code protected from reads
#FUSES NODEBUG //No Debug mode for ICD
#FUSES BROWNOUT //Reset when brownout detected
#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4000000)
Void init_peripheral();
Void Referesh();
#bit sel1 =0x07.7
#bit sel2 =0x07.6
#bit sel3 =0x07.5
#bit sel4 =0x07.4
#byte portb=0x06
#bit menu =0x07.0
#bit up = 0x07.1
#bit down =0x07.2
#bit enter =0x7.3
#bit relay1=0x05.4
#byte trisb=0x86
#byte trisa=0x85
#byte trisc =0x87
const int8 seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
int8 d;
void main()
{
//setup_adc_ports(sANO_ANALOGS);
//setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//enable_interrupts(global);
init_peripheral();
while(1)
{
set_adc_channel(AN0);
delay_ms(100);
d=read_adc();
referesh();
}
}
void init_peripheral()
{
trisb=0;trisa=0xff;trisc=0x0f;
}
void referesh()
{
int8 d2,d3;
d2=(d/10)%10;//second digit
d3= d/100; //first disgit
portb=seg[d3];sel4=1;delay_ms(50);sel4=0;
portb=seg[d2];sel3=1;delay_ms(50);sel3=0;
}