Guida alla programmazione di codice sorgente ...

D

delifadzli

Guest
Ciao a tutti,

prima di tutto, sono abbastanza nuovo linguaggio C ..

Ecco il codice di esempio .... fonte di display a 7 segmenti con AVR ...

# Include <avr/io.h>
# Include <avr/interrupt.h>
# Include <util/delay_basic.h># Define SEVEN_SEGMENT_PORT PORTD
# Define SEVEN_SEGMENT_DDR DDRR

uint8_t cifre [3] / / Contiene le cifre per 3 schermivoid SevenSegment (n uint8_t, uint8_t dp)
(
/ *
Questa funzione scrive un dato da N cifre per la visualizzazione
la virgola è visualizzato se dp = 1

Nota:
n deve essere inferiore a 9
* /
if (n <10)
(
switch (n)
(
case 0:
SEVEN_SEGMENT_PORT = 0b00000011;
break;

Caso 1:
SEVEN_SEGMENT_PORT = 0b10011111;
break;

Caso 2:
SEVEN_SEGMENT_PORT = 0b00100101;
break;

Caso 3:
SEVEN_SEGMENT_PORT = 0b00001101;
break;

Caso 4:
SEVEN_SEGMENT_PORT = 0b10011001;
break;

caso 5:
SEVEN_SEGMENT_PORT = 0b01001001;
break;

caso 6:
SEVEN_SEGMENT_PORT = 0b01000001;
break;

Caso 7:
SEVEN_SEGMENT_PORT = 0b00011111;
break;

Caso 8:
SEVEN_SEGMENT_PORT = 0b00000001;
break;

Caso 9:
SEVEN_SEGMENT_PORT = 0b00001001;
break;
)
if (dp)
(
/ / Se il punto decimale deve essere visualizzato
/ / Fare 0a po 'basso
SEVEN_SEGMENT_PORT & = 0b11111110;
)
)
altro
(
/ / Questo simbolo sul display dice che n è maggiore di 9
/ / Modo di visualizzazione non può gestire
SEVEN_SEGMENT_PORT = 0b11111101;
)
)

void Wait ()
(
uint8_t i;
for (i = 0; i <10; i )
(
_delay_loop_2 (0);
)
)

void stampa (num uint16_t)
(
uint8_t i = 0;
j uint8_t;
if (num> 999) return;while (num)
(
cifre = num% 10;
i ;

num = num/10;
)
for (j = i, j <3; j ) le cifre [j] = 0;
)

void InitADC ()
(
ADMUX = (1 <<REFS0); / / Per Aref = AVCC;
ADCSRA = (1 <<ADEN) | (7 <<ADPS0);
)

uint16_t ReadADC (ch uint8_t)
(
/ / Seleziona ADC canale CH deve essere 0-7
CH = CH &0b00000111;
ADMUX | = ch;

/ / Singola conversione Start
ADCSRA | = (1 <<ADSC);

/ / Attendere per la conversione di completare
while (! (ADCSRA & (1 <<ADIF)));

/ / Cancella ADIF scrivendo uno ad esso
ADCSRA | = (1 <<ADIF);

ritorno (ADC);
)
void main ()
(
adc_value uint16_t;
t uint8_t;
/ / Prescaler = FCPU/1024
TCCR0 | = (1 <<CS02);

/ / Abilita Overflow Interrupt Enable
TIMSK | = (1 <<TOIE0);

/ / Inizializza Counter
TCNT0 = 0;

/ / Port C [2,1,0] come mettere fuori
DDRB | = 0b00000111;

PORTB = 0b00000110;

/ / Port D
SEVEN_SEGMENT_DDR = 0xFF;

/ / Disattiva tutti i segmenti
SEVEN_SEGMENT_PORT = 0xFF;

/ / Abilita Interrompe Global
sei ();

/ / Abilita ADC
InitADC ();

/ / Loop infinito
while (1)
(
/ / Per saperne di ADC
adc_value = ReadADC (0);

/ / Converti in grado centigradi
t = adc_value / 2;

/ / Stampa per visualizzare
Stampa (t);

/ / Attendere un certo tempo
Wait ();

)
)

ISR (TIMER0_OVF_vect)
(
uint8_t statica i = 0;
if (i == 2)
(
i = 0;
)
altro
(
i ;
)
PORTB = ~ (1 <<i);
SevenSegment (cifre , 0);

)qualcuno mi può aiutare a regolare questo codice

-Perchè voglio usare PIC 16F877A .... per visualizzare LM35 con 7 segmenti ....

Cerco correre da sola ... regolando senza alcuna conoscenza ... sembra essere errore .. huhu

per favore .... aiuto ...

I PICKit2 utilizzando v2.61 per compilare ....

 
Come si può compilare un codice scritto per AVR con una PICKit2?

Prima di tutto PICKit2 è un hardware che viene utilizzato per programmare un chip.

PIC e AVR hanno un'architettura diversa.Quindi non puoi usare un compilatore PIC per compilare un codice scritto per avr

Devi riscrivere il codice per pic

Meglio iniziare con un tutorial di base su microcontrollori

Nandhu

 
delifadzli ha scritto:

qualcuno mi può aiutare a regolare questo codice,-perchè voglio usare PIC 16F877A .... per visualizzare LM35 con 7 segmenti ....
Cerco correre da sola ... regolando senza alcuna conoscenza ... sembra essere errore .. per favore .... huhu aiuto ...
I PICKit2 utilizzando v2.61 per compilare ....
 
dal codice che hai postato mi pare di capire esegue le seguenti operazioni.

1.Installazione ADC, di impostazione del display
2.Per saperne di ADC
3.ADC per convertire i dati di tensione equivalente, convertire in cifre
4.Visualizzare i dati convertiti.

Passare attraverso il codice riga per riga, capire ogni riga, quindi implementare lo stesso con MPASM o un compilatore C, adatto per le parti PIC.

La sua semplice come quella ....

 

Welcome to EDABoard.com

Sponsor

Back
Top