Sari la conținut
ELFORUM - Forumul electronistilor

afisaj cu matrice de led-uri


Vizitator yoan_yoan

Postări Recomandate

Vizitator yoan_yoan

Salut!Trebuie sa realizez o defilare a unui mesaj pe o matrice de leduri 5x8 . Problema este ca nu stiu cum sa conectez display-ul cu matricea de leduri de microcontrolerul AVR ATMega16.Ca sa fiu mai explicit am urmatoarele componente:microcontroler AVR ATMega 16,matrice de leduri 5x8 Kingbright TC24-11SRWA ,niste tranzistoare BC557C si un circuit integrat ULN2803APG.Am inteles ca mai imi trebuiesc niste rezistente.As avea neaparata nevoie de o schema electrica explicita in care este ilustrata conectarea acestor componente( daca nu chiar cu aceste componente ma multumesc si cu alta schema electrica dar sa fie ceva care sa mearga).Cu partea de programare sper sa ma descurc dar la pana sa ajung acolo am nevoie de o schema electrica functionala.Astept orice propuneri legate de schema ( chiar daca as prefera sa fie una cu componentele mele).Va multumesc!

Link spre comentariu
  • Răspunsuri 18
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • PKP98

    8

  • one

    3

  • XAN77

    2

  • UDAR

    2

Top autori în acest subiect

  • 5 ani mai târziu...

Salutare!

Am o mica intrebare care ma framanta si anume cum sa controlez o matrice.

Asta este schema interna a matricei:

 

Cum fac sa afisez literele A,H,T sau 2,3,4.... Pe "1" pot sa-l afisez ,dar pe "2" cum fac? O sa iasa un dreptunghi daca incerc sa-l fac pe doi.

Vreau sa-mi cumpar 2 sau 3 matrici 5x7 si sa afisez un mesaj pe ele ,ceva de genu https://www.youtube.com/watch?v=Z6Wv3CiSTfo,o sa folosesc niste 74hc595 ,un ULN2003 si un Atmega8.

Se bazeaza cumva pe faptul ca ochiul uman percepe doar 28-29 cadre pe secunda?

Editat de PKP98
Link spre comentariu

Se bazeaza cumva pe faptul ca ochiul uman percepe doar 28-29 cadre pe secunda?

Da!

Doar o linie ( sau coloană ) este activă la un moment dat și vor arde LED-urile de la intersecția ei cu coloanele ( sau liniile ) selectate . Deci , dacă alegi multiplexarea pe linii vei avea nevoie de șapte timpi . În fiecare va arde unul până la cinci  LED-uri selectate . 

Link spre comentariu

Ohoho,am intrat de tot in ceata  :rade: ,presimt ca e destul de greu de facut cea ce vreau eu,nu?

Eu vreau sa le pun in asa fel incat sa obtin o matrice de 5x21 ,adica asa https://www.youtube.com/watch?v=bIeHWHbxGsY.

Nu stiu care e diferenta intre multiplexarea pe linii sau pe coloane,de fapt nu stiu ce inseamna multiplexare,o sa mai caut pe net sa vedem ce gasesc.

Multumesc!

Link spre comentariu

Multiplexare ( în acest context ) înseamnă să aprinzi pe rând câte o linie ( sau coloană ) respectiv LED-urile ( unul sau mai multe ) aferente acelei linii sau coloane  într-o succesiune rapidă și repetată.

 

Hai să luăm un exemplu cu o matrice 7linii x 5coloane pe care vrem să afișăm litera ”A ”. Alegem multiplexarea pe coloane , vom avea deci 5 timpi pentru că avem cinci coloane .

Timpul 1 - activez coloana 1 ( din stânga ) și liniile 2,3,4,5,6,7, ( de sus în jos ) . Se vor aprinde cele șase LED-uri de la intersecții . Durata , să zicem 4 ms.

Timpul 2 - activez coloana 2 și liniile 1 și 4

Timpul 3 - activez coloana 3 și liniile 1 și 4

Timpul 4 - activez coloana 4 și liniile 1 și 4

Timpul 5 - activez coloana 5 și liniile 2,3,4,5,6 și 7

 

Perioada totală ( zisă și de multiplexare ) 5x4 = 20ms . Frecvența de multiplexare 50Hz suficient ca ochiul să nu observe . 

 

 
Editat de UDAR
Link spre comentariu

Daca vrei sa simplifici un pic munca si sa nu iti bati capul cu multiplexarea, iti recomand circuitul MAX7219. Elimini rezistente, tranzistori de comanda, reduci numarul de pini utilizati.

Pe ebay la chinezi se gasesc matrici de led-uri 8x8 cu tot cu MAX7219 (4€ bucata).

 

Altfel, cu multiplexarea nu este o problema, eu am facut un POV Display acum multi ani exclusiv cu circuite din seria 4000 (in afara de EPROM-ul din care citeam textul)  !!!

Asta pentru ca pe vremea aceea led-urile costau destul de mult si am facut doar o coloana de 7.

Sincronizarea afisarii cu rotatia o realizam cu un PLL CD4046.

Apoi cand am inceput sa lucrez cu microcontrollere totul s-a redus la un singur circuit...

Editat de one
Link spre comentariu

Dupa cum am spus vreau sa folosesc un atmega8 si 74hc595,asta din cauza ca vreau sa inteleg mai bine si cum functioneaza un shift register ,vreau sa va spun ca nu am mare experienta nici in programarea uC pana acum cel mai complex proiect este un cub 3x3x3 condus tot de un atmega8,absolut toate jocurile de leduri au fost facute de mine ,mare lucru nu este in acel cod,ceva simplu ,daca vreti il postez ca sa vedeti ce stiu pana acum si ce ar mai trebui sa stiu ca sa pot sa fac acea matrice .Stiu cum lucreaza un shift register ,am vazut ceva tutoriale ,dar nu am unul in realitate ca sa pot sa fac experimente pe el.

Nu stiu ce sa mai zic... nu stiu de ce sa ma apuc sa invat ...

Daca puteti sa-mi spuneti cu ce sa incep as fi recunoscator...

Link spre comentariu

@one multumesc mult pentru link,de mare ajutor.

O sa incerc sa o iau mai usor ,adica initial o sa incerc sa afisez literele alfabetului englezesc in ordine de la A la Z fara acel efect de scrolling ,asta pe o matrice 5x7 sau de cat o fi ,nu conteaza,fac asta deoarece vreau sa ma obisnuiesc cu multiplexarea,apoi sa afisez mesaje simple si abia apoi incerc cu efect de scrolling.

In link-ul postat de @one am gasit aceasta aplicatie http://embedded-lab.com/blog/lab-12-basics-of-led-dot-matrix-display/ si codul necesar pe care l-am inteles in mare parte,dar tot am o nelamurire.

Este multiplexare pe coloane,nu?

Codul:

unsigned short Alphabets[130]={0x7e, 0x09, 0x09, 0x09, 0x7E,  //A                               0x7f, 0x49, 0x49, 0x49, 0x36,  //B                               0x3e, 0x41, 0x41, 0x41, 0x22,  //C                               0x7f, 0x41, 0x41, 0x22, 0x1c,  //D                               0x7f, 0x49, 0x49, 0x49, 0x63,  //E                               0x7f, 0x09, 0x09, 0x09, 0x01,  //F                               0x3e, 0x41, 0x41, 0x49, 0x7a,  //G                               0x7f, 0x08, 0x08, 0x08, 0x7f,  //H                               0x00, 0x41, 0x7f, 0x41, 0x00,  //I                               0x20, 0x40, 0x41, 0x3f, 0x01,  //J                               0x7f, 0x08, 0x14, 0x22, 0x41,  //K                               0x7f, 0x40, 0x40, 0x40, 0x60,  //L                               0x7f, 0x02, 0x04, 0x02, 0x7f,  //M                               0x7f, 0x04, 0x08, 0x10, 0x7f,  //N                               0x3e, 0x41, 0x41, 0x41, 0x3e,  //O                               0x7f, 0x09, 0x09, 0x09, 0x06,  //P                               0x3e, 0x41, 0x51, 0x21, 0x5e,  //Q                               0x7f, 0x09, 0x19, 0x29, 0x46,  //R                               0x46, 0x49, 0x49, 0x49, 0x31,  //S                               0x01, 0x01, 0x7f, 0x01, 0x01,  //T                               0x3f, 0x40, 0x40, 0x40, 0x3f,  //U                               0x1f, 0x20, 0x40, 0x20, 0x1f,  //V                               0x3f, 0x40, 0x30, 0x40, 0x3f,  //W                               0x63, 0x14, 0x08, 0x14, 0x63,  //X                               0x07, 0x08, 0x70, 0x08, 0x07,  //Y                               0x61, 0x51, 0x49, 0x45, 0x43   //Z                               };const unsigned short characters[30]={ 0x24, 0x2A, 0x7f, 0x2A, 0x12, // $ 0x08, 0x14, 0x22, 0x41, 0x00, // < 0x41, 0x22, 0x14, 0x08, 0x00, // > 0x14, 0x14, 0x14, 0x14, 0x14, // = 0x36, 0x49, 0x55, 0x22, 0x50, // & 0x44, 0x3c, 0x04, 0x7c, 0x44, // PI};unsigned short count, column, num, repeat;void main() {TRISB = 0b00000000; // Set PORTB direction to be outputTRISA = 0x00; // Set PORTA direction to be outputPORTB = 0x00; // Turn OFF LEDs on PORTBCMCON = 7 ; // Disable comparatorsADCON1 = 0x0F;  // Disable Analog functionsdo{   // Display 26 alphabets   for (num=0; num<26; num++) {     for (repeat=0; repeat<100; repeat++){      column = 1;      for(count = num*5;count < (num*5+6);count++){        PORTB = Alphabets[count];        PORTA = column;        Delay_ms(1);        column = column<<1;        }     }    }    // Display special characters    for (num=0; num<6; num++) {     for (repeat=0; repeat<100; repeat++){      column = 1;      for(count = num*5;count < (num*5+6);count++){        PORTB = characters[count];        PORTA = column;        Delay_ms(1);        column = column<<1;        }     }    }       } while(1);}

Alphabets[0] este egal cu 0x7e ,nu?

In secventa asta :

for (num=0; num<26; num++) {     for (repeat=0; repeat<100; repeat++){      column = 1;      for(count = num*5;count < (num*5+6);count++){        PORTB = Alphabets[count];        PORTA = column;        Delay_ms(1);        column = column<<1;        }     }    }

Initial num=0,iar count ia valori de la 0 la 5 corect?Deci Alphabets[0]...Alphabets[5] ,dela 0 la 5 sunt 6 valori ,iar eu am doar 5 coloane.

Este corecta aceasta secventa?Nu trebuie modificat acest for in felul urmator ,adica in loc de +6 sa adun 5.

for(count = num*5;count < (num*5+5);count++) 

Multumesc! 

Editat de PKP98
Link spre comentariu
Alphabets[0] este egal cu 0x7e ,nu?

 

Da, corect.

for(count = num*5;count < (num*5+6);count++)

Editorul asta e de tot rahatul, cum naiba ies din citat cu cursorul ?

Ok, a trebuit sa scriu alt post.

 

de la count=a la count<(a+6)  ai 5 iteratii, daca aveai <= atunci erau 6

Editat de one
Link spre comentariu

de la count=a la count<(a+6)  ai 5 iteratii, daca aveai <= atunci erau 6

Daca iei in considerare si count=a, ai 6 iteratii: a, a+1, a+2, a+3, a+4, a+5. PS In fereastra de raspuns rapid, in coltul din stanga sus, langa guma, ai un buton patratos. Daca-l apesi se dezactiveaza formatarile si trece in modul "editor de text", in care poti sa faci ce vrei cu cursorul.

Link spre comentariu

@nico multumesc pentru link ,o sa ma uit peste el.

de la count=a la count<(a+6)  ai 5 iteratii, daca aveai <= atunci erau 6

Tot nu am inteles,sa luam un exemplu .
Daca a=0 =>  for(count=0;count<6;count++) ,deci count o sa ia valorile 0,1,2,3,4,5 si sunt 6 numere,corect?In schimb daca era (a+5) in loc de (a+6) count mergea de la 0 la 4 si erau 5 numere,eu asa stiu de la informatica.
EDIT:Am postat odata cu @Liviu M,deci este cu a+5 ,nu?
Editat de PKP98
Link spre comentariu
  • 1 lună mai târziu...

Salutare!

Nu am mai postat de mult pe aici,am fost ocupat cu scoala,dar acum am terminat.Pana una alta mi-am cumparat tot ce-mi trebuia pentru proiectul asta cu matricea.

Am realizat circuitul si codul pentru ATmega8,am ales multiplexarea pe linii deoarece am luat matrici cu catod comun ,nu cu anod ,nu am fost atent.Deocamdata am folosit doar o matrice(5x7) un ULN2004 si un 595 si iata ce a iesit. http://sendvid.com/wu3rqqzy.

Acum vreau sa pun 4 matrici astfel incat sa formez o matrice de 7x20 ca sa pot face acel efect de scrolling,dar inca ma mai gandesc cum fac acest lucru.

Daca vrea cineva codul pentru acest proiect il primeste prin MP.

Pentru acel efect de scrolling am gasit un cod de unde sa ma inspir este pentru PIC nu pentru ATmega.

Tot secretul este in aceasta linie pe care nu o inteleg  DisplayBuffer[shiftAmount] = (DisplayBuffer[shiftAmount] << shift_step)| (temp >> ((8-shift_step)-scroll*shift_step));

Ma ajutati putin?

Multumesc!

Acesta este codul pentru PIC:

 Project: Scrolling message on LED dot matrix display  MCU: PIC18F2550 @ 48.0 MHz (StartUSB for PIC board)  Copyright @ Rajendra Bhatt  May 16, 2011*/// Define LCD module connections./* sbit Serial_Data at LATC2_bit; sbit SH_Clk at LATC6_bit; sbit ST_Clk at LATC7_bit; sbit CD4017_Clk at LATA2_bit; sbit CD4017_RST at LATA1_bit;  */ sbit Serial_Data at RC2_bit; sbit SH_Clk at RC6_bit; sbit ST_Clk at RC7_bit; sbit CD4017_Clk at RA2_bit; sbit CD4017_RST at RA1_bit;void send_data(unsigned int temp){ unsigned int Mask = 0x0001, t, Flag;  for (t=0; t<16; t++){   Flag = temp & Mask;   if(Flag==0) Serial_Data = 0;   else Serial_Data = 1;   SH_Clk = 1;   SH_Clk = 0;   Mask = Mask << 1;  }  // Apply clock on ST_Clk  ST_Clk = 1;  ST_Clk = 0;}/* CharData is a two dimensional constant array that holds the 8-bit column values of   individual rows for ASCII characters that are to be displayed on a 8x8 matrix format.*/const unsigned short CharData[][8] ={{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},{0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000000, 0b00000100},{0b00001010, 0b00001010, 0b00001010, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},{0b00000000, 0b00001010, 0b00011111, 0b00001010, 0b00011111, 0b00001010, 0b00011111, 0b00001010},{0b00000111, 0b00001100, 0b00010100, 0b00001100, 0b00000110, 0b00000101, 0b00000110, 0b00011100},{0b00011001, 0b00011010, 0b00000010, 0b00000100, 0b00000100, 0b00001000, 0b00001011, 0b00010011},{0b00000110, 0b00001010, 0b00010010, 0b00010100, 0b00001001, 0b00010110, 0b00010110, 0b00001001},{0b00000100, 0b00000100, 0b00000100, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},{0b00000010, 0b00000100, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00000100, 0b00000010},{0b00001000, 0b00000100, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000100, 0b00001000},{0b00010101, 0b00001110, 0b00011111, 0b00001110, 0b00010101, 0b00000000, 0b00000000, 0b00000000},{0b00000000, 0b00000000, 0b00000100, 0b00000100, 0b00011111, 0b00000100, 0b00000100, 0b00000000},{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000110, 0b00000100, 0b00001000},{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00001110, 0b00000000, 0b00000000, 0b00000000},{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000100},{0b00000001, 0b00000010, 0b00000010, 0b00000100, 0b00000100, 0b00001000, 0b00001000, 0b00010000},{0b00001110, 0b00010001, 0b00010011, 0b00010001, 0b00010101, 0b00010001, 0b00011001, 0b00001110},{0b00000100, 0b00001100, 0b00010100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00011111},{0b00001110, 0b00010001, 0b00010001, 0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00011111},{0b00001110, 0b00010001, 0b00000001, 0b00001110, 0b00000001, 0b00000001, 0b00010001, 0b00001110},{0b00010000, 0b00010000, 0b00010100, 0b00010100, 0b00011111, 0b00000100, 0b00000100, 0b00000100},{0b00011111, 0b00010000, 0b00010000, 0b00011110, 0b00000001, 0b00000001, 0b00000001, 0b00011110},{0b00000111, 0b00001000, 0b00010000, 0b00011110, 0b00010001, 0b00010001, 0b00010001, 0b00001110},{0b00011111, 0b00000001, 0b00000001, 0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00010000},{0b00001110, 0b00010001, 0b00010001, 0b00001110, 0b00010001, 0b00010001, 0b00010001, 0b00001110},{0b00001110, 0b00010001, 0b00010001, 0b00001111, 0b00000001, 0b00000001, 0b00000001, 0b00000001},{0b00000000, 0b00000100, 0b00000100, 0b00000000, 0b00000000, 0b00000100, 0b00000100, 0b00000000},{0b00000000, 0b00000100, 0b00000100, 0b00000000, 0b00000000, 0b00000100, 0b00000100, 0b00001000},{0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00001000, 0b00000100, 0b00000010, 0b00000001},{0b00000000, 0b00000000, 0b00000000, 0b00011110, 0b00000000, 0b00011110, 0b00000000, 0b00000000},{0b00010000, 0b00001000, 0b00000100, 0b00000010, 0b00000010, 0b00000100, 0b00001000, 0b00010000},{0b00001110, 0b00010001, 0b00010001, 0b00000010, 0b00000100, 0b00000100, 0b00000000, 0b00000100},{0b00001110, 0b00010001, 0b00010001, 0b00010101, 0b00010101, 0b00010001, 0b00010001, 0b00011110},{0b00001110, 0b00010001, 0b00010001, 0b00010001, 0b00011111, 0b00010001, 0b00010001, 0b00010001},{0b00011110, 0b00010001, 0b00010001, 0b00011110, 0b00010001, 0b00010001, 0b00010001, 0b00011110},{0b00000111, 0b00001000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00001000, 0b00000111},{0b00011100, 0b00010010, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010010, 0b00011100},{0b00011111, 0b00010000, 0b00010000, 0b00011110, 0b00010000, 0b00010000, 0b00010000, 0b00011111},{0b00011111, 0b00010000, 0b00010000, 0b00011110, 0b00010000, 0b00010000, 0b00010000, 0b00010000},{0b00001110, 0b00010001, 0b00010000, 0b00010000, 0b00010111, 0b00010001, 0b00010001, 0b00001110},{0b00010001, 0b00010001, 0b00010001, 0b00011111, 0b00010001, 0b00010001, 0b00010001, 0b00010001},{0b00011111, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00011111},{0b00011111, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00010100, 0b00001000},{0b00010001, 0b00010010, 0b00010100, 0b00011000, 0b00010100, 0b00010010, 0b00010001, 0b00010001},{0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00011111},{0b00010001, 0b00011011, 0b00011111, 0b00010101, 0b00010001, 0b00010001, 0b00010001, 0b00010001},{0b00010001, 0b00011001, 0b00011001, 0b00010101, 0b00010101, 0b00010011, 0b00010011, 0b00010001},{0b00001110, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00001110},{0b00011110, 0b00010001, 0b00010001, 0b00011110, 0b00010000, 0b00010000, 0b00010000, 0b00010000},{0b00001110, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010101, 0b00010011, 0b00001111},{0b00011110, 0b00010001, 0b00010001, 0b00011110, 0b00010100, 0b00010010, 0b00010001, 0b00010001},{0b00001110, 0b00010001, 0b00010000, 0b00001000, 0b00000110, 0b00000001, 0b00010001, 0b00001110},{0b00011111, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100},{0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00001110},{0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00001010, 0b00000100},{0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010101, 0b00010101, 0b00001010},{0b00010001, 0b00010001, 0b00001010, 0b00000100, 0b00000100, 0b00001010, 0b00010001, 0b00010001},{0b00010001, 0b00010001, 0b00001010, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100},{0b00011111, 0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00010000, 0b00011111},{0b00001110, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00001110},{0b00010000, 0b00001000, 0b00001000, 0b00000100, 0b00000100, 0b00000010, 0b00000010, 0b00000001},{0b00001110, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00001110},{0b00000100, 0b00001010, 0b00010001, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00011111},{0b00001000, 0b00000100, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},{0b00000000, 0b00000000, 0b00000000, 0b00001110, 0b00010010, 0b00010010, 0b00010010, 0b00001111},{0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b00011100, 0b00010010, 0b00010010, 0b00011100},{0b00000000, 0b00000000, 0b00000000, 0b00001110, 0b00010000, 0b00010000, 0b00010000, 0b00001110},{0b00000000, 0b00000001, 0b00000001, 0b00000001, 0b00000111, 0b00001001, 0b00001001, 0b00000111},{0b00000000, 0b00000000, 0b00000000, 0b00011100, 0b00010010, 0b00011110, 0b00010000, 0b00001110},{0b00000000, 0b00000011, 0b00000100, 0b00000100, 0b00000110, 0b00000100, 0b00000100, 0b00000100},{0b00000000, 0b00001110, 0b00001010, 0b00001010, 0b00001110, 0b00000010, 0b00000010, 0b00001100},{0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b00011100, 0b00010010, 0b00010010, 0b00010010},{0b00000000, 0b00000000, 0b00000100, 0b00000000, 0b00000100, 0b00000100, 0b00000100, 0b00000100},{0b00000000, 0b00000010, 0b00000000, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00001100},{0b00000000, 0b00010000, 0b00010000, 0b00010100, 0b00011000, 0b00011000, 0b00010100, 0b00010000},{0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00001100},{0b00000000, 0b00000000, 0b00000000, 0b00001010, 0b00010101, 0b00010001, 0b00010001, 0b00010001},{0b00000000, 0b00000000, 0b00000000, 0b00010100, 0b00011010, 0b00010010, 0b00010010, 0b00010010},{0b00000000, 0b00000000, 0b00000000, 0b00001100, 0b00010010, 0b00010010, 0b00010010, 0b00001100},{0b00000000, 0b00011100, 0b00010010, 0b00010010, 0b00011100, 0b00010000, 0b00010000, 0b00010000},{0b00000000, 0b00001110, 0b00010010, 0b00010010, 0b00001110, 0b00000010, 0b00000010, 0b00000001},{0b00000000, 0b00000000, 0b00000000, 0b00001010, 0b00001100, 0b00001000, 0b00001000, 0b00001000},{0b00000000, 0b00000000, 0b00001110, 0b00010000, 0b00001000, 0b00000100, 0b00000010, 0b00011110},{0b00000000, 0b00010000, 0b00010000, 0b00011100, 0b00010000, 0b00010000, 0b00010000, 0b00001100},{0b00000000, 0b00000000, 0b00000000, 0b00010010, 0b00010010, 0b00010010, 0b00010010, 0b00001100},{0b00000000, 0b00000000, 0b00000000, 0b00010001, 0b00010001, 0b00010001, 0b00001010, 0b00000100},{0b00000000, 0b00000000, 0b00000000, 0b00010001, 0b00010001, 0b00010001, 0b00010101, 0b00001010},{0b00000000, 0b00000000, 0b00000000, 0b00010001, 0b00001010, 0b00000100, 0b00001010, 0b00010001},{0b00000000, 0b00000000, 0b00010001, 0b00001010, 0b00000100, 0b00001000, 0b00001000, 0b00010000},{0b00000000, 0b00000000, 0b00000000, 0b00011111, 0b00000010, 0b00000100, 0b00001000, 0b00011111},{0b00000010, 0b00000100, 0b00000100, 0b00000100, 0b00001000, 0b00000100, 0b00000100, 0b00000010},{0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100},{0b00001000, 0b00000100, 0b00000100, 0b00000100, 0b00000010, 0b00000100, 0b00000100, 0b00001000},{0b00000000, 0b00000000, 0b00000000, 0b00001010, 0b00011110, 0b00010100, 0b00000000, 0b00000000}};unsigned int DisplayBuffer[]={0,0,0,0,0,0,0,0};unsigned int speed;short i, l, k, ShiftAmount, scroll, temp, shift_step=1, StringLength;char message[]="SCROLLING MESSAGE ON LED DOT-MATRIX DISPLAY FROM WWW.EMBEDDED-LAB.COM ";char index;void main() { CMCON = 0x07;   // Disable comparators ADCON0 = 0x00; // Select ADC channel AN0 ADCON1 = 0b00001110;  // RA0 as analog input TRISC = 0x00; TRISB = 0xFF; TRISA = 0x01; StringLength = strlen(message) ; do { for (k=0; k<StringLength; k++){  for (scroll=0; scroll<(8/shift_step); scroll++) {   for (ShiftAmount=0; ShiftAmount<8; ShiftAmount++){    index = message[k];    temp = CharData[index-32][ShiftAmount];    DisplayBuffer[ShiftAmount] = (DisplayBuffer[ShiftAmount] << shift_step)| (temp >> ((8-shift_step)-scroll*shift_step));   }  speed = 10+ADC_Read(0)/10;  for(l=0; l<speed;l++){   for (i=0; i<8; i++) {    send_data(DisplayBuffer[i]);    CD4017_Clk = 1;    CD4017_Clk = 0;    Delay_ms(1);   }  // i  CD4017_Rst = 1;  CD4017_Rst = 0;  } // l  } // scroll } // k } while(1);}
Editat de PKP98
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări