marco88 Inserito: 22 aprile 2019 Segnala Share Inserito: 22 aprile 2019 (modificato) Un saluto a tutti i membri del forum e buona Pasqua. Mi ritrovo a dover programmare un piccolo driver in c per stm8s con il fine di scrivere un display 4-digit con integrato TM1637. Forse è l'orario, ma trovo il datasheet (link) dell'integrato veramente poco chiaro. Ad ogni modo, ho creato delle primitive per mandare lo start, un byte, e lo stop. displayDataSendStart(); displayDataSendCommand((unsigned char)(0b10101010)); displayDataSendEnd(); displayDataSendStart(); displayDataSendCommand((unsigned char)(0b01010101)); displayDataSendCommand((unsigned char)(0b11001100)); displayDataSendEnd(); la funzione displayDataSendCommand() che ho creato, trasmette il byte in argomento a partire dal bit meno significativo al più significativo. Ho messo queste righe in un loop, per vedere con l'oscilloscopio cosa esce e mi sembrano funzionare correttamente. (primo byte sds0005.jpg ; secondo e terzo byte sds00006.jpg). Il clock non è il massimo (la board non ha il quarzo) ma dovrebbe funzionare. Quando il fronte del clock è in salita i bit mi sembrano corrispondere. (sonda viola clk, sonda gialla dio) Detto questo, se mi confermate l'output corretto delle due funzioni, mi chiedevo se qualcuno di voi sapesse darmi due dritte. Ad esempio non ho capito se i bit bisogna mandarli dal LSB al MSB o viceversa. Inoltre non ho per nulla chiara la sequenza di byte, start e stop da mandare per scrivere il singolo segmento, della singola griglia. Ne tanto meno per regolare la luminosità dei led. Ho fatto diverse prove ma sono riuscito solo a scrivere cose senza senso. Accetto volentieri consigli di ogni tipo. Grazie a tutti. Modificato: 22 aprile 2019 da marco88 Link al commento Condividi su altri siti More sharing options...
marco88 Inserita: 22 aprile 2019 Autore Segnala Share Inserita: 22 aprile 2019 Ok, credo di aver capito come inserire le impostazioni relative alla tabella "Data command setting". Non vorrei aver chiesto delle cose troppe ovvie. Ad ogni modo, se trovo delle soluzioni prima di ricevere delle risposte le condividerò per eventuali lettori interessati. Link al commento Condividi su altri siti More sharing options...
marco88 Inserita: 22 aprile 2019 Autore Segnala Share Inserita: 22 aprile 2019 Ciao di nuovo, scusate, forse non dovevo nemmeno aprire il topic. Ad ogni modo ho avuto l'illuminazione notturna ed ho risolto. Il mio errore consisteva nell'interpretazione delle tabelle sul datasheet. Ad esempio la seguente tabella: Alcuni campi sono vuoti e non mi ero reso conto che era una semplice descrizione dei singoli bit. In pratica se volessi dire al controller di scrivere il display, tramite indirizzo fisso, in modalità normale devo avere: b1-b0 = 00; b2 =1; b3 = 0; b5-b4 = indifferente; b7-b6 = 01; che complessivamente diventa 0b01xx0100. I comandi di questa tabella si chiamano "data command" e si distinguono tramite la configurazione dei b7-b6 = 01. Si hanno anche: "display control command" b7-b6 = 10 "address command" b7-b6 = 11. Per accendere i segmenti invece si invia un byte i cui bit posti ad 1 indicano quale segmento si deve accendere. Ad esempio se si trasmette 0b00001111 si accenderanno i segmenti a-b-c-d. (per la posizione dei segmenti basta leggere il datasheet a pagina 8 ) Ad esempio per scrivere 1234 ho inviato la seguente sequenza: START 0b01000100 //scrittura-fixAddress-NormalMode END START 0b10000000 //off display END START 0b10001000 //on display END START 0b10001111 //luminosità massima END START 0xC0 //indirizzo dei primi 7 segmenti 0b00000110 // segmenti bc numero 1 END START 0xC1 //indirizzo dei secondi 7 segmenti 0b01011011 // segmenti abdeg numero 2 END START 0xC2 //indirizzo dei terzi 7 segmenti 0b1001111 // segmenti abcdg numero 3 END START 0xC3 //indirizzo degli ultimi 7 segmenti 0b1100110 //segmenti bcef numero 4 END Ciao a tutti Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 22 aprile 2019 Segnala Share Inserita: 22 aprile 2019 Comunque, avendo anche dato la soluzione, potrebbe essere d'aiuto a qualcun altro. Link al commento Condividi su altri siti More sharing options...
del_user_97632 Inserita: 23 agosto 2019 Segnala Share Inserita: 23 agosto 2019 (modificato) eh, datasheet di questi display sono spesso piuttosto complessi da decifrare, io in genere cerco un codice d'esempio per quel display specifico piuttosto che lavorare da datasheet. E' in genere la via piu rapida. Modificato: 23 agosto 2019 da _angelo_ Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati