Hátha valaki hasznát veszi....
Az LCD helyere lehet felrakni a AVRDuino es az EXT1 paroson. A 2x16 LCDvel kompatibilis:) Na jó, csak labkiosztas szerint....
Lassan lesz cikk is belole...
SPI buszon at kommunikal....
Kód: Egész kijelölése
'AVR-Duino * EXT1 LCD * 7segment LCD
$regfile = "m328pdef.dat"
$crystal = 16000000
$hwstack = 100
$swstack = 100
$framesize = 512
Disp_en Alias Portd.4 ' chip-select for display (Load; RS@LCD)
Ser_clk Alias Portb.0 ' clk for display driver (clk; D6@LCD)
Ser_data Alias Portb.1 ' data for display driver (din; D7@LCD)
Config Disp_en = Output
Config Ser_clk = Output
Config Ser_data = Output
Dim Disp_num As Byte
Dim Disp_data As Byte
Dim Disp_fulldata As Word
Print "Setup 7SegmentLCD:...";
Gosub Max7219_setup
Print "End"
Dim Kiir As String * 16
Dim Temp1b As Byte
Dim Temp2b As Byte
Dim Temp3b As Byte
Dim Temp1s As String * 1
Dim Demotext As String * 254
'Demotext = " 9 8 7 6 5 4 3 2 1 0 HELP "
dEMOTEXT=" 01234567890HELP- "
For Temp3b = 1 To Len(demotext)
Kiir = Mid(demotext , Temp3b , 8)
Gosub Kiiras
Waitms 50
Next Temp3b
Kiir = "HELP "
Gosub Kiiras
'jatek a fenyerovel....
For Temp3b = 1 To 10
For Disp_data = 0 To &H0F
Disp_num = &H0A
Gosub Disp_write
Waitms 10
Next Disp_data
For Disp_data = &H0F To &H00 Step -1
Disp_num = &H0A
Gosub Disp_write
Waitms 10
Next Disp_data
Next Temp3b
For Disp_data = 0 To &H0F
Disp_num = &H0A
Gosub Disp_write
Waitms 10
Next Disp_data
For Disp_data = &H0F To &H00 Step -1
Disp_num = &H0A
Gosub Disp_write
Waitms 100
Next Disp_data
'kiiras letorlese
Kiir = ""
Gosub Kiiras
End 'end program
' setup max7219 config. registers
Max7219_setup:
Disp_num = &H0C : Disp_data = 0 ' Shutdown On
Gosub Disp_write
Disp_num = &H09 : Disp_data = &B1111_1111 ' Decode "B" For 1st 6 ??????
'ez mondja meg, hogy melyik szegmenseket használhatom! BE kell az összeset kapcsolni!
Gosub Disp_write
Disp_num = &H0A : Disp_data = &H0F ' Brightness Full(max)
Gosub Disp_write
Disp_num = &H0B : Disp_data = 7 ' # Digits 8 - osszes kell (a kikapcsoltakra nem jutna idő, gyorsabb scan - ha kevesebb kijelzest hasznalunk)
Gosub Disp_write
Disp_num = &H0F : Disp_data = 0 ' Test Off
Gosub Disp_write
Disp_num = &H0C : Disp_data = 1 ' Shutdown Off
Gosub Disp_write
Return
' Sends data to the Max7219 display driver
Disp_write:
Reset Ser_data
Reset Ser_clk
Reset Disp_en
Shiftout Ser_data , Ser_clk , Disp_num , 1
Shiftout Ser_data , Ser_clk , Disp_data , 1
Set Disp_en
Return
Kiiras:
Kiir = " " + Kiir
Print Kiir
Temp1b = Len(kiir)
Temp1b = Temp1b - 7
Kiir = Mid(kiir , Temp1b , 8)
Print Kiir
For Temp2b = 1 To 8
Disp_data = 8
Temp1s = Mid(kiir , Temp2b , 1)
Select Case Temp1s
Case "1" : Disp_data = 1
Case "2" : Disp_data = 2
Case "3" : Disp_data = 3
Case "4" : Disp_data = 4
Case "5" : Disp_data = 5
Case "6" : Disp_data = 6
Case "7" : Disp_data = 7
Case "8" : Disp_data = 8
Case "9" : Disp_data = 9
Case "0" : Disp_data = 0
Case "-" : Disp_data = 10
Case "H" : Disp_data = 12
Case "E" : Disp_data = 11
Case "L" : Disp_data = 13
Case "P" : Disp_data = 14
Case " " : Disp_data = 15
Case Else : Disp_data = 15
End Select
Print Disp_data
Disp_num = 9 - Temp2b
Print Mid(kiir , Disp_num , 1)
Gosub Disp_write
Next Temp1b
Return