șofer cu 7 segmente. Explicații suplimentare pentru controalele de efect

Trăsături distinctive:

  • Interfață serială compatibilă cu SPI/QSPI/MICROWIRE™ de mare viteză de 26 MHz
  • Tensiune de alimentare de la 2,7 V la 5,5 V
  • Oferă managementul indicatorilor:
    până la 16 biți semn (7 segmente)
    până la 8 biți semn (14 segmente)
    până la 128 de LED-uri discrete
    combinație de tipuri de indicatori
  • Oferă controlul indicatoarelor LED monocrome și bicolore cu catod comun
  • Font ASCII de 104 de caractere încorporat pentru indicatori cu 14 și 16 segmente și font hexazecimal pentru indicatori cu 7 segmente
  • Control automat al pâlpâirii pentru fiecare segment
  • Mod de oprire cu economie de energie, consum de curent 10 µA (tip.)
  • Control digital al nivelului de luminozitate în 16 trepte
  • Ștergerea indicatorului la pornirea alimentării
  • Driverele de segment au o limitare a ratei de ieșire pentru a limita EMI
  • Cinci intrări de porturi de uz general pot fi configurate pentru a interoga și a elimina până la 32 de taste cu tastele n apăsate simultan
  • Ieșire de întrerupere IRQ în modul de eliminare a tastei scanate
  • Carcase SSOP cu 36 de pini și DIP cu 40 de pini
  • Versiune standard cu interval de temperatură de funcționare auto

Domenii de utilizare:

  • Set-top boxes, decodoare
  • Contoare digitale
  • Aparate
  • Aplicații auto
  • Indicatori grafici digitali
  • Echipamente audio/video

Diagrama functionala:

Schema de conectare tipică:

Locații de fixare:

Descriere:

MAX6954 este un driver LED compact care interfață microprocesoare cu o varietate de opțiuni de afișare LED cu 7/14/16 segmente folosind o interfață compatibilă cu 4 fire, serial SPI™ sau QSPI™. Interfața serială poate fi conectată în cascadă pe mai multe circuite integrate. MAX6954 IC este capabil să gestioneze indicatori care conțin: până la 16 biți de caractere (7 segmente); până la 8 biți semn (14 segmente); până la 128 de LED-uri discrete, cu tensiuni de alimentare scăzute, începând de la 2,7 V. Driverul are cinci canale de expandor I/O (sau porturi I/O de uz general), dintre care câteva sau toate pot fi configurate pentru a interoga și a elimina tastatura matriceală. format din maxim 32 de chei.

În IC sunt încorporate fonturi ASCII complete de 104 de caractere, 14 și 16 segmente, fonturi hexazecimale pentru indicatori cu 7 segmente, circuite de scanare multiplex, drivere pentru catozi și anod și RAM statică care stochează starea fiecărui bit. Curentul maxim al segmentului pentru toți biții indicatori este setat folosind un rezistor extern. Intensitatea descărcărilor poate fi ajustată independent pentru fiecare dintre descărcări folosind un sistem digital de control al luminozității în 16 trepte. MAX6954 dispune de un mod de oprire pentru economisirea energiei, un registru limită de scanare care permite utilizatorului să seteze afișajul de la 1 la 16 cifre, un sistem de control al pâlpâirii segmentelor (sincronizat pentru funcționarea cu mai multe drivere, dacă este necesar) și un mod de testare care forțează toate LED-urile să se aprindă.segmente în poziția „pornit”. Driverele de segmente LED au o limitare a ratei de mișcare pentru a limita EMI.

Astăzi vom prezenta o altă modalitate de a salva o grămadă de picioare de microcontroler în cazurile în care trebuie să conectați indicatoare LED cu șapte segmente. Vom vorbi despre utilizarea unui șofer specializat MAX7221 este Driverele vă permit să controlați indicatoare cu șapte segmente (cu un catod obișnuit), benzi LED sau le puteți utiliza pentru a controla până la 64 de LED-uri simultan. Driverele în sine sunt controlate printr-o interfață SPI, cu o frecvență maximă de operare a interfeței acceptată de până la 10 MHz.

Pinout-ul picioarelor microcircuitului:

1 - DIN. Intrare de date seriale. Datele sunt încărcate într-un registru de deplasare de 16 biți pe marginea ascendentă a semnalului de ceas.

2,3,5-8,10,11 - DIG0-DIG7. Terminale pentru conectarea catozilor comuni ai indicatoarelor.

4.9 - GND. Legături la pământ

12 - ÎNCĂRCARE (C.S.) în MAX7221, datele sunt încărcate în registrul de deplasare de recepție numai atunci când semnalul CS este scăzut (adică numai atunci când cipul este „selectat” în termeni SPI). Ultimii 16 biți recepționați sunt, de asemenea, amintiți și procesați, acest lucru se întâmplă și la marginea anterioară a semnalului CS.

13 - CLK. Intrarea semnalului de ceas utilizată pentru înregistrarea datelor.

14-17, 20-23 - SEG A-SEG G, DP. Concluzii pentru conectarea segmentelor de indicatori cu șapte segmente.

18 - ISET. Un rezistor este conectat la acest pin (al doilea picior al rezistenței este la plus), ceea ce vă permite să setați curentul de vârf al segmentului și astfel să setați luminozitatea segmentelor. Rezistența minimă a acestui rezistor ar trebui să fie de 9,53 kOhm, ceea ce corespunde aproximativ unui curent de segment de 40 mA.

19 - V+. Sursa de alimentare „+” este conectată aici.

24 - DOUT. Ieșire de date în serie. Acest picior va fi necesar dacă trebuie să conectați doi sau mai mulți drivere împreună.

Principiul lucrului cu cipul MAX7221

De fapt, MAX7221 (și analogul său MAX7219) este similar în principiu cu registrul 74HC595, singura diferență fiind că în cip sunt încărcați 16 biți de date. Primii 8 biți încărcați sunt necesari pentru a selecta registrul în care ar trebui să fie scrise datele. Următorii 8 biți sunt datele care trebuie scrise în registru. Pentru a spune simplu, mai întâi îi spunem cipului unde să scrie datele, apoi scriem datele necesare la adresa selectată.

Ceea ce este interesant la acest driver este că are două moduri de operare. Primul este de a lucra într-un mod tampon obișnuit cu control direct al fiecărui segment.

Al doilea mod, așa-numitulCod BCD B , care vă permite să simplificați afișarea informațiilor pe indicator datorită decodorului de caractere încorporat. Apropo, sunt foarte puține simboluri, doar 16 - acestea sunt numerele 0-9, semnul „-”, un simbol gol și 4 tauri - „E”, „H”, „L”, „P” ( Mă întreb ce cuvânt poate fi făcut? :)) . De exemplu, pentru a scoate numărul 2 în a doua cifră, ar trebui să trimitem adresa celei de-a doua cifre (8 biți) și apoi pur și simplu să trimitem 2 (alți 8 biți). Vom vorbi despre acest mod de operare în articolul următor, dar acum vom analiza un exemplu despre cum să lucrați cu driverul în modul non-decodare.

Pentru a controla șoferul, trebuie mai întâi să vă familiarizați cu harta adreselor de înregistrare.

Inregistreaza-te Nu op va fi necesar la conectarea mai multor drivere împreună. Pentru a accesa, de exemplu, al treilea șofer din lanț fără a afecta funcționarea primilor doi, trebuie să accesați registrul „No-op” pentru primii doi. Deoarece adresa acestui registru este zero, acest lucru este foarte simplu de făcut: mai întâi, în 16 cicluri de ceas, trimitem date pentru al treilea registru, apoi setăm linia de date la zero și facem clic de încă 2 ori pentru 16 cicluri de ceas. Ca urmare, primul pachet trimis va fi încărcat în al treilea registru, iar următoarele două pachete (încărcate în primul și al doilea registru) vor avea adresa zero, adică vor accesa registrul „No-op”.

Cifra 0-7 registre responsabile cu gestionarea biților indicatori. Cifrele sunt numerotate de la stânga la dreapta. Acest lucru este foarte convenabil, de exemplu, pentru a schimba o cifră pe indicator Ne mutăm la adresa registrului responsabil pentru cifra, astfel nu atingem toate celelalte cifre.

Inregistreaza-te Modul de decodare este responsabil pentru modurile de operare ale driverului, care au fost menționate chiar mai sus: acestea pot fi setate la modul de decodare a caracterelorCod BCD B și modul fără decodareFără decodare.

Prin registrul de intensitate Luminozitatea indicatorului este reglată de software(!). Un lucru la îndemână pentru diferite ocazii, de la posibilitatea de economisire a energiei până la indicarea diferitelor moduri de funcționare ale dispozitivului.În total, puteți alege unul dintre cele 16 niveluri de luminozitate.

Înregistrați limita de scanare Numărul de cifre indicatoare utilizate este setat. Dacă intenționați să folosiți mai puțin de toate cele 8, atunci este recomandat să le dezactivați pe cele neutilizate. Rata de reîmprospătare a indicatorului, precum și curentul de vârf prin segmente, vor depinde de aceasta. Când toți cei 8 biți sunt activați, rata de reîmprospătare este de aproximativ 800 Hz. Pe măsură ce numărul de cifre scade, frecvența crește; aceasta poate fi determinată prin formulă8*800/N (unde N este numărul de cifre). Curentul de vârf prin segmente crește și atunci când biții neutilizați sunt opriți.

Prin registrul Shutdown Puteți activa modul de economisire a energiei, în care toți indicatorii se sting, dar datele și starea registrelor nu se pierd. Modul de economisire a energiei este activat prin înregistrare zero la registrul de oprire. La înregistrarea acolo unitatiȘoferul iese din modul de economisire a energiei.

Consumul de energie în acest mod scade la 150 µA.

Test de afișare folosit pentru a verifica indicatorul conectat; în modul de testare, toate segmentele indicatorului sunt pornite. Chiar dacă șoferul este în modul de economisire a energiei, modul de testare va activa segmentele.

După pornire, toate registrele driverului sunt resetate, așa că primul lucru pe care trebuie să-l faceți este să configurați. Setări driver (scrierea valorilor necesare în registreMod decodare, intensitate, limită de scanare, Test de oprire și afișare ) trebuie făcută de fiecare dată când alimentarea este pornită, aceste valori nu sunt salvate.

Lucrul cu șoferul în modul fără decodare

În modul Fără decodareputem controla direct fiecare segment de orice rang. CUCorespondența dintre segmentele indicatorului și biții din registrul Digit este prezentată în imaginea de mai jos șipentru a ilumina un anumit segment este necesar să scrieți pe bitul corespunzătorunitate.


De exemplu: trebuie să afișăm numărul 1 în prima cifră a unui indicator de 8 biți.Mai întâi, trimitem primii 8 biți ai adresei de registru corespunzător primei cifre (vezi tabelul cu harta adreselor de registru). Numerotarea cifrelor indicatoare merge de la stânga la dreapta (ca aceasta 0.1.2.3.4.5.6.7.), deci prima cifră din dreapta (cifra 7) va avea adresa &h08, aceasta este valoarea pe care o trimitem. Apoi trimitem datele care ar trebui să includă segmentele B și C; conform tabelului de corespondență (vezi mai sus), biții D5 și D4 sunt responsabili pentru aceste segmente. Deci următorii 8 biți pe care trebuie să-i trimitem vor fi: 00110000 , sau dacă este în hexazecimal - &h48. Putem controla alte cifre și segmente ale indicatorului într-un mod similar. Nimic complicat, nu? ;)

Și acum un mic exemplu de lucru. Am avut doar un indicator de patru cifre, care este destul de potrivit pentru a demonstra capacitățile. Conectat conform diagramei de mai jos. Cablurile neutilizate pot fi lăsate atârnând în aer. Microcontrolerul Attiny2313 este tactat de la un oscilator intern la 8 MHz, tensiunea de alimentare a circuitului este de 5 volți.

Cod demonstrativ în Bascom-AVR

$regfile = "attiny2313.dat"
$cristal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40

Config Portd = Ieșire

CsAlias Portd. 1
Ser_clkAlias Portd. 2
Ser_dataAlias Portd. 3

Dim A La fel deCuvânt
Dim Digital (8) la fel deoctet
Dim Y La fel deoctet
Dim Disp_num La fel deoctet
Dim Disp_date La fel deoctet
Dim Digit_str La fel deŞir* 4
Dim Temp_str La fel deŞir* 3
Gosub Max7219_setup

Digit_str= "Bine" „șirul care va fi afișat
Gosub A pregati „apelați subrutina pentru pregătirea și trimiterea datelor

Aștepta 3

Do „În bucla principală tipărim pur și simplu un număr care crește cu 1
Așteaptă 200
Incr A „o variabilă a cărei valoare este afișată pe indicator
Digit_str= Str(A)
Digit_str= Format(digit_str, "0000")
Gosub A pregati
Buclă

Sfârşit

„Pregătirea datelor pentru transmitere
A pregati:
Do
Pentru Y=1 La 4
Temp_str= la mijloc(digit_str, Y, 1)
SelectațiCaz Temp_str
Caz"0" : Temp_str = "126" "&b01111110
Caz"1" : Temp_str = "48" "&b00110000
Caz„2” : Temp_str = „109” „&b01101101
Caz„3” : Temp_str = „121” „&b01111001
Caz"4" : Temp_str = "51" "&b00110011
Caz„5” : Temp_str = „91” „&b01011011
Caz"6" : Temp_str = "95" "&b01011111
Caz"7" : Temp_str = "112" "&b01110000
Caz"8" : Temp_str = "127" "&b01111111
Caz„9” : Temp_str = „123” „&b01111011
Caz"." : Temp_str = "128" "&b10000000
„Puteți introduce singur caracterele necesare
Caz„A” : Temp_str = „119” „&b01110111
Caz„C” : Temp_str = „78” „&b01001110
Caz„E” : Temp_str = „79” „&b01001111
Caz„G” : Temp_str = „94” „&b01011110
Caz"o" : Temp_str = "29" "&b00011101
Caz"d" : Temp_str = "61" "&b00111101
Caz" " : Temp_str = "0" "&b00000000
"și așa mai departe...
SfârşitSelectați
Cifră(y) = Val(temp_str)

Disp_num= Y „familiaritate (cifră) la care afișăm cifra curentă

Disp_date= Cifra(y) „date pe care le trimitem la categoria selectată
Gosub Disp_write
Următorul Y
Buclă Pana cand Y=5 „Când datele au fost transmise la toți cei 4 biți, ne întoarcem la bucla principală
Întoarcere

„Transferăm date către max7221
Disp_write:
Ser_data= 0
Ser_clk= 0
Cs= 0
Schimbare Ser_data, Ser_clk, Disp_num, 1 „trimite numărul de rang
Schimbare Ser_data, Ser_clk, Disp_data, 1 „trimite date în această categorie
Cs= 1
Întoarcere

"inițializarea și setarea registrelor max7221
Max7219_setup:
Disp_num= & H0C : Afișare_date = 0 „Mod de oprire (0-activat, 1-dezactivat)
Gosub Disp_write
Disp_num= & H09 : Afișare_date = 0 „modul de control direct al segmentelor indicatoare
Gosub Disp_write
Disp_num= & H0A : Afișare_date = 10 „nivel de strălucire segment (0-minim, 15-maxim)
Gosub Disp_write
Disp_num= & H0B : Afișare_date = 3 „numărul de cifre utilizate (numărând de la 0)
Gosub Disp_write
Disp_num= & H0F : Afișare_date = 0 „Modul de testare este dezactivat (0-dezactivat, 1-activat)
Gosub Disp_write
Disp_num= & H0C : Afișare_date = 1
Gosub Disp_write
Întoarcere



Codul este bine comentat, așa că sper să nu fie nevoie de explicații suplimentare. Iar mai jos este rezultatul muncii

Ufff... În sfârșit am ajuns la fierul de lipit! Acum hai să facem ceva interesant.

Anterior, spuneam „A” prin colectare, acum trebuie pur și simplu să spunem „B” și să facem un dispozitiv de ieșire, ceea ce vom face astăzi. Vom avea un indicator cu 7 segmente ca dispozitiv „B”. Dar nu doar un indicator, ci o linie întreagă de indicatori cu șapte segmente, de lungime nelimitată și cu o grămadă de efecte de afișare! Interesant? Ei bine, atunci, să începem!

Indicatoarele cu șapte segmente sunt dispozitive de afișare destul de ambigue. Datorită faptului că sunt concepute pentru a afișa numere (deși, desigur, literele pot fi afișate, dar mai degrabă condiționat și nu toate), gama lor de aplicare nu este foarte largă. Dar există cazuri când este necesară o afișare luminoasă și clară a numerelor, care, în plus, ar trebui să fie vizibilă de la distanță, iar aici afișajele cu șapte segmente nu au egal.

Adesea, atunci când vorbim despre indicatoare cu șapte segmente, se presupune că aceștia sunt incluși într-un circuit cu indicație dinamică, caz în care este aprins pe rând un singur simbol, iar la o frecvență peste 50 Hz, se creează iluzia că toate simbolurile sunt iluminate în același timp. Această schemă este atât de comună încât 3-4 indicatoare digitale au ieșiri doar pentru afișarea dinamică. Această metodă de includere are, desigur, avantajele ei, dar când vine vorba de numărul de cifre mai mare de patru (și cu atât mai mult dacă nu se știe câte vor fi) - problemele încep cu această indicație foarte dinamică - luminozitatea strălucirii scade și pâlpâirea devine vizibilă. Evident, pentru o linie de indicatori cu șapte segmente de lungime nelimitată, această metodă de conectare nu este absolut potrivită. Ce să faci în acest caz? Să facem ceva neconvențional - porniți indicatoarele noastre pentru o strălucire statică (constantă). Pentru a face posibilă o astfel de conexiune, vom avea nevoie de indicatori cu o singură cifră, cu șapte segmente - de exemplu, aceștia:

În plus, pentru a ilumina segmentele necesare ale indicatorului, avem nevoie de un driver LED. Pentru a nu crește costul liniei noastre (cipul șoferului este destul de scump), vom folosi registre de schimbătoare ieftine și obișnuite 74HC164. Acest lucru va reduce ușor luminozitatea strălucirii, dar va reduce semnificativ costul întregului dispozitiv. Pentru a controla rigla vom folosi un microcontroler ATtiny13– nu este nevoie de unul mai mare. Registrele de deplasare sunt controlate de doar două linii ( Date, Ceas) și sunt pornite secvențial, ceea ce înseamnă că nu există nicio diferență pentru circuitul de control al registrului, câte dintre ele sunt într-o linie de trei sau o sută douăzeci și trei. Aceasta înseamnă că ne putem face rigla fără dimensiuni, adică putem conecta oricând indicatori suplimentari la riglă sau îi putem elimina pe cei care nu sunt necesari. Diagrama dispozitivului arată astfel:

După cum se poate vedea din diagramă, indicatoarele cu șapte segmente cu registrul 74HC164 sunt instalate pe plăci separate cu conectori pe ambele părți, astfel încât mai multe indicatoare să poată fi asamblate într-o linie. Placa de control (driver de linie) de pe ATtiny13 controlează toți indicatoarele, indiferent de numărul acestora. Mai mult, firmware-ul oferă posibilitatea de a amesteca indicatorii cu un anod comun și un catod comun în linie. Simbolurile sunt afișate de la dreapta la stânga. Această opțiune de afișare este convenabilă pentru cazurile în care nu se știe câți indicatori sunt incluși în linie - ultimele caractere introduse sunt întotdeauna în primii indicatori. Pe lângă semnalul de date ( Date) și semnal de ceas de date ( Ceas), șoferul generează semnalul „ /OE” (Output Enable) pentru a evita pâlpâirea segmentelor la schimbarea caracterelor după litere. În momentul în care datele sunt mutate în registru, driverul setează linia /OE la un nivel ridicat; circuitul de control al indicatorului bazat pe acest nivel de semnal ar trebui să interzică ieșirea de date către indicator. În acest design de circuit, acest semnal nu este utilizat din cauza absenței unui pin în registrele de deplasare 74HC164 care transformă ieșirile într-o stare de înaltă rezistență, dar puteți utiliza acest semnal pentru a opri ieșirea comună a indicatorului (prin un tranzistor) sau utilizați un alt microcircuit care are o intrare corespunzătoare.

Algoritmul de funcționare a dispozitivului.
M-am gândit mult timp la cum să faci controlul riglei simplu și nu împovărător pentru microcontrolerul proiectului tău. Scopul principal pe care l-am urmărit a fost să transfer cât mai mult posibil funcțiile de control către driverul de linie, dar în același timp să nu pierzi posibilitatea de control flexibil din partea proiectului tău. Ca urmare, a fost dezvoltat următorul algoritm de operare:

Driverul riglă interacționează cu proiectul dvs. folosind UART(Viteză 9600 , 8 bit de date 1 bit de oprire, bit de paritate Nu). Driverul funcționează atât pentru recepție, cât și pentru transmisie (deși acesta din urmă nu este atât de important și nu puteți utiliza această caracteristică, reducând astfel controlul șoferului la o singură linie).
Cifrele, literele latine și caracterele de control pot fi transmise șoferului. Transmiterea se realizează în cod ASCII (exemplu: numere - „123”, litere - „Abc”, caractere de control - „>”). Celelalte personaje sunt ignorate.

Driverul trimite simboluri de sfârșit de efecte prin UART. Sunt doar doi dintre ei - " V" Și " D" Acest lucru este necesar pentru a ști când efectul s-a încheiat și puteți trimite următoarea comandă de efect pentru a forma efecte compozite complexe.

Numerele și literele latine transmise pentru afișare sunt scrise într-un buffer (dimensiunea bufferului poate fi de 16, 32, 64 de caractere și este selectată în funcție de nevoile proiectului). Nu există depășire a tamponului, este ciclic (caracterele noi sunt scrise deasupra celor mai vechi). Caracterele de control nu sunt scrise în buffer - își activează funcțiile imediat când sunt primite prin UART (de exemplu: la trimiterea liniilor „abcd>” și ​​„ab>cd”, rezultatul va fi identic). Simbolurile apar pe linia indicatoare din buffer, iar modul în care sunt afișate depinde de efectele activate. Această opțiune este cea mai puțin intensivă în resurse pentru controlerul proiectului dvs., deoarece șirul de caractere introdus în buffer este afișat cu diferite efecte folosind doar resursele driverului.

În mod implicit, driverul afișează simbolurile primite pe riglă fără niciun efect. Dacă numerele sau literele latine sunt transmise prin UART (de exemplu, „1”, „4”, „A”, „S” „d” ...), acestea vor fi afișate imediat pe riglă de la dreapta la stânga, cu următorul caracter deplasându-l pe cel anterior spre stânga.
Mai jos este o descriere a tuturor caracterelor care pot fi trimise șoferului.


Caractere afișate.
Șoferul poate afișa numere și litere latine (majuscule și minuscule sunt afișate în mod egal), precum și spațiu și zecimală.


Personaje de control.
Pentru a selecta modul de operare al riglei sau pentru a activa efecte speciale, trebuie să transmiteți caractere speciale prin UART. După cum am scris mai devreme, caracterele de control încep să funcționeze imediat după ce au fost primite prin UART și nu intră în buffer. În consecință, acestea pot fi trimise direct în linia de mesaje.
Exemplu: „_Abc>”, unde „Abc” este mesajul afișat, iar „_” și „>” sunt caractere de control.


Iată o listă de simboluri care controlează modul de funcționare al indicatorilor:

„)” – permisiunea de a afișa automat tamponul(activat implicit).
Când actualizarea automată este activată, tamponul, cu o anumită perioadă, este redesenat pe riglă. Fiecare caracter primit prin UART și scris în buffer va fi afișat imediat pe riglă.

„(“ – interzice afișarea automată a tamponului.
Toate caracterele primite prin UART continuă să fie scrise în tamponul driverului, dar nu au loc modificări pe linie („ultimul mesaj este aprins”). Interzicerea actualizării automate a liniei poate fi necesară dacă trebuie să afișați întreaga linie deodată, mai degrabă decât caracter cu caracter, sau pentru a pregăti următorul mesaj fără a-l schimba pe cel anterior.
Exemplu: șirul „(2314” transmis prin UART nu va fi afișat pe riglă, ci va fi scris în buffer. Dacă activăm în continuare afișarea automată - „)”, atunci vom vedea cuvântul nostru „2314” pe riglă. Pentru a afișa întregul șir de mesaje și nu pe baza faptului de a transmite caractere prin UART, trebuie să trimiteți următoarea combinație „(2314)”. Acest lucru este relevant dacă caracterele 2, 3, 1, 4 nu sunt transmise imediat prin UART, ci pe o anumită perioadă de timp.

„!” – ieșirea forțată a tamponului către linie.
Este necesară afișarea tamponului o dată pe riglă când actualizarea automată este dezactivată.
Exemplu: a interzis afișarea automată a „(“, a transmis caracterele „2314”, i-a forțat să afișeze „!”.

„_” (subliniere) – șterge tamponul.
La primirea acestui caracter, tamponul va fi șters imediat. Dacă afișarea automată a bufferului este dezactivată, nu vor avea loc modificări ale riglei, deoarece numai tamponul este șters. Pentru a șterge rigla, în acest caz, trebuie să porniți afișarea automată a tamponului sau să trimiteți un simbol de ieșire a tamponului forțat „!”.

„[“ – activați modul de inversare a caracterelor.
În modul inversare, caracterele afișate pe linie sunt inversate (bit cu bit). Acest mod este necesar dacă ați reușit să combinați indicatoarele cu un anod comun și un catod comun într-o singură linie. Când se aplică un semnal invers indicatorului de conexiune opus, acesta din urmă va afișa corect simbolul. Chiar dacă întreaga linie de indicatori nu corespunde firmware-ului, la începutul sesiunii este suficient să trimiteți simbolul „[“ și apoi totul va funcționa corect.

„]” – dezactivează modul de inversare a caracterelor (activat implicit).
Exemplu: Dacă firmware-ul este pentru indicatoare cu un anod comun, iar indicatoarele sunt aprinse astfel: OA-OK-OA. Trecem de linia „35” și obținem pe linie 345. Dacă o trecem așa – „345” atunci obținem „3-line-what-5”.

„*“ – „dispariție” caracter cu caracter a conținutului rândului.
Simbolurile de pe linie își sting secvențial segmentele până când „dispar” complet (conținutul tamponului rămâne neatins). La sfârșitul efectului, simbolul „ este afișat în UART D

„^“ – „manifestare” caracter cu caracter a conținutului rândului.
Simbolurile de pe linie își luminează secvențial segmentele până când sunt complet „manifestate” (conținutul tamponului rămâne neatins). La sfârșitul efectului, simbolul „ este afișat în UART D”afișarea automată a tamponului este activată.

Pentru a finaliza efectul, linia indicator trebuie să fie goală, afișarea automată a buffer-ului este interzisă, iar cuvântul dezvoltat trebuie să fie în buffer (acest lucru se poate face prin următoarea linie „)_!cuvânt dezvoltat”). Acest efect este bun după dispariția cuvântului anterior prin „*”.


Un pachet de caractere de control pentru derulare orizontală (linie progresivă).
Pachetul vă permite să organizați o linie de rulare din conținutul unui buffer. Tot ce trebuie să faceți este să plasați linia în buffer și să utilizați caracterul de control pentru a seta direcția de mișcare; șoferul se va ocupa de restul.

„>“ – Defilare automată a conținutului riglei la dreapta(ticker).

“<“ – Автоматический скроллинг содержимого линейки влево (ticker).
Conținutul tamponului nu este modificat. Efectul este nesfârșit (mișcare circulară), niciun caracter nu este returnat prin UART. Îl puteți opri cu simbolul „|“.

„|“ – Opriți defilarea.
Poziția afișajului revine la normal.


Pachet de caractere de control al schimbării verticale.
Acest pachet de efecte vă permite să organizați mai multe efecte interesante, de exemplu, simularea mișcării prin elementele de meniu; afișarea periodică a oricăror informații de serviciu (de exemplu, ora, scoaterea ceasului de jos și apoi scoaterea acestuia de acolo), etc.

„\“ – Deplasare verticală - apariția simbolurilor riglei în sus(apărând în sus – de la spațiul gol la caractere pline). La sfârșitul efectului, simbolul „ este afișat în UART V

„/“ – Deplasare verticală-dispariție a simbolurilor riglei în sus(disparând - de la caractere pline la spațiu gol). La sfârșitul efectului, simbolul „ este afișat în UART V” și afișarea automată a tamponului este dezactivată.

„:“ – Deplasare verticală - apariția simbolurilor riglei în jos(apărând în jos – de la spațiul gol la caracterele complete). La sfârșitul efectului, simbolul „ este afișat în UART V”, afișarea automată a tamponului este activată.

„;“ – Deplasare verticală-dispariție a simbolurilor riglei în jos(dispar în jos - de la caractere pline la spațiu gol). La sfârșitul efectului, simbolul „ este afișat în UART V” și afișarea automată a tamponului este dezactivată.

Iată un exemplu de implementare a mișcării meniului folosind efecte de pachet:

Și acesta este un exemplu de mesaj de informare:


Un pachet de simboluri de control pentru modificarea vitezei efectelor.
Următoarele simboluri modifică viteza efectelor.

„-“ – viteza normală este activată.

„+“ – viteza crescută este activată.

Explicații suplimentare pentru controlul efectelor.

— Toate efectele funcționează independent unul de celălalt. Aceasta înseamnă că puteți rula mai multe efecte simultan! O linie ca " _Start>*;" va șterge tamponul, va scrie cuvântul "START" în el, va începe o linie de rulare la dreapta, în timpul alergării va dispărea segment cu segment și, în plus, va coborî. Folosind diferite combinații, puteți obține efecte complet noi. Experiment!

— Când dați comenzi care se exclud reciproc, de exemplu „<” и “>” – ultimul va funcționa - „>”.

— În timp ce efectele speciale sunt în vigoare, puteți umple tamponul cu cuvinte noi. Ei vor începe imediat să participe la efect.

— Evident, dacă numărul de indicatori este mai mic decât dimensiunea bufferului, atunci vor fi afișate doar ultimele caractere introduse care se încadrează în numărul de indicatori. În caz contrar, dacă tamponul este mai mic decât numărul de indicatori, atunci tamponul pe indicatori se va repeta ciclic.


Firmware pentru indicatoare cu un anod comun (OA)
- Firmware pentru driverul ATtiny13 pentru o linie de indicatori cu 7 segmente. Buffer - 16 caractere. Indicatoare cu un anod comun.
- Firmware pentru driverul ATtiny13 pentru o linie de indicatori cu 7 segmente. Buffer - 32 de caractere. Indicatoare cu un anod comun.

Firmware pentru indicatoare cu catod comun (OK)
- Firmware pentru driverul ATtiny13 pentru o linie de indicatori cu 7 segmente. Buffer - 16 caractere. Indicatoare cu catod comun.
- Firmware pentru driverul ATtiny13 pentru o linie de indicatori cu 7 segmente. Buffer - 32 de caractere. Indicatoare cu catod comun.

Siguranțele pentru toate firmware-urile sunt aceleași
- Fișiere pentru firmware-ul driverului de linie

Dimensiunea tamponului trebuie aleasă cât mai mică posibil. Un buffer mai mic face mai puțin zgomot cu segmentele indicatoare atunci când linia este deplasată și actualizată (acest lucru se aplică numai circuitelor fără indicator care se stinge cu semnalul /OE).

  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva