Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Pilotare display 7 segmenti con STM32

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto UtenteDirtyDeeds, Foto UtenteIsidoroKZ, Foto Utenteg.schgor, Foto UtenteBrunoValente

1
voti

[21] Re: Pilotare display 7 segmenti con STM32

Messaggioda Foto UtenteTardoFreak » 12 mag 2014, 18:37

Il ragionamento non va fatto così ma guardando il datasheet del componente.
Esegui in sequenza le operazioni per mettere opportunamente a 0 o a 1 le uscite e basta. Non servono timers.
Qui c'è un esempio della routine che pilota un STP16CP05
Qui hai un esempio di come si pilota quel coso. Questa è la funzione di serializzazione, manca il pilotaggio dei segnali di Enable e di Load (ma sono una cretinata: alzi ed abbassi un' uscita).
Codice: Seleziona tutto
//-----------------------------------------------------------------------------------------------
//  Defines per SPI software
// Pin SCK
#define SPI_SCK_SET  0x2000        // Word per settare/resettare uscita
#define SPI_SCK_PORT GPIOB         // Porta GPIO del segnale
#define SPI_SCK_PIN  GPIO_Pin_13   // GPIO pin per l' inizializzazione
// Pin DOUT
#define SPI_DOUT_SET  0x8000       // Word per settare/resettare uscita
#define SPI_DOUT_PORT GPIOB        // Porta GPIO del segnale
#define SPI_DOUT_PIN  GPIO_Pin_15  // GPIO pin per l' inizializzazione

//-----------------------------------------------------------------------------------------------
// Invia una parola a 32 bit sulla SPI software
static void SPIsendDword(uint32_t dato)
{
  uint32_t i;

  i = 32;
  while(i)
  {
    if (dato & 0x80000000) SPI_DOUT_PORT->BSRR = SPI_DOUT_SET; else SPI_DOUT_PORT->BRR = SPI_DOUT_SET;
    // Alza il clock
    SPI_SCK_PORT->BSRR = SPI_SCK_SET;
    dato <<= 1;
    i--;
    // Abbassa il clock
    SPI_SCK_PORT->BRR = SPI_SCK_SET;
  }
}
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,4k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15764
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[22] Re: Pilotare display 7 segmenti con STM32

Messaggioda Foto UtenteVibia » 12 mag 2014, 23:21

Ci sono quasi arrivato,per adesso sono riuscito a far accendere il display (già penso sia un grosso traguardo)

Adesso mi resta da capire bene le varie procedure per gestire il display :)

Sto facendo riferimento alla pagina 6 del datasheet dell'integrato
http://www.nxp.com/documents/data_sheet/74HC_HCT595.pdf

ho provato ad implementare questo codice qui
Codice: Seleziona tutto
 

GPIOF->BSRR |= 1<<9; //Metto il la porta del clock a Ck=1
GPIOF->BSRR |= 1<<10; //Immetto 1 nel ingresso dati DR=1
GPIOF->BSRR |= 1<<25;//Ck=0
GPIOF->BSRR |= 1<<9; //Ck=1


   

   
   GPIOF->BSRR |= 1<<6; //STCP=1
   GPIOF->BSRR |= 1<<22;//STCP=0


Mi ritrovo che il display mi fa due segmenti accesi forti e gli altri invece sono accesi ma più deboli

Credo sia un problema di display perché, per come ho fatto l'input, dovrei avere l'uscita alta sul pin q0 dello shift register e, attaccando un led, questo si accende mentre con le altre uscite rimane spendo...
Avatar utente
Foto UtenteVibia
101 2 7
Frequentatore
Frequentatore
 
Messaggi: 216
Iscritto il: 12 feb 2013, 22:53

0
voti

[23] Re: Pilotare display 7 segmenti con STM32

Messaggioda Foto Utentedaniele1996 » 13 mag 2014, 18:09

TardoFreak ha scritto:Ma i 74LS li producono ancora? :-M
Erano già stra-obsoleti 20 anni fa, probabilmente esistono solo più sui libri di scuola.
L' idea di utilizzare uno Shift Register è ottima.

Non lo so... io ne ho uno e me lo ha regalato il prof xD :lol:
mentre ci son, siccome mi avete incuriosito, cosa sono sti shift register?
Avatar utente
Foto Utentedaniele1996
570 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1143
Iscritto il: 29 ago 2011, 11:29

2
voti

[24] Re: Pilotare display 7 segmenti con STM32

Messaggioda Foto UtenteVibia » 13 mag 2014, 19:57

è un integrato che in ingresso riceve una sequenza di 8bit e in uscita ti riporta su 8 pin separati la sequenza.
dovrebbe essere quello che teoricamente è chiamato decoder ovvero in ingresso riceve una stringa codificata e in uscita da una sua decodifica
Avatar utente
Foto UtenteVibia
101 2 7
Frequentatore
Frequentatore
 
Messaggi: 216
Iscritto il: 12 feb 2013, 22:53

0
voti

[25] Re: Pilotare display 7 segmenti con STM32

Messaggioda Foto Utentedaniele1996 » 13 mag 2014, 20:02

Uhm quindi in sostanza con 1 pin di un micro potrei mappare 8 uscite digitali?
Avatar utente
Foto Utentedaniele1996
570 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1143
Iscritto il: 29 ago 2011, 11:29

0
voti

[26] Re: Pilotare display 7 segmenti con STM32

Messaggioda Foto UtenteVibia » 13 mag 2014, 20:09

Ahimè no te ne servono 3
-Una per la comunicazione seriale
-Una per il clock
-Una per il latch ovvero per comunicare all'integrato che può abilitare le porte.


Se ti va di farlo non è complicato basta che vedi il datasheet e vedi la sequenza corretta per abilitare le porte...
Io come al solito ho problemi con il display a sette segmenti
Avatar utente
Foto UtenteVibia
101 2 7
Frequentatore
Frequentatore
 
Messaggi: 216
Iscritto il: 12 feb 2013, 22:53

2
voti

[27] Re: Pilotare display 7 segmenti con STM32

Messaggioda Foto Utentedaniele1996 » 13 mag 2014, 20:12

appena ho l'occasione di andare a caltanissetta, ne compro uno... giusto per provare...
Avatar utente
Foto Utentedaniele1996
570 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1143
Iscritto il: 29 ago 2011, 11:29

0
voti

[28] Re: Pilotare display 7 segmenti con STM32

Messaggioda Foto Utentedaniele1996 » 13 mag 2014, 20:20

il clock deve essere ripetitivo o basta darlo in input solo quando si vuole scrivere?
Avatar utente
Foto Utentedaniele1996
570 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1143
Iscritto il: 29 ago 2011, 11:29

0
voti

[29] Re: Pilotare display 7 segmenti con STM32

Messaggioda Foto UtenteVibia » 13 mag 2014, 20:41

Io per adesso ho provato a darlo solo quando mi serviva...

Adesso ho risolto la questione del display mettendone uno ad anodo comune che funziona...

Ora devo vedere come implementare bene i numeri e avevo pensato che, siccome non vuole un clock continuo, mi posso scrivere le combinazioni a mano e implementare delle funzioni tipo "accendi_1","accendi_2" e cosi via senza scervellarmi troppo su come ottimizzare la cosa (anche perché sono sicuro che si potrebbe fare meglio ma a me interessa farlo funzionare e basta xD)
Avatar utente
Foto UtenteVibia
101 2 7
Frequentatore
Frequentatore
 
Messaggi: 216
Iscritto il: 12 feb 2013, 22:53

0
voti

[30] Re: Pilotare display 7 segmenti con STM32

Messaggioda Foto Utentedaniele1996 » 13 mag 2014, 21:08

No... mi sembra un po rudimentale... usa una matrice statica
Codice: Seleziona tutto

const bool matrix[9][7] = {
/* num 1 (esempio)*/
        {0,0,1,1,1,0,0}
/* num 2*/
       ,{1,1,1,0,0,1,1},
// ... e gli altri (questa matrice rappresenta lo shift register appena sono stati scritti tutti i bit)

}

void writeDisplay(uint8_t num){
//pinEN = pin enable dello shifter register
//pinCLK = pinClock
//pinDati = pin per scrivere i dati
      if(num>9) return;
     digitalWrite(pinEN,1);
     uint8_t i;
     for(i = 0; i<9; i++){
     digitalWrite(pinCLK, 1);
   digitalWrite(pinDati,matrix[num][i];
   delay(10);
   digitalWrite(pinCLK, 0);
   delay(10);
   }
   digitalWrite(pinEN, 0);
   
}


L'esempio te l'ho fatto con l'arduino... purtroppo non so che tipo di piattaforma... e ne ho altre competenze per poterti aiutare al difuri dell'uso delle funzioni di arduino... spero ti sia di aiuto..
Avatar utente
Foto Utentedaniele1996
570 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1143
Iscritto il: 29 ago 2011, 11:29

PrecedenteProssimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Majestic-12 [Bot] e 37 ospiti