Matrice di led con HT1632C (2)

by luca
10 comments

Riprendiamo oggi il nostro display a matrice di led con un primo esempio di utilizzo con Arduino…

COLLEGAMENTI

Come detto, per pilotare il display sono sufficienti 3 pin. Possiamo utilizzare qualsiasi pin digitale di Arduino: per comodità nello sketch sono definiti degli alias:

#define DISPLAY_CS    3
#define DISPLAY_WR    4
#define DISPLAY_DATA  5

Il display viene alimentato a 5V, possiamo prelevare alimentazione e massa sempre da Arduino:

Il connettore presenta 4 pin di CS: va collegato ad Arduino quello relativo all’id (vedi il dip switch) del modulo

COMUNICAZIONE

Per comunicare con il display, il codice Arduino dovrà per prima cosa mettere a livello logico 0 il pin CS.

Quindi, per ogni bit,

[checklist]

  • mettere a livello logico basso il pin RW
  • inviare il bit sul pin DATA
  • mettere a livello logico alto il pin RW

[/checklist]

infatti il valore presente sul pin DATA viene letto sul fronte di salita del pin RW.

Leggendo il datasheet del chip HT1632C, si nota come comandi e indirizzi vadano inviati dal bit più significativo (MSB), mentre i dati da quello meno significativo (LSB):

COMANDI

L’integrato HC1632C definisce 3 comandi, identificati dai primi 3 bit inviati:

  • READ, 110
  • WRITE, 101
  • COMMAND, 100

I primi due comandi sono seguiti dall’indirizzo di memoria e dai dati; il terzo invece è seguito da un codice comando che specifica il particolare comando da eseguire.

INIZIALIZZAZIONE

All’accensione, il display è disabilitato:

Per poterlo utilizzare, dovremo inviare i comandi di SYS EN e LED On (come vedremo questi due comandi saranno inviati all’interno del metodo setup() del nostro sketch).
Nella prossima pagina vedremo un primo sketch di esempio…

Related Posts

10 comments

Mike 7 gennaio 2013 - 04:13

How fast can the LEDs be updated? I’d like to write to the matrix so that everything is lit, then send a new image 100 – 300 milliseconds later and repeat this at least 10 times over 3 seconds.

thanks,

Mike

Reply
luca 7 gennaio 2013 - 09:24

Hi Mike,

referring to the datasheet (http://www.holtek.com/pdf/consumer/ht1632cv120.pdf) you can send data to the Holtek controller up to 1MHz
bye

Reply
123 23 dicembre 2013 - 21:06

Hello Luca

Is There any chance to translate your code for other
LED-display from Sure electronics.
I have this LED-Display

http://www.sureelectronics.net/goods.php?id=1136

I try to understand how the HT1632C works but I dont get it 🙁

Reply
luca 24 dicembre 2013 - 08:48

Hi Ahmet,

unfortunately this is the only display by Sure that I own so I can’t modify/test the code on different models…

Reply
Ahmet 25 dicembre 2013 - 14:49

Hello

Luca thank you its no problem, i got it

thank you very much! 😀

Reply
Giuseppe 23 gennaio 2015 - 22:27

CIao Luca,
anzitutto complimenti, poi…..
non riesco a capire il codice arduino per accendere un led alla volta. In particolare quando entra nel loop, dove viene incrementato l’indirizzo di memoria dell’ HT1632 ? Io noto che anche ad ogni incremento di j l’indirizzo è sempre lo stesso. Come mai?
Ti ringrazio anticipatamente.

Reply
luca 31 gennaio 2015 - 10:15

Ciao Giuseppe,

ad ogni “refresh” devi inviare lo stato (ON/OFF) di tutti i led… questo refresh viene gestito dal ciclo sulla variabile i. La variabile j che indica la posizione del led acceso viene invece incrementata nel loop() principale e – se è arrivata a 255, viene riportata a 0. Quindi il loop principale “cicla” la posizione del led acceso, mentre il loop interno invia al display – per ogni ciclo principale – lo stato di tutti i led.
bye

Reply
Man 4 giugno 2016 - 21:08

It’s really usefull.Great!Many thanks!

Reply
John @ LP 19 luglio 2017 - 12:33

How fast can the LEDs be updated? I’d like to write to the matrix so that everything is lit, then send a new image 100 – 300 milliseconds later and repeat this at least 10 times over 3 seconds.
thanks,
John

Reply
luca 19 luglio 2017 - 16:30

Hi John, the controller’s datasheet reports a clock of 256Khz and a frame length of 8*328 ticks… so if your microcontroller is fast enough, you should be able to update the matrix display at the rate you need.

Reply

Leave a Comment

due + 8 =