Vizitator yoan_yoan Postat Decembrie 14, 2010 Partajează Postat Decembrie 14, 2010 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
yo9hnf Postat Decembrie 14, 2010 Partajează Postat Decembrie 14, 2010 Firmware-ul il ai ? http://www.botskool.com/forum/electronics/microcontrollers/led-scrolling-message-using-atmega32dot-matrix Link spre comentariu
PKP98 Postat Mai 3, 2016 Partajează Postat Mai 3, 2016 (editat) 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 Mai 3, 2016 de PKP98 Link spre comentariu
UDAR Postat Mai 3, 2016 Partajează Postat Mai 3, 2016 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
PKP98 Postat Mai 3, 2016 Partajează Postat Mai 3, 2016 Ohoho,am intrat de tot in ceata ,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
UDAR Postat Mai 3, 2016 Partajează Postat Mai 3, 2016 (editat) 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 Mai 3, 2016 de UDAR Link spre comentariu
one Postat Mai 4, 2016 Partajează Postat Mai 4, 2016 (editat) 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 Mai 4, 2016 de one Link spre comentariu
PKP98 Postat Mai 4, 2016 Partajează Postat Mai 4, 2016 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 Postat Mai 5, 2016 Partajează Postat Mai 5, 2016 Am inteles... banuiesc ca vrei ceva de genul asta: http://embedded-lab.com/blog/lab-15-scrolling-text-message-on-an-led-dot-matrix-display/ in acest caz ai 5 pini de conectat la atmega, asa cum aici este conectat la PIC. Link spre comentariu
PKP98 Postat Mai 5, 2016 Partajează Postat Mai 5, 2016 (editat) @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 Mai 5, 2016 de PKP98 Link spre comentariu
one Postat Mai 6, 2016 Partajează Postat Mai 6, 2016 (editat) 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 Mai 6, 2016 de one Link spre comentariu
nico_2010 Postat Mai 6, 2016 Partajează Postat Mai 6, 2016 @PKP98: Poate te ajuta asta: http://extremeelectronics.co.in/avr-projects/led-moving-message-display/Nu sunt fan indieni, insa mai au si exemple ce pot fi studiate, chiar fara a fi perfecte. Link spre comentariu
Liviu M Postat Mai 6, 2016 Partajează Postat Mai 6, 2016 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
PKP98 Postat Mai 6, 2016 Partajează Postat Mai 6, 2016 (editat) @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 Mai 6, 2016 de PKP98 Link spre comentariu
PKP98 Postat Iulie 6, 2016 Partajează Postat Iulie 6, 2016 (editat) 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 Iulie 6, 2016 de PKP98 Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum