'*****************************************************************
'* Name : Matrix Orbital to Keylogic translator *
'* Author : Stijn Coenen (Stynus) *
'* Notice : Copyright (c) 2010 Stijn Coenen *
'* : ElektronicaStynus.Be *
'* : All Rights Reserved *
'* Date : 19/01/2010 *
'* Version : 1.1 *
'* Links : elektronicastynus.be/Projecten/vfd_controller/ *
'* : schematheek.net/index.php?p=forum/topic&t=268&n=1 *
'* : gathering.tweakers.net/forum/list_messages/1383770 *
'*****************************************************************
Device 16F627A
Config WDT_Off, HS_OSc, PWRTE_ON, lvp_off, MCLRE_OFF
Xtal = 20
All_Digital = true
Symbol led = PORTB.7 : TRISB.7 = 0
Symbol VFD_ser = PORTB.5
Declare Rsout_Pin PORTB.5
Declare Serial_Baud 9600
Declare Rsout_Mode TRUE
Dim positie As Byte
Dim Regel As Byte
Dim verwacht As Byte
Dim wrap As Bit
Symbol VWTekst = 0
Symbol VWCommand = 1
Symbol VWColom = 3
Symbol VWRow = 4
Symbol Crap1 = 5
Symbol Crap2 = 6
Symbol Crap3 = 7
Symbol Crap4 = 8
Symbol Crap5 = 9
Symbol Crap6 = 10
Symbol Crap7 = 11
Symbol Crap8 = 12
Symbol Crap9 = 13
'Intterupt bij seriële ontvangst:
Hserial_Clear = On
Hserial_RCSTA = 144
Hserial_TXSTA = 36
Hserial_Baud = 9600
On_Interrupt GoTo Intteruptroutine
INTCON = %11000000
PIE1.5 = 1
Dim serdata As Byte
Dim TekstRegel1[21] As Byte
Dim TekstRegel2[21] As Byte
'*****************************************************************
Clear
DelayMS 200
GoTo main
'*****************************************************************
Intteruptroutine:
HSerIn [serdata]
High led
If serdata = 254 Then
'Aangeven dat er een commando komt
verwacht = VWCommand
EndIf
If verwacht = VWTekst Then
'Gewone tekst
If Regel = 1 Then
'Regel 1
TekstRegel1[positie - 1] = serdata
If positie < 21 Then
Inc positie
Else
If wrap = 1 Then
positie = 0
Regel = 2
EndIf
EndIf
Else
'Regel 2
TekstRegel2[positie - 1] = serdata
If positie < 21 - 1 Then
Inc positie
Else
If wrap = 1 Then
positie = 0
Regel = 1
EndIf
EndIf
EndIf
ElseIf verwacht = VWCommand Then
'Waarvoor is dit commando?
Select serdata
'****************************************************
Case 67
'Auto line wrap on
wrap = 1
verwacht = VWTekst
Case 68
'Auto line wrap on
wrap = 1
verwacht = VWTekst
Case 71
'Set cursor position
verwacht = VWColom
Case 72
'Send cursor hom
positie = 0
Regel = 1
verwacht = VWTekst
Case 76
'Cursor left
If positie > 0 Then
Dec positie
Else
If wrap = 1 Then
positie = 19
If Regel = 1 Then
Regel = 2
Else
Regel = 1
EndIf
EndIf
EndIf
verwacht = VWTekst
Case 88
'Clear display
TekstRegel1[0] = " "
TekstRegel1[1] = " "
TekstRegel1[2] = " "
TekstRegel1[3] = " "
TekstRegel1[4] = " "
TekstRegel1[5] = " "
TekstRegel1[6] = " "
TekstRegel1[7] = " "
TekstRegel1[8] = " "
TekstRegel1[9] = " "
TekstRegel1[10] = " "
TekstRegel1[11] = " "
TekstRegel1[12] = " "
TekstRegel1[13] = " "
TekstRegel1[14] = " "
TekstRegel1[15] = " "
TekstRegel1[16] = " "
TekstRegel1[17] = " "
TekstRegel1[18] = " "
TekstRegel1[19] = " "
TekstRegel1[20] = " "
TekstRegel2[0] = " "
TekstRegel2[1] = " "
TekstRegel2[2] = " "
TekstRegel2[3] = " "
TekstRegel2[4] = " "
TekstRegel2[5] = " "
TekstRegel2[6] = " "
TekstRegel2[7] = " "
TekstRegel2[8] = " "
TekstRegel2[9] = " "
TekstRegel2[10] = " "
TekstRegel2[11] = " "
TekstRegel2[12] = " "
TekstRegel2[13] = " "
TekstRegel2[14] = " "
TekstRegel2[15] = " "
TekstRegel2[16] = " "
TekstRegel2[17] = " "
TekstRegel2[18] = " "
TekstRegel2[19] = " "
TekstRegel2[20] = " "
'****************************************************
'Werken niet:
Case 74
'Turn on underline cursor
'Kan VFD niet
verwacht = VWTekst
Case 75
'Turn off underline cursor
'Kan VFD niet
verwacht = VWTekst
Case 83
'Turn on block (blinking) cursor
'Kan VFD niet
verwacht = VWTekst
Case 84
'Turn off block (blinking) cursor
'Kan VFD niet
verwacht = VWTekst
Case 80
'Set contrast
verwacht = Crap4
Case 66
'Backlight on
verwacht = Crap4
Case 70
'Backlight off
verwacht = VWTekst
Case 86
'General purpose output on
verwacht = VWTekst
Case 87
'General purpose output off
verwacht = VWTekst
'****************************************************
'Bar Graphs and Special Characters
'Werken ook niet
Case 118
'Initialize wide vertical bar graph
verwacht = VWTekst
Case 115
'Initialize narrow vertical bar graph
verwacht = VWTekst
Case 61
'Draw vertical bar graph
verwacht = Crap3
Case 104
'Initialize horizontal bar graph
verwacht = VWTekst
Case 124
'Draw horizontal bar graph
verwacht = Crap1
Case 78
'Define custom character
verwacht = Crap5
Case 118
verwacht = VWTekst
'****************************************************
Case 254
verwacht = VWCommand
Case Else
'Fout
EndSelect
'*************************************************************
ElseIf verwacht = VWColom Then
'Kolom nummer instellen
positie = serdata
verwacht = VWRow
ElseIf verwacht = VWRow Then
'Kolom nummer instellen
Regel = serdata
verwacht = VWTekst
ElseIf verwacht = Crap1 Then
verwacht = Crap2
ElseIf verwacht = Crap2 Then
verwacht = Crap3
ElseIf verwacht = Crap3 Then
verwacht = Crap4
ElseIf verwacht = Crap4 Then
verwacht = VWTekst
ElseIf verwacht = Crap5 Then
verwacht = Crap6
ElseIf verwacht = Crap6 Then
verwacht = Crap7
ElseIf verwacht = Crap7 Then
verwacht = Crap8
ElseIf verwacht = Crap8 Then
verwacht = Crap9
ElseIf verwacht = Crap9 Then
verwacht = Crap1
'*************************************************************
EndIf
Low led
Context Restore
'*****************************************************************
main:
'*****************************************************************
'Opstarten:
TekstRegel1[0] = " "
TekstRegel1[1] = " "
TekstRegel1[2] = " "
TekstRegel1[3] = " "
TekstRegel1[4] = " "
TekstRegel1[5] = " "
TekstRegel1[6] = " "
TekstRegel1[7] = " "
TekstRegel1[8] = " "
TekstRegel1[9] = " "
TekstRegel1[10] = " "
TekstRegel1[11] = " "
TekstRegel1[12] = " "
TekstRegel1[13] = " "
TekstRegel1[14] = " "
TekstRegel1[15] = " "
TekstRegel1[16] = " "
TekstRegel1[17] = " "
TekstRegel1[18] = " "
TekstRegel1[19] = " "
TekstRegel1[20] = " "
TekstRegel2[0] = " "
TekstRegel2[1] = " "
TekstRegel2[2] = " "
TekstRegel2[3] = " "
TekstRegel2[4] = " "
TekstRegel2[5] = " "
TekstRegel2[6] = " "
TekstRegel2[7] = " "
TekstRegel2[8] = " "
TekstRegel2[9] = " "
TekstRegel2[10] = " "
TekstRegel2[11] = " "
TekstRegel2[12] = " "
TekstRegel2[13] = " "
TekstRegel2[14] = " "
TekstRegel2[15] = " "
TekstRegel2[16] = " "
TekstRegel2[17] = " "
TekstRegel2[18] = " "
TekstRegel2[19] = " "
TekstRegel2[20] = " "
wrap = 1
'*****************************************************************
While 1 = 1
'SEROUT VFD_ser, 9600, [TekstRegel1[20] /20]
HSerOut[Str TekstRegel1 \20]
HSerOut[" "] 'Achter regel 1 whitespace
HSerOut[Str TekstRegel2 \20]
HSerOut[" "] 'Achter regel 2 whitespace
DelayMS 250
Wend
'*****************************************************************
End