Vai al contenuto
PLC Forum


16f876 Orologio Ds1629 - utilizzo del display, 8bit divisi in 4


Omarro

Messaggi consigliati

Ciao,

sto realizzando un orologio-termometro-sveglia con il ds1629 della dallas, i componenti che utilizzo sono questi

4 pulsanti

1 entra nel menu

2 freccia in su

3 freccia in giù

4 ok

poi utilizzo l'I2C per comunicare con il ds1629

e un display BLU hd44780 2x16 caratteri

il mio primo problema è questo,

voglio utilizzare la comunicazione a 8 bit con il display e userei pure la PORTB del PIC se non fosse che è l'unica che mi permette di avere un interrupt su i suoi pin in modo di attivare il tasto menu e cambiare l'ora o settare la sveglia oppure cambiare la scala di lettura dei gradi di temperatura da celsius a kelvin o Faraneith quando viene premuto senza effettuare un controllo software, allora avevo pensato a una cosa simile....

RA0 ~ RA3 RB4 ~ RB7

controllo il display in modo 8 bit e RB0 ~ RB3 controllo i pulsanti, il problema è il seguente...

se in linguaggio C scrivo una funzione tipo

invia_carattere(0x48);

che richiama la funzione per l'invio del carattere e invia il carattere H (in esadecimale 0x48) a fare in modo che i primi quattro BIT vadano da RA0 ~ RA3 e gl'ultimi quattro da RB4 ~ RB7?

Voi mi direte ma llora trasmetti in modalita 4 bit al display, ma non voglio perchè devo occupare tutti i piedini del PIC.....

Cosa mi dite?Ho speranza di realizzare una cosa simile?

GRAZIE MILLE CIAOOO

Link al commento
Condividi su altri siti


TRISB = 0x0f;

...

void invia_carattere(char c)

{

PORTB = c;

PORTB <<= 4; // carica la parte bassa di c

PORTA &= 0x10; // azzera la parte bassa di PORTA

PORTA |= (c >> 4) ; // carica la parte alta di c

// scrittura ...

}

L'ordine è: RA3:RA0 RB7:RB4

Dovrebbe andare.

Io però, invece di usare le interruzioni per leggere i tasti, programmerei un timer per avere un'interruzione ogni 20 msec circa e leggerei i tasti nella routine d'interruzione in modo da ottenere anche una funzione antirimbalzo.

Ciao.

Modificato: da giacomo56
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...