![]() |
Forum Index : Microcontroller and PC projects : 5x7 Characterset
Author | Message | ||||
halldave![]() Senior Member ![]() Joined: 04/05/2014 Location: AustraliaPosts: 121 |
Have this code, kicking around in my library, may be useful if your programming the 8x8 led matrix's 7 x 5 characters, take note of the kerning value if you want to develop proportional spacing ' 5x7 Character Set with kerning number ' License: use and abuse for whatever you want Data &B00000000,&B00000000,&B00000000,&B00000000,&B00000000,&B000 00000,&B00000000,6 ‘ Space Data &B10000000,&B10000000,&B10000000,&B10000000,&B00000000,&B000 00000,&B10000000,2 ‘ ! DATA &B10100000,&B10100000,&B00000000,&B00000000,&B00000000,&B000 00000,&B00000000,4 ' " DATA &B01010000,&B01010000,&B11111000,&B01010000,&B11111000,&B010 10000,&B01010000,6 ' # DATA &B00100000,&B01111000,&B10100000,&B01110000,&B00101000,&B111 10000,&B00100000,6 ' $ DATA &B11000000,&B11001000,&B00010000,&B00100000,&B01000000,&B100 11000,&B00011000,6 ' % DATA &B01100000,&B10010000,&B10100000,&B01000000,&B10101000,&B100 10000,&B01101000,6 ' & DATA &B11000000,&B01000000,&B10000000,&B00000000,&B00000000,&B000 00000,&B00000000,3 ' ' DATA &B00100000,&B01000000,&B10000000,&B10000000,&B10000000,&B010 00000,&B00100000,4 ' ( DATA &B10000000,&B01000000,&B00100000,&B00100000,&B00100000,&B010 00000,&B10000000,4 ' ) DATA &B00000000,&B00100000,&B10101000,&B01110000,&B10101000,&B001 00000,&B00000000,6 ' * DATA &B00000000,&B00100000,&B00100000,&B11111000,&B00100000,&B001 00000,&B00000000,6 ' + DATA &B00000000,&B00000000,&B00000000,&B00000000,&B11000000,&B010 00000,&B10000000,3 ', DATA &B00000000,&B00000000,&B11111000,&B00000000,&B00000000,&B000 00000,&B00000000,6 ' - DATA &B00000000,&B00000000,&B00000000,&B00000000,&B00000000,&B110 00000,&B11000000,3 ' . DATA &B00000000,&B00001000,&B00010000,&B00100000,&B01000000,&B100 00000,&B00000000,6 ' / DATA &B01110000,&B10001000,&B10011000,&B10101000,&B11001000,&B100 01000,&B01110000,6 ' 0 DATA &B01000000,&B11000000,&B01000000,&B01000000,&B01000000,&B010 00000,&B11100000,4 ' 1 DATA &B01110000,&B10001000,&B00001000,&B00010000,&B00100000,&B010 00000,&B11111000,6 ' 2 DATA &B11111000,&B00010000,&B00100000,&B00010000,&B00001000,&B100 01000,&B01110000,6 ' 3 DATA &B00010000,&B00110000,&B01010000,&B10010000,&B11111000,&B000 10000,&B00010000,6 ' 4 DATA &B11111000,&B10000000,&B11110000,&B00001000,&B00001000,&B100 01000,&B01110000,6 ' 5 DATA &B00110000,&B01000000,&B10000000,&B11110000,&B10001000,&B100 01000,&B01110000,6 ' 6 DATA &B11111000,&B10001000,&B00001000,&B00010000,&B00100000,&B001 00000,&B00100000,6 ' 7 DATA &B01110000,&B10001000,&B10001000,&B01110000,&B10001000,&B100 01000,&B01110000,6 ' 8 DATA &B01110000,&B10001000,&B10001000,&B01111000,&B00001000,&B000 10000,&B01100000,6 ' 9 DATA &B00000000,&B11000000,&B11000000,&B00000000,&B11000000,&B110 00000,&B00000000,3 ' : DATA &B00000000,&B11000000,&B11000000,&B00000000,&B11000000,&B010 00000,&B10000000,3 ' ; DATA &B00010000,&B00100000,&B01000000,&B10000000,&B01000000,&B001 00000,&B00010000,5 ' < DATA &B00000000,&B00000000,&B11111000,&B00000000,&B11111000,&B000 00000,&B00000000,6 ' = DATA &B10000000,&B01000000,&B00100000,&B00010000,&B00100000,&B010 00000,&B10000000,5 ' > DATA &B01110000,&B10001000,&B00001000,&B00010000,&B00100000,&B000 00000,&B00100000,6 ' ? DATA &B01110000,&B10001000,&B00001000,&B01101000,&B10101000,&B101 01000,&B01110000,6 ' @ DATA &B01110000,&B10001000,&B10001000,&B10001000,&B11111000,&B100 01000,&B10001000,6 ' A DATA &B11110000,&B10001000,&B10001000,&B11110000,&B10001000,&B100 01000,&B11110000,6 ' B DATA &B01110000,&B10001000,&B10000000,&B10000000,&B10000000,&B100 01000,&B01110000,6 ' C DATA &B11100000,&B10010000,&B10001000,&B10001000,&B10001000,&B100 10000,&B11100000,6 ' D DATA &B11111000,&B10000000,&B10000000,&B11110000,&B10000000,&B100 00000,&B11111000,6 ' E DATA &B11111000,&B10000000,&B10000000,&B11110000,&B10000000,&B100 00000,&B10000000,6 ' F DATA &B01110000,&B10001000,&B10000000,&B10111000,&B10001000,&B100 01000,&B01111000,6 ' G DATA &B10001000,&B10001000,&B10001000,&B11111000,&B10001000,&B100 01000,&B10001000,6 ' H DATA &B11100000,&B01000000,&B01000000,&B01000000,&B01000000,&B010 00000,&B11100000,4 ' I DATA &B00111000,&B00010000,&B00010000,&B00010000,&B00010000,&B100 10000,&B01100000,6 ' J DATA &B10001000,&B10010000,&B10100000,&B11000000,&B10100000,&B100 10000,&B10001000,6 ' K DATA &B10000000,&B10000000,&B10000000,&B10000000,&B10000000,&B100 00000,&B11111000,6 ' L DATA &B10001000,&B11011000,&B10101000,&B10101000,&B10001000,&B100 01000,&B10001000,6 ' M DATA &B10001000,&B10001000,&B11001000,&B10101000,&B10011000,&B100 01000,&B10001000,6 ' N DATA &B01110000,&B10001000,&B10001000,&B10001000,&B10001000,&B100 01000,&B01110000,6 ' O DATA &B11110000,&B10001000,&B10001000,&B11110000,&B10000000,&B100 00000,&B10000000,6 ' P DATA &B01110000,&B10001000,&B10001000,&B10001000,&B10101000,&B100 10000,&B01101000,6 ' Q DATA &B11110000,&B10001000,&B10001000,&B11110000,&B10100000,&B100 10000,&B10001000,6 ' R DATA &B01111000,&B10000000,&B10000000,&B01110000,&B00001000,&B000 01000,&B11110000,6 ' S DATA &B11111000,&B00100000,&B00100000,&B00100000,&B00100000,&B001 00000,&B00100000,6 ' T DATA &B10001000,&B10001000,&B10001000,&B10001000,&B10001000,&B100 01000,&B01110000,6 ' U DATA &B10001000,&B10001000,&B10001000,&B10001000,&B10001000,&B010 10000,&B00100000,6 ' V DATA &B10001000,&B10001000,&B10001000,&B10101000,&B10101000,&B101 01000,&B01010000,6 ' W DATA &B10001000,&B10001000,&B01010000,&B00100000,&B01010000,&B100 01000,&B10001000,6 ' X DATA &B10001000,&B10001000,&B10001000,&B01010000,&B00100000,&B001 00000,&B00100000,6 ' Y DATA &B11111000,&B00001000,&B00010000,&B00100000,&B01000000,&B100 00000,&B11111000,6 ' Z DATA &B11100000,&B10000000,&B10000000,&B10000000,&B10000000,&B100 00000,&B11100000,4 ' [ DATA &B00000000,&B10000000,&B01000000,&B00100000,&B00010000,&B000 01000,&B00000000,6 ' \ DATA &B11100000,&B00100000,&B00100000,&B00100000,&B00100000,&B001 00000,&B11100000,4 ' ] DATA &B00100000,&B01010000,&B10001000,&B00000000,&B00000000,&B000 00000,&B00000000,6 ' ^ DATA &B00000000,&B00000000,&B00000000,&B00000000,&B00000000,&B000 00000,&B11111000,6 ' _ DATA &B10000000,&B01000000,&B00100000,&B00000000,&B00000000,&B000 00000,&B00000000,4 ' ` DATA &B00000000,&B00000000,&B01110000,&B00001000,&B01111000,&B100 01000,&B01111000,6 ' a DATA &B10000000,&B10000000,&B10110000,&B11001000,&B10001000,&B100 01000,&B11110000,6 ' b DATA &B00000000,&B00000000,&B01110000,&B10001000,&B10000000,&B100 01000,&B01110000,6 ' c DATA &B00001000,&B00001000,&B01101000,&B10011000,&B10001000,&B100 01000,&B01111000,6 ' d DATA &B00000000,&B00000000,&B01110000,&B10001000,&B11111000,&B100 00000,&B01110000,6 ' e DATA &B00110000,&B01001000,&B01000000,&B11100000,&B01000000,&B010 00000,&B01000000,6 ' f DATA &B00000000,&B01111000,&B10001000,&B10001000,&B01111000,&B000 01000,&B01110000,6 ' g DATA &B10000000,&B10000000,&B10110000,&B11001000,&B10001000,&B100 01000,&B10001000,6 ' h DATA &B01000000,&B00000000,&B11000000,&B01000000,&B01000000,&B010 00000,&B11100000,4 ' i DATA &B00010000,&B00000000,&B00110000,&B00010000,&B00010000,&B100 10000,&B01100000,5 ' j DATA &B10000000,&B10000000,&B10010000,&B10100000,&B11000000,&B101 00000,&B10010000,5 ' k DATA &B11000000,&B01000000,&B01000000,&B01000000,&B01000000,&B010 00000,&B11100000,4 ' l DATA &B00000000,&B00000000,&B11010000,&B10101000,&B10101000,&B100 01000,&B10001000,6 ' m DATA &B00000000,&B00000000,&B10110000,&B11001000,&B10001000,&B100 01000,&B10001000,6 ' n DATA &B00000000,&B00000000,&B01110000,&B10001000,&B10001000,&B100 01000,&B01110000,6 ' o DATA &B00000000,&B00000000,&B11110000,&B10001000,&B11110000,&B100 00000,&B10000000,6 ' p DATA &B00000000,&B00000000,&B01101000,&B10011000,&B01111000,&B000 01000,&B00001000,6 ' q DATA &B00000000,&B00000000,&B10110000,&B11001000,&B10000000,&B100 00000,&B10000000,6 ' r DATA &B00000000,&B00000000,&B01110000,&B10000000,&B01110000,&B000 01000,&B11110000,6 ' s DATA &B01000000,&B01000000,&B11100000,&B01000000,&B01000000,&B010 01000,&B00110000,6 ' t DATA &B00000000,&B00000000,&B10001000,&B10001000,&B10001000,&B100 11000,&B01101000,6 ' u DATA &B00000000,&B00000000,&B10001000,&B10001000,&B10001000,&B010 10000,&B00100000,6 ' v DATA &B00000000,&B00000000,&B10001000,&B10101000,&B10101000,&B101 01000,&B01010000,6 ' w DATA &B00000000,&B00000000,&B10001000,&B01010000,&B00100000,&B010 10000,&B10001000,6 ' x DATA &B00000000,&B00000000,&B10001000,&B10001000,&B01111000,&B000 01000,&B01110000,6 ' y DATA &B00000000,&B00000000,&B11111000,&B00010000,&B00100000,&B010 00000,&B11111000,6 ' z DATA &B00100000,&B01000000,&B01000000,&B10000000,&B01000000,&B010 00000,&B00100000,4 ' { DATA &B10000000,&B10000000,&B10000000,&B10000000,&B10000000,&B100 00000,&B10000000,2 ' | DATA &B10000000,&B01000000,&B01000000,&B00100000,&B01000000,&B010 00000,&B10000000,4 ' } DATA &B00000000,&B00000000,&B00000000,&B01101000,&B10010000,&B000 00000,&B00000000,6 ' ~ DATA &B01100000,&B10010000,&B10010000,&B01100000,&B00000000,&B000 00000,&B00000000,5 ' 7F |
||||
halldave![]() Senior Member ![]() Joined: 04/05/2014 Location: AustraliaPosts: 121 |
2014-08-18_001838_charset.zip take note the 6th data value seems to have a space in the code above when publishing - I have included a zip by the way a kerning value example is if it is 6 then use 6 columns, if its 4, then 4 columns etx |
||||
viscomjim Guru ![]() Joined: 08/01/2014 Location: United StatesPosts: 925 |
Hi David, I am assuming that this is for use with the max7219 driven 8x8 led matrix? If so, can you post any code as to how the table is implemented using a uMite? Thanks!!!! |
||||
halldave![]() Senior Member ![]() Joined: 04/05/2014 Location: AustraliaPosts: 121 |
Jim, Intention was to use this character set for scrolling display using max7219 8x8 leds about 10 of them joined together I haven't got any further as yet, may get back to it though in next couple of months once I finish couple of my projects Have a look at the following arduino site, it would be great if someone could create a library of routines for us all max7219 commands like matrix "The Quick Brown Brown Fox...", Scroll matrix "Hello World",Flash etc 7Sement "57.66" 7Segment "The Quick Brown Brown Fox...", Scroll" ' I've seen a character set for 7-segment somewhere on the web regards David |
||||
viscomjim Guru ![]() Joined: 08/01/2014 Location: United StatesPosts: 925 |
Hi, just hooked up a max7219 8x8 led matrix to spi on WW44 board. So far so good. I used one of the data files in this thread for the letter "A" and turning on and off individual led in the matrix, kind of fun to learn, especially when it works. So my question is to those that have used these for a project... I am using MMedit and whenever I load a new program into the uMite, the matrix does some weird random things during the loading process. Not a big deal but Have you noticed this also? Just a note, I am amazed at how fast these work. Granted I am only playing with one 64 led unit, but at spi speed at 10mhz and cs pulse at .1, these things and the uMite really rock. |
||||
halldave![]() Senior Member ![]() Joined: 04/05/2014 Location: AustraliaPosts: 121 |
Jim, Glad you could found some use for the data. If you have something working and don't mind sharing can you post your code. Im intrigued how SPI works as I have never attempted it or used it regards David |
||||
viscomjim Guru ![]() Joined: 08/01/2014 Location: United StatesPosts: 925 |
Hi David, Here is a bit of playing around to get myself familiar with this. Hope this gives you a bit of insight on the MAX7219 with 8x8 led matrix. Haven't had much time to play but will continue to learn. 'MAX7219 routines... 'Basically sending 16 bits of data over spi to display 'Pulse CS line after sending the 16 bits 'The first byte is the register and second byte is data (check data sheet) 'Registers 1 - 8 are the 8 rows (first byte) and the Data is 0 - 255 to light 'the appropriate led(s) in that row (second byte) 'Must initialize the MAX7219 first!!! Just un-comment subs to play. 'This is just a beginning to get a handle on this. Hopefully more to come... 'ViscomJim - The Back Shed CPU 48 SPI OPEN 10000000, 3, 16 CS=13 SetPin CS,DOUT DIM L(8) INIT7219 'CLEARDISP 'LINES 'FILLALL 'COUNTALL 'HEARTBEAT 'CLEARDISP 'LETTER 'TEST 'SELDOT END Sub INIT7219 Q=SPI(&H0C00): Pulse CS,1 'SHUTDOWN Q=SPI(&H0900): Pulse CS,1 'NO BCD DECODE Q=SPI(&H0A0F): Pulse CS,1 '100% INTENSITY (0-F) Q=SPI(&H0B07): Pulse CS,1 'SCAN LIMIT (0-7) Q=SPI(&H0F00): Pulse CS,1 'DISPLAY TEST OFF Q=SPI(&H0C01): Pulse CS,1 'NORMAL End Sub SUB LINES FOR A = 1 TO 8 Q=SPI(A*256 + &HFF): Pulse CS,.1 PAUSE 20 Q=SPI(A*256): Pulse CS,.1 NEXT A END SUB Sub CLEARDISP For I = 1 To 8 Q=SPI(I*256): Pulse CS,.1 Next I End Sub Sub FILLALL For I = 1 To 8 Q=SPI(I*256 + &HFF): Pulse CS,.1 Next I End Sub Sub TEST FOR A = 1 TO 10 Q=SPI(&H0F00): Pulse CS,.1 Pause 100 Q=SPI(&H0F01): Pulse CS,.1 Pause 100 NEXT A Q=SPI(&H0F00): Pulse CS,.1 End Sub Sub COUNTALL L = TIMER For X = 1 To 8 For Y = 0 To 255 Q=SPI(X*256+Y): Pulse CS,.1 Next Y Next X PRINT "THAT TOOK "; (TIMER - L)/1000;" SECONDS" end SUB SUB HEARTBEAT FOR Z = 1 TO 5 FOR X = 0 TO 15 Q=SPI(&H0A00 + X):Pulse CS,.1 PAUSE 35 NEXT X FOR X = 15 TO 0 STEP -1 Q=SPI(&H0A00 + X):Pulse CS,.1 PAUSE 35 NEXT X NEXT Z Q=SPI(&H0A0F):Pulse CS,.1 End Sub SUB SELDOT INPUT "WHICH ROW ";R INPUT "WHICH COL VALUE";C Q = SPI(R*256 + C):PULSE CS,.1 END SUB SUB LETTER DATA &B01110000, &B10001000, &B10001000, &B10001000, &B11111000, &B10001000, &B10001000, &B00000000 FOR A = 1 TO 8 READ L(A) NEXT A FOR X = 1 TO 8 Q=SPI(X*256+L(X)):PULSE CS,.1 NEXT X END SUB |
||||
halldave![]() Senior Member ![]() Joined: 04/05/2014 Location: AustraliaPosts: 121 |
I had a little play at lunchtime whilst I was dialled into a phone conference 'MAX7219 routines... 'Basically sending 16 bits of data over spi to display 'Pulse CS line after sending the 16 bits 'The first byte is the register and second byte is data (check data sheet) 'Registers 1 - 8 are the 8 rows (first byte) and the Data is 0 - 255 to light 'the appropriate led(s) in that row (second byte) 'Must initialize the MAX7219 first!!! Just un-comment subs to play. 'This is just a beginning to get a handle on this. Hopefully more to come... 'ViscomJim - The Back Shed ' For 28 pin chips pin 25 will become the clock output, pin 14 will be the data in (MISO) and pin 3 will become ' the data out (MOSI). For 44 pin chips pin 14 is the clock, pin 41 the data in and pin 20 the data out. ' When the SPI CLOSE command is used these pins will be returned to a "not configured" state. They can then ' be configured as per normal using SETPIN. ' An SPI enable signal is often used to select a slave and "prime" it for data transfer. This signal is not generated ' by this function and (if required) should be generated using the PIN function on another pin. CS=2 SetPin CS,DOUT CPU 48 SPI OPEN 10000000, 3, 16 dim spi.character(127,9) spi.maxtrix.intialise spi.maxtrix.LoadCharSet spi.maxtrix.Clear 'pause 1000 spi.maxtrix.Lines ' pause 10000 spi.maxtrix.FillAll 'pause 10000 spi.maxtrix.HeartBeat 'pause 10000 spi.matrix.print "The Quick Brown Fox Jumped over the lazy dog.",1000,0,0 spi.maxtrix.Clear ' now backwards spi.matrix.print "Hello World.",1000,1,0 ' now backwards and quicker spi.matrix.print "9876543210",500,1,0 ' now backwards spi.matrix.print "9876543210",50,1,0 END SUB spi.maxtrix.Lines ' FOR Counter = 1 TO 8 spi.io=SPI(Counter*256 + &HFF): Pulse CS,.1 PAUSE 20 spi.io=SPI(Counter*256): Pulse CS,.1 NEXT Counter END SUB Sub spi.maxtrix.FillAll For Counter = 1 To 8 spi.io=SPI(Counter*256 + &HFF): Pulse CS,.1 Next Counter End Sub Sub spi.maxtrix.Test FOR Counter = 1 TO 10 spi.io=SPI(&H0F00): Pulse CS,.1 Pause 100 spi.io=SPI(&H0F01): Pulse CS,.1 Pause 100 NEXT Counter spi.io=SPI(&H0F00): Pulse CS,.1 End Sub Sub spi.maxtrix.BenchMark spi.StartTime = TIMER For Counter1 = 1 To 8 For Counter2 = 0 To 255 spi.io=SPI(Counter1*256+Counter2): Pulse CS,.1 Next Counter2 Next Counter1 spi.EndTime = TIMER PRINT "Spi.Max7219.BenchMark Time="; (spi.StartTime - spi.EndTime)/1000;" Seconds" end SUB SUB spi.maxtrix.HeartBeat FOR Counter1 = 1 TO 5 FOR Counter2 = 0 TO 15 spi.io=SPI(&H0A00 + X):Pulse CS,.1 PAUSE 35 NEXT Counter2 FOR Counter2 = 15 TO 0 STEP -1 spi.io=SPI(&H0A00 + X):Pulse CS,.1 PAUSE 35 NEXT Counter2 NEXT Counter1 spi.io=SPI(&H0A0F):Pulse CS,.1 End Sub SUB SELDOT INPUT "WHICH ROW ";R INPUT "WHICH COL VALUE";C Q = SPI(R*256 + C):PULSE CS,.1 END SUB Sub spi.maxtrix.Clear For Counter = 1 To 8 spi.io=SPI(Counter*256): Pulse CS,.1 Next Counter End Sub sub spi.matrix.print xString$,xSpeed,xDirection,xKerning ' Ignore Kerning on or of ' Need to code around proportial spacing ' Still to do link several if xDirection = 0 then For Counter = 1 to len(xString$) ' in this example L is the spi.character.asc=ASC(mid$(xString$,Counter,1)) FOR Counter2 = 1 TO 8 spi.io=SPI(Counter2*256+spi.character(spi.character.asc,Coun ter2)):PULSE CS,.1 NEXT Counter2 pause xSpeed Next Counter else For Counter = len(xString$) to 1 step -1 ' in this example L is the spi.character.asc=ASC(mid$(xString$,Counter,1)) FOR Counter2 = 1 TO 8 spi.io=SPI(Counter2*256+spi.character(spi.character.asc,Coun ter2)):PULSE CS,.1 NEXT Counter2 pause xSpeed Next Counter endif END SUB end sub ' ************************************************************ ************ Sub spi.maxtrix.intialise spi.io=SPI(&H0C00): Pulse CS,1 'SHUTDOWN spi.io=SPI(&H0900): Pulse CS,1 'NO BCD DECODE spi.io=SPI(&H0A0F): Pulse CS,1 '100% INTENSITY (0-F) spi.io=SPI(&H0B07): Pulse CS,1 'SCAN LIMIT (0-7) spi.io=SPI(&H0F00): Pulse CS,1 'DISPLAY TEST OFF spi.io=SPI(&H0C01): Pulse CS,1 'NORMAL end sub ' ************************************************************ ************ Sub spi.maxtrix.LoadCharSet ' start at 32 ' The data format is as follows ' &B01110000,&B10001000,&B00001000,&B01101000,&B10101000,&B101 01000,&B01110000,&B00000000,6 ' @ ' 8 binary rows that represent on / off and 1 kerning value ' .XXX.... ' X...X... ' ....X... ' .XX.X... ' X.X.X... ' X.X.X... ' .XXX.... ' ........ Data &B00000000,&B00000000,&B00000000,&B00000000,&B00000000,&B000 00000,&B00000000,&B00000000,6 '‘ Space Data &B10000000,&B10000000,&B10000000,&B10000000,&B00000000,&B000 00000,&B10000000,&B00000000,2 '‘ ! DATA &B10100000,&B10100000,&B00000000,&B00000000,&B00000000,&B000 00000,&B00000000,&B00000000,4 ' " DATA &B01010000,&B01010000,&B11111000,&B01010000,&B11111000,&B010 10000,&B01010000,&B00000000,6 ' # DATA &B00100000,&B01111000,&B10100000,&B01110000,&B00101000,&B111 10000,&B00100000,&B00000000,6 ' $ DATA &B11000000,&B11001000,&B00010000,&B00100000,&B01000000,&B100 11000,&B00011000,&B00000000,6 ' % DATA &B01100000,&B10010000,&B10100000,&B01000000,&B10101000,&B100 10000,&B01101000,&B00000000,6 ' & DATA &B11000000,&B01000000,&B10000000,&B00000000,&B00000000,&B000 00000,&B00000000,&B00000000,3 ' ' DATA &B00100000,&B01000000,&B10000000,&B10000000,&B10000000,&B010 00000,&B00100000,&B00000000,4 ' ( DATA &B10000000,&B01000000,&B00100000,&B00100000,&B00100000,&B010 00000,&B10000000,&B00000000,4 ' ) DATA &B00000000,&B00100000,&B10101000,&B01110000,&B10101000,&B001 00000,&B00000000,&B00000000,6 ' * DATA &B00000000,&B00100000,&B00100000,&B11111000,&B00100000,&B001 00000,&B00000000,&B00000000,6 ' + DATA &B00000000,&B00000000,&B00000000,&B00000000,&B11000000,&B010 00000,&B10000000,&B00000000,3 ', DATA &B00000000,&B00000000,&B11111000,&B00000000,&B00000000,&B000 00000,&B00000000,&B00000000,6 ' - DATA &B00000000,&B00000000,&B00000000,&B00000000,&B00000000,&B110 00000,&B11000000,&B00000000,3 ' . DATA &B00000000,&B00001000,&B00010000,&B00100000,&B01000000,&B100 00000,&B00000000,&B00000000,6 ' / DATA &B01110000,&B10001000,&B10011000,&B10101000,&B11001000,&B100 01000,&B01110000,&B00000000,6 ' 0 DATA &B01000000,&B11000000,&B01000000,&B01000000,&B01000000,&B010 00000,&B11100000,&B00000000,4 ' 1 DATA &B01110000,&B10001000,&B00001000,&B00010000,&B00100000,&B010 00000,&B11111000,&B00000000,6 ' 2 DATA &B11111000,&B00010000,&B00100000,&B00010000,&B00001000,&B100 01000,&B01110000,&B00000000,6 ' 3 DATA &B00010000,&B00110000,&B01010000,&B10010000,&B11111000,&B000 10000,&B00010000,&B00000000,6 ' 4 DATA &B11111000,&B10000000,&B11110000,&B00001000,&B00001000,&B100 01000,&B01110000,&B00000000,6 ' 5 DATA &B00110000,&B01000000,&B10000000,&B11110000,&B10001000,&B100 01000,&B01110000,&B00000000,6 ' 6 DATA &B11111000,&B10001000,&B00001000,&B00010000,&B00100000,&B001 00000,&B00100000,&B00000000,6 ' 7 DATA &B01110000,&B10001000,&B10001000,&B01110000,&B10001000,&B100 01000,&B01110000,&B00000000,6 ' 8 DATA &B01110000,&B10001000,&B10001000,&B01111000,&B00001000,&B000 10000,&B01100000,&B00000000,6 ' 9 DATA &B00000000,&B11000000,&B11000000,&B00000000,&B11000000,&B110 00000,&B00000000,&B00000000,3 ' : DATA &B00000000,&B11000000,&B11000000,&B00000000,&B11000000,&B010 00000,&B10000000,&B00000000,3 ' ; DATA &B00010000,&B00100000,&B01000000,&B10000000,&B01000000,&B001 00000,&B00010000,&B00000000,5 ' < DATA &B00000000,&B00000000,&B11111000,&B00000000,&B11111000,&B000 00000,&B00000000,&B00000000,6 ' = DATA &B10000000,&B01000000,&B00100000,&B00010000,&B00100000,&B010 00000,&B10000000,&B00000000,5 ' > DATA &B01110000,&B10001000,&B00001000,&B00010000,&B00100000,&B000 00000,&B00100000,&B00000000,6 ' ? DATA &B01110000,&B10001000,&B00001000,&B01101000,&B10101000,&B101 01000,&B01110000,&B00000000,6 ' @ DATA &B01110000,&B10001000,&B10001000,&B10001000,&B11111000,&B100 01000,&B10001000,&B00000000,6 ' A DATA &B11110000,&B10001000,&B10001000,&B11110000,&B10001000,&B100 01000,&B11110000,&B00000000,6 ' B DATA &B01110000,&B10001000,&B10000000,&B10000000,&B10000000,&B100 01000,&B01110000,&B00000000,6 ' C DATA &B11100000,&B10010000,&B10001000,&B10001000,&B10001000,&B100 10000,&B11100000,&B00000000,6 ' D DATA &B11111000,&B10000000,&B10000000,&B11110000,&B10000000,&B100 00000,&B11111000,&B00000000,6 ' E DATA &B11111000,&B10000000,&B10000000,&B11110000,&B10000000,&B100 00000,&B10000000,&B00000000,6 ' F DATA &B01110000,&B10001000,&B10000000,&B10111000,&B10001000,&B100 01000,&B01111000,&B00000000,6 ' G DATA &B10001000,&B10001000,&B10001000,&B11111000,&B10001000,&B100 01000,&B10001000,&B00000000,6 ' H DATA &B11100000,&B01000000,&B01000000,&B01000000,&B01000000,&B010 00000,&B11100000,&B00000000,4 ' I DATA &B00111000,&B00010000,&B00010000,&B00010000,&B00010000,&B100 10000,&B01100000,&B00000000,6 ' J DATA &B10001000,&B10010000,&B10100000,&B11000000,&B10100000,&B100 10000,&B10001000,&B00000000,6 ' K DATA &B10000000,&B10000000,&B10000000,&B10000000,&B10000000,&B100 00000,&B11111000,&B00000000,6 ' L DATA &B10001000,&B11011000,&B10101000,&B10101000,&B10001000,&B100 01000,&B10001000,&B00000000,6 ' M DATA &B10001000,&B10001000,&B11001000,&B10101000,&B10011000,&B100 01000,&B10001000,&B00000000,6 ' N DATA &B01110000,&B10001000,&B10001000,&B10001000,&B10001000,&B100 01000,&B01110000,&B00000000,6 ' O DATA &B11110000,&B10001000,&B10001000,&B11110000,&B10000000,&B100 00000,&B10000000,&B00000000,6 ' P DATA &B01110000,&B10001000,&B10001000,&B10001000,&B10101000,&B100 10000,&B01101000,&B00000000,6 ' Q DATA &B11110000,&B10001000,&B10001000,&B11110000,&B10100000,&B100 10000,&B10001000,&B00000000,6 ' R DATA &B01111000,&B10000000,&B10000000,&B01110000,&B00001000,&B000 01000,&B11110000,&B00000000,6 ' S DATA &B11111000,&B00100000,&B00100000,&B00100000,&B00100000,&B001 00000,&B00100000,&B00000000,6 ' T DATA &B10001000,&B10001000,&B10001000,&B10001000,&B10001000,&B100 01000,&B01110000,&B00000000,6 ' U DATA &B10001000,&B10001000,&B10001000,&B10001000,&B10001000,&B010 10000,&B00100000,&B00000000,6 ' V DATA &B10001000,&B10001000,&B10001000,&B10101000,&B10101000,&B101 01000,&B01010000,&B00000000,6 ' W DATA &B10001000,&B10001000,&B01010000,&B00100000,&B01010000,&B100 01000,&B10001000,&B00000000,6 ' X DATA &B10001000,&B10001000,&B10001000,&B01010000,&B00100000,&B001 00000,&B00100000,&B00000000,6 ' Y DATA &B11111000,&B00001000,&B00010000,&B00100000,&B01000000,&B100 00000,&B11111000,&B00000000,6 ' Z DATA &B11100000,&B10000000,&B10000000,&B10000000,&B10000000,&B100 00000,&B11100000,&B00000000,4 ' [ DATA &B00000000,&B10000000,&B01000000,&B00100000,&B00010000,&B000 01000,&B00000000,&B00000000,6 ' \ DATA &B11100000,&B00100000,&B00100000,&B00100000,&B00100000,&B001 00000,&B11100000,&B00000000,4 ' ] DATA &B00100000,&B01010000,&B10001000,&B00000000,&B00000000,&B000 00000,&B00000000,&B00000000,6 ' ^ DATA &B00000000,&B00000000,&B00000000,&B00000000,&B00000000,&B000 00000,&B11111000,&B00000000,6 ' _ DATA &B10000000,&B01000000,&B00100000,&B00000000,&B00000000,&B000 00000,&B00000000,&B00000000,4 ' ` DATA &B00000000,&B00000000,&B01110000,&B00001000,&B01111000,&B100 01000,&B01111000,&B00000000,6 ' a DATA &B10000000,&B10000000,&B10110000,&B11001000,&B10001000,&B100 01000,&B11110000,&B00000000,6 ' b DATA &B00000000,&B00000000,&B01110000,&B10001000,&B10000000,&B100 01000,&B01110000,&B00000000,6 ' c DATA &B00001000,&B00001000,&B01101000,&B10011000,&B10001000,&B100 01000,&B01111000,&B00000000,6 ' d DATA &B00000000,&B00000000,&B01110000,&B10001000,&B11111000,&B100 00000,&B01110000,&B00000000,6 ' e DATA &B00110000,&B01001000,&B01000000,&B11100000,&B01000000,&B010 00000,&B01000000,&B00000000,6 ' f DATA &B00000000,&B01111000,&B10001000,&B10001000,&B01111000,&B000 01000,&B01110000,&B00000000,6 ' g DATA &B10000000,&B10000000,&B10110000,&B11001000,&B10001000,&B100 01000,&B10001000,&B00000000,6 ' h DATA &B01000000,&B00000000,&B11000000,&B01000000,&B01000000,&B010 00000,&B11100000,&B00000000,4 ' i DATA &B00010000,&B00000000,&B00110000,&B00010000,&B00010000,&B100 10000,&B01100000,&B00000000,5 ' j DATA &B10000000,&B10000000,&B10010000,&B10100000,&B11000000,&B101 00000,&B10010000,&B00000000,5 ' k DATA &B11000000,&B01000000,&B01000000,&B01000000,&B01000000,&B010 00000,&B11100000,&B00000000,4 ' l DATA &B00000000,&B00000000,&B11010000,&B10101000,&B10101000,&B100 01000,&B10001000,&B00000000,6 ' m DATA &B00000000,&B00000000,&B10110000,&B11001000,&B10001000,&B100 01000,&B10001000,&B00000000,6 ' n DATA &B00000000,&B00000000,&B01110000,&B10001000,&B10001000,&B100 01000,&B01110000,&B00000000,6 ' o DATA &B00000000,&B00000000,&B11110000,&B10001000,&B11110000,&B100 00000,&B10000000,&B00000000,6 ' p DATA &B00000000,&B00000000,&B01101000,&B10011000,&B01111000,&B000 01000,&B00001000,&B00000000,6 ' q DATA &B00000000,&B00000000,&B10110000,&B11001000,&B10000000,&B100 00000,&B10000000,&B00000000,6 ' r DATA &B00000000,&B00000000,&B01110000,&B10000000,&B01110000,&B000 01000,&B11110000,&B00000000,6 ' s DATA &B01000000,&B01000000,&B11100000,&B01000000,&B01000000,&B010 01000,&B00110000,&B00000000,6 ' t DATA &B00000000,&B00000000,&B10001000,&B10001000,&B10001000,&B100 11000,&B01101000,&B00000000,6 ' u DATA &B00000000,&B00000000,&B10001000,&B10001000,&B10001000,&B010 10000,&B00100000,&B00000000,6 ' v DATA &B00000000,&B00000000,&B10001000,&B10101000,&B10101000,&B101 01000,&B01010000,&B00000000,6 ' w DATA &B00000000,&B00000000,&B10001000,&B01010000,&B00100000,&B010 10000,&B10001000,&B00000000,6 ' x DATA &B00000000,&B00000000,&B10001000,&B10001000,&B01111000,&B000 01000,&B01110000,&B00000000,6 ' y DATA &B00000000,&B00000000,&B11111000,&B00010000,&B00100000,&B010 00000,&B11111000,&B00000000,6 ' z DATA &B00100000,&B01000000,&B01000000,&B10000000,&B01000000,&B010 00000,&B00100000,&B00000000,4 ' { DATA &B10000000,&B10000000,&B10000000,&B10000000,&B10000000,&B100 00000,&B10000000,&B00000000,2 ' | DATA &B10000000,&B01000000,&B01000000,&B00100000,&B01000000,&B010 00000,&B10000000,&B00000000,4 ' } DATA &B00000000,&B00000000,&B00000000,&B01101000,&B10010000,&B000 00000,&B00000000,&B00000000,6 ' ~ DATA &B01100000,&B10010000,&B10010000,&B01100000,&B00000000,&B000 00000,&B00000000,&B00000000,5 ' 7F for Counter1 = 32 to 127 For Counter2 = 1 to 9 Read spi.character(Counter1, Counter2) Next Counter2 Next Counter1 end sub |
||||
WhiteWizzard Guru ![]() Joined: 05/04/2013 Location: United KingdomPosts: 2927 |
@viscomjim - yes - I get this too. Typically all 64 LEDs turn on at full brightness . . . Note also: If you are driving the MAX7219's 5v from a USB-to-Serial converter then when using multiple Matrices then you run the risk of hitting the 5v supply current limit resulting in the MicroMite resetting when trying to send code from MMEdit (all LEDs on at full brightness). Point is, drive multiple LED matrix's from a capable power supply to eliminate random programming results. ![]() I am driving 5 of these Matrixe units in my GPS clock. Got the front panel done so its ready for a photo. Now working on a RF link for the clock. This is using a pair of Hope RFM12B's. At the Tx end, there is the GPS receiver (with active antenna), a temp sensor, a light sensor, and a humidity sensor. This is to be mounted in a position close to a window to ensure 100% GPS reliability. Then data is gathered from all these sensors and sent as a brief message on 868MHz. This allows me to have multiple clocks around the house, each with a RF receive picking up the GPS time + outside temp etc. This will then form the basis of an automated home automation system. Will also be useful for other people (and maybe Geoff) to understand how to use the Hope RF TRx's with a MicroMite (they are difficult to program due to lack of good data/examples - BUT once mastered they are fantastically reliable units). WW |
||||
viscomjim Guru ![]() Joined: 08/01/2014 Location: United StatesPosts: 925 |
Hi, David, I haven't had time to play with your code yet but I do have a couple of questions... 1 - The 6 column of data still has the space in it. Will this work or does the space have to be removed? 2 - Does the scrolling work across 2 or more displays spi daisy chained? 3- spi data in on uMite is not needed with these, so you have an extra pin for whatever. Also, somewhere in one of the threads, I believe the apple remote one, WW mentioned something to the effect of using individual CS for each matrix instead of the daisy chaining for speed's sake. Something to look at when time permits. Also, in the case of spi daisy chaining, I noticed in the data sheet that you can send a no op to skip over displays. More to play with. Your code looks like fun, can't wait to load it. Another uMite bit of coolness. WW - I am running the 5v from a separate supply for that exact reason. Can't wait to see your project! The data sheet also says min. 3.5 v for logic high, however it seems to work very well at 3.3v from uMite. Also your apple remote code is getting plenty of use here. I will post details soon. Thanks again. Edit, I take back the info on spi in, even though it isn't used, it will still be tied up when using the spi function. Wake up Jim!!! |
||||
halldave![]() Senior Member ![]() Joined: 04/05/2014 Location: AustraliaPosts: 121 |
1. The space seems to be a bug when publishing the code to TBS 2. I tried the code when I got home, I only have 1 Matrix and this is the first time I've ever tried anything SPI, however spi.matrix.print "blahh", xSpeed,xDirection,xKerning e.g. spi.matrix.print "Hello World",1000,1,1 works well, I will order a couple more, the two three weeks will give me time to complete my MuP Security code for the MuP Security Plaugin The xSpeed=time displayed on 1 8x8 matrix in ms xDirection=0 ' forward 1=backard xKerning=0 or 1 ' currently not used i was thinking of changing the data format, Hex, and very extensible.allowing for more than 127 fonts (up to 4096) in the set, and support for 7-segment fonts.... watch this space my 10 year old son is busy in an Excel Spreadsheet creating characters / fonts on 8x8.... and 7-segment... other new commands he thought of spi.matrix.intensity 7 ' supports values 0 to 15 i'll probably code spi.7segment library as well in the next several weeks for everyone to use however my focus is on i2c.LED i2c.LCD and i2c.KeyPad libraries.... The biggest challenge is to get the syntax to Match Geoff's MMBasic syntax for LCD and KeyPad to avoid relearning regards David |
||||
![]() |
![]() |
The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2025 |