Vai al contenuto
PLC Forum


conta pezzi con pic 16F877a su easypic4


sergio19

Messaggi consigliati

Ciao a tutti mi sono appena iscritto al forum e spero che qualcuno mi possa aiutare , ho appena comprato la scheda easypic 4 per lavorare con i pic e come compilatore uso il mikro C la versione demo per ora.

Per la scuola dovrei progettare e programmare un 16F877a che collegato a due display a sette segmenti fa da conta pezzi ora mi spiego meglio , con un pulsante collegato alle porte del pic si deve incrementare di un numero il conteggio fino ad arrivare a 30 , per poi ritornare a 0 e riprendere .

Non so se c'è qualcuno di voi che usa o a usato il compilatore della mikro C ma nella sezzione esempi c'è un programma display 7 segmenti 2 che esegue un conteggio da 0 a 99 in modo ciclico con un intervallo di tempo , come posso modificarlo per adattarlo alla mia esigenza c'è qualcuno che può aiutarmi ?

Ringrazio ancora tutti

Link al commento
Condividi su altri siti


Presumo che l'esempio di cui parli si limiti a convertire una variabile in due numeri BCD ed a visualizzarli.

Tu per realizzare il tuo contapezzi devi collegare il pulsante ad un ingresso del pic. Fai un temporizzatore usando l'interrupt sul timer1 (per esempio) e leggi la porta ogni 10 ms. Se riconosci la variazione 0--> dell'ingresso verifichi che mantenga lo stao 1 per almeno 10 ms (due letture consecutive), così fai anche un filtro antirimbalzo. Se la condizione è vera incrementi una variabile, se il valore della variabile è <=30 passi la variabile alla routine di visualizzazione, altrimenti poni a 1 la vaiabile e la passi alla routine di visualizzazione.

In questo modo visualizzerai il conteggio tra zero e 30, raggiunti 30 conteggi un ulteriore impulso causa il reset del contatore che conta 1 impulso.

Link al commento
Condividi su altri siti

come ti dice il caro livio ottieni un incremento tenendo in considerazione dell'antirimbalzo del pulsante filtrato di 10 ms .

se vuoi fare una cosa piu grezza puoi un intero per il cotnatore da visualizzare ed un intero per il debounce .

Per esempio

if ( pulsante ==1 and memoria ==0)

{

conteggio ++;

}

memoria=pulsante ;

Poi per convertire in bcd ci sono le librerie

Link al commento
Condividi su altri siti

Ciao e grazie a tutti sono riuscito a compilare il mio programma per quello che volevo si lo fatto come dice walterword grezzo ma funziona e per ora mi sembra un bun punto di partenza per me grazie ancora a tutti per il prezioso aiuto

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...