program LichtKrant_6Display
Dim ClockPin as sbit at LATB.4
Latch as sbit at LATB.3
Datapin as sbit at LATB.2
Light as Byte
Col as Byte
Display as Byte
i1 as Byte
j1 as Byte
o1 as Byte
x1 as Byte
y1 as Integer
z1 as Integer
Inhoud as Byte[6]
Str as String[26]
LenStr as Byte
CharX as Char
Index as Byte
Ind1 as Byte
Buffer as Byte[16]
const Font1 As Byte[760] = (
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x18, 0x00, 0x18, 0x18, 0x3c, 0x3c, 0x18, 0x00,
0x00, 0x00, 0x00, 0x00, 0x28, 0x6c, 0x6c, 0x00,
0x6c, 0x6c, 0xfe, 0x6c, 0xfe, 0x6c, 0x6c, 0x00,
0x10, 0x3c, 0x40, 0x38, 0x04, 0x78, 0x10, 0x00,
0x60, 0x66, 0x0c, 0x18, 0x30, 0x66, 0x06, 0x00,
0xfc, 0x66, 0xa6, 0x14, 0x3c, 0x66, 0x3c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x30, 0x00,
0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, 0x00,
0x06, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x06, 0x00,
0x00, 0x6c, 0x38, 0xfe, 0x38, 0x6c, 0x00, 0x00,
0x00, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00, 0x00,
0x06, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00,
0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00,
0x7e, 0x18, 0x18, 0x18, 0x1c, 0x18, 0x18, 0x00,
0x7e, 0x06, 0x0c, 0x30, 0x60, 0x66, 0x3c, 0x00,
0x3c, 0x66, 0x60, 0x38, 0x60, 0x66, 0x3c, 0x00,
0x30, 0x30, 0x7e, 0x32, 0x34, 0x38, 0x30, 0x00,
0x3c, 0x66, 0x60, 0x60, 0x3e, 0x06, 0x7e, 0x00,
0x3c, 0x66, 0x66, 0x3e, 0x06, 0x66, 0x3c, 0x00,
0x18, 0x18, 0x18, 0x30, 0x30, 0x66, 0x7e, 0x00,
0x3c, 0x66, 0x66, 0x3c, 0x66, 0x66, 0x3c, 0x00,
0x3c, 0x66, 0x60, 0x7c, 0x66, 0x66, 0x3c, 0x00,
0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00,
0x0c, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00,
0x60, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x60, 0x00,
0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00,
0x06, 0x0c, 0x18, 0x30, 0x18, 0x0c, 0x06, 0x00,
0x18, 0x00, 0x18, 0x38, 0x60, 0x66, 0x3c, 0x00,
0x00, 0x3c, 0x42, 0x1a, 0x3a, 0x22, 0x1c, 0x00,
0x00, 0x3f, 0x7f, 0x48, 0x48, 0x7f, 0x3f, 0x00,
0x00, 0x36, 0x7f, 0x49, 0x49, 0x7f, 0x7f, 0x00,
0x00, 0x22, 0x63, 0x41, 0x41, 0x7f, 0x3e, 0x00,
0x00, 0x3e, 0x7f, 0x41, 0x41, 0x7f, 0x7f, 0x00,
0x00, 0x41, 0x49, 0x49, 0x49, 0x7f, 0x7f, 0x00,
0x00, 0x40, 0x48, 0x48, 0x48, 0x7f, 0x7f, 0x00,
0x00, 0x26, 0x67, 0x45, 0x41, 0x7f, 0x3e, 0x00,
0x00, 0x7f, 0x7f, 0x08, 0x08, 0x7f, 0x7f, 0x00,
0x00, 0x00, 0x41, 0x7f, 0x7f, 0x41, 0x00, 0x00,
0x00, 0x40, 0x7e, 0x7f, 0x41, 0x07, 0x06, 0x00,
0x00, 0x41, 0x63, 0x36, 0x1c, 0x7f, 0x7f, 0x00,
0x00, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x7f, 0x00,
0x7f, 0x7f, 0x30, 0x18, 0x30, 0x7f, 0x7f, 0x00,
0x7f, 0x7f, 0x0c, 0x18, 0x30, 0x7f, 0x7f, 0x00,
0x00, 0x3e, 0x7f, 0x41, 0x41, 0x7f, 0x3e, 0x00,
0x00, 0x38, 0x7c, 0x44, 0x44, 0x7f, 0x7f, 0x00,
0x00, 0x3d, 0x7f, 0x46, 0x42, 0x7e, 0x3c, 0x00,
0x00, 0x31, 0x7b, 0x4e, 0x4c, 0x7f, 0x7f, 0x00,
0x00, 0x26, 0x6f, 0x49, 0x49, 0x7b, 0x32, 0x00,
0x00, 0x60, 0x40, 0x7f, 0x7f, 0x40, 0x60, 0x00,
0x00, 0x7f, 0x7f, 0x01, 0x01, 0x7f, 0x7e, 0x00,
0x00, 0x7c, 0x7e, 0x03, 0x03, 0x7e, 0x7c, 0x00,
0x7f, 0x7f, 0x06, 0x0c, 0x06, 0x7f, 0x7f, 0x00,
0x63, 0x77, 0x1c, 0x08, 0x1c, 0x77, 0x63, 0x00,
0x00, 0x70, 0x78, 0x0f, 0x0f, 0x78, 0x70, 0x00,
0x00, 0x61, 0x71, 0x59, 0x4d, 0x47, 0x43, 0x00,
0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00,
0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00,
0x1e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1e, 0x00,
0x00, 0x00, 0x00, 0x82, 0x44, 0x28, 0x10, 0x00,
0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0c, 0x18, 0x18, 0x18, 0x00,
0x7c, 0x66, 0x7c, 0x60, 0x3c, 0x00, 0x00, 0x00,
0x3e, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x06, 0x00,
0x3c, 0x66, 0x06, 0x66, 0x3c, 0x00, 0x00, 0x00,
0x7c, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x00,
0x3c, 0x06, 0x7e, 0x66, 0x3c, 0x00, 0x00, 0x00,
0x0c, 0x0c, 0x3e, 0x0c, 0x0c, 0x6c, 0x38, 0x00,
0x3c, 0x60, 0x7c, 0x66, 0x66, 0x7c, 0x00, 0x00,
0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x06, 0x00,
0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x00, 0x00,
0x1c, 0x36, 0x36, 0x30, 0x30, 0x00, 0x30, 0x00,
0x66, 0x36, 0x1e, 0x36, 0x66, 0x06, 0x06, 0x00,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
0xd6, 0xd6, 0xfe, 0xee, 0xc6, 0x00, 0x00, 0x00,
0x66, 0x66, 0x66, 0x7e, 0x3e, 0x00, 0x00, 0x00,
0x3c, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00,
0x06, 0x06, 0x3e, 0x66, 0x66, 0x3e, 0x00, 0x00,
0xf0, 0xb0, 0x3c, 0x36, 0x36, 0x3c, 0x00, 0x00,
0x06, 0x06, 0x66, 0x66, 0x3e, 0x00, 0x00, 0x00,
0x3e, 0x40, 0x3c, 0x02, 0x7c, 0x00, 0x00, 0x00,
0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00,
0x7c, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00,
0x18, 0x3c, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
0x7c, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00,
0x66, 0x3c, 0x18, 0x3c, 0x66, 0x00, 0x00, 0x00,
0x3c, 0x60, 0x7c, 0x66, 0x66, 0x00, 0x00, 0x00,
0x3c, 0x0c, 0x18, 0x30, 0x3c, 0x00, 0x00, 0x00,
0x70, 0x18, 0x18, 0x0c, 0x18, 0x18, 0x70, 0x00,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
0x0e, 0x18, 0x18, 0x30, 0x18, 0x18, 0x0e, 0x00,
0x00, 0x00, 0x00, 0x36, 0x5c, 0x00, 0x00, 0x00
)
Sub Procedure Max_Write(Dim pCol, pDig0, pDIg1 as Byte)
Latch = 0
SPI1_Write(pCol)
SPI1_Write(pDig0)
SPI1_Write(pCol)
SPI1_Write(pDig1)
Latch = 1
delay_ms(2)
End sub
Sub Procedure Max7219_Init()
Max_Write(0x09, 0x00, 0x00)
Max_Write(0x0B, 0x07, 0x07)
Max_Write(0x0C, 0x01, 0x01)
Max_Write(0x0A, 0x01, 0x01)
End sub
Sub Procedure Display_Testen()
Max_Write(0x0F, 0x01, 0x01)
DELAY_MS(5)
Max_Write(0x0F, 0x00, 0x00)
DELAY_MS(5)
End sub
Sub Procedure Uitzetten_Leds()
FOR Col = 1 TO 8
Max_Write(Col, 0x00, 0x00)
delay_ms(5)
NEXT Col
End sub
Sub Function Read_Str() As Byte
Result = Str[index]
Inc(Index)
If Index > 25 Then Index = 0 End if
End Sub
Sub Procedure Display_Schrijven()
For Col = 1 to 8
max_Write(Col, Buffer[0 + (Col - 1)], Buffer[8 + (Col - 1)])
delay_ms(2)
Next Col
delay_ms(2)
End Sub
Main:
OSCCON = %01110000
ANSELA = %00000000
ANSELB = %00000000
TRISA = %11111111
TRISB = %00000000
PORTA = %11111111
SPI1_Init()
Max7219_Init()
Display_Testen()
delay_ms(500)
Uitzetten_Leds()
For i1 = 0 to 15
Buffer[i1] = 0x00
Next i1
Str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Index = 0
CharX = Read_Str()
for y1 = 0 to 7
Buffer[y1] = Font1[((CharX - 0x20) <<3) + y1]
next y1
CharX = Read_Str()
for y1 = 8 to 15
Buffer[y1] = Font1[((CharX - 0x20) <<3) + y1 - 8]
next y1
While True
for z1 = 0 to 15
o1 = Buffer[15]
For j1 = 15 to 0 step -1
Buffer[j1] = Buffer[j1 - 1]
next j1
Buffer[0] = o1
Display_Schrijven()
delay_ms(250)
next z1
wend
End.