Home
JAQForum Ver 20.06
Log In or Join  
Active Topics
Local Time 02:43 08 May 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : 5x7 Characterset

Author Message
halldave

Senior Member

Joined: 04/05/2014
Location: Australia
Posts: 121
Posted: 01:57pm 17 Aug 2014
Copy link to clipboard 
Print this post

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: Australia
Posts: 121
Posted: 02:00pm 17 Aug 2014
Copy link to clipboard 
Print this post

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

Edited by halldave 2014-08-19
 
viscomjim
Guru

Joined: 08/01/2014
Location: United States
Posts: 925
Posted: 03:32am 18 Aug 2014
Copy link to clipboard 
Print this post

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: Australia
Posts: 121
Posted: 03:38am 18 Aug 2014
Copy link to clipboard 
Print this post

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

DavidEdited by halldave 2014-08-19
 
viscomjim
Guru

Joined: 08/01/2014
Location: United States
Posts: 925
Posted: 01:20pm 19 Aug 2014
Copy link to clipboard 
Print this post

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.Edited by viscomjim 2014-08-21
 
halldave

Senior Member

Joined: 04/05/2014
Location: Australia
Posts: 121
Posted: 03:10pm 19 Aug 2014
Copy link to clipboard 
Print this post

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 States
Posts: 925
Posted: 03:42pm 19 Aug 2014
Copy link to clipboard 
Print this post

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: Australia
Posts: 121
Posted: 10:45pm 19 Aug 2014
Copy link to clipboard 
Print this post

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 Kingdom
Posts: 2794
Posted: 12:40am 20 Aug 2014
Copy link to clipboard 
Print this post


  viscomjim said  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?

@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
For everything Micromite visit micromite.org

Direct Email: whitewizzard@micromite.o
 
viscomjim
Guru

Joined: 08/01/2014
Location: United States
Posts: 925
Posted: 02:07am 20 Aug 2014
Copy link to clipboard 
Print this post

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!!!

Edited by viscomjim 2014-08-21
 
halldave

Senior Member

Joined: 04/05/2014
Location: Australia
Posts: 121
Posted: 02:33am 20 Aug 2014
Copy link to clipboard 
Print this post

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


 
Print this page


To reply to this topic, you need to log in.

© JAQ Software 2024