

'Arrays
Dim font(552)



' Pin out
' 2  pinLCD.CE
' 3  pinLCD.DIN
' 4  pinLCD.RST
' 5  pinLCD.DC
' 14 pinKEY.R4
' 15 pinKEY.R3
' 17 pinKEY.R2
' 18 pinKEY.R1
' 21 pinKEY.C3
' 22 pinKEY.C2
' 23 pinKEY.C1
' 25 pinLCD.CLK
' 26 pinSERVO

pinLCD.CE = 2
pinLCD.RST = 4
pinLCD.DC = 5
pinSERVO = 26

SetPin pinLCD.CE, 8 
SetPin pinLCD.RST, 8 
SetPin pinLCD.DC, 8 
SetPin pinSERVO, 8 

KEYPAD key.code, Key.Int, 18,17,15,14,23,22,21


'SetTick 60000, ReadTemp, 1 'Read Temperature once a Minute

servo.val = 1500


Pin(pinLCD.CE) = 1 ' Enable High
Pause 25
Pin(pinLCD.CE) = 0 ' Enable is active low

SPI Open 5000000, 3, 8 'Setup SPI



' Load font to RAM for speed
For I = 0 to 551
  Read font(I)
Next I


LCD.Init()
LCD.Clear()

'GoSub WriteDegree


  LCD.GotoXY(0, 0)
  LCD.StringOut("CircuitGizmos")

  LCD.GotoXY(0, 1)
  LCD.StringOut(" Servo Tool")

  For I = 0 to 12
    LCD.GotoXY(5 + 6*I, 5)
    LCD.ByteOut(&HAA)
  NEXT I
  
  For I = 0 to 5
    LCD.GotoXY(I*2, 5)
    LCD.ByteOut(&H54)
    LCD.ByteOut(&HAA)
  NEXT I

  For I = 0 to 5
    LCD.GotoXY(71+I*2, 5)
    LCD.ByteOut(&HAA)
    LCD.ByteOut(&H54)
  NEXT I

SERVO 2, servo.val/1000



DO
  
  IF servo.val <> servo.old THEN
    LCD.GotoXY(42, 3)
    LCD.StringOut("    ")
    LCD.GotoXY(0, 3)
    LCD.StringOut("Pulse: " + STR$(servo.val) )

    LCD.GotoXY(0, 4)
    LCD.StringOut("              ")

    servo.old = servo.val

  ENDIF
  
  servo.tic = (servo.val - 800) / 16.66
  LCD.GotoXY(servo.tic-1, 4)
  LCD.ByteOut(&HFF)
 

LOOP



END



Key.Int:
  IF key.code = 1 THEN
    servo.val = servo.val - 10
    IF servo.val < 12 THEN servo.val = 20     
  ENDIF
  IF key.code = 2 THEN
    servo.val = servo.val - 100
    IF servo.val < 12 THEN servo.val = 20     
  ENDIF
  IF key.code = 3 THEN
    servo.val = 800
  ENDIF
  IF key.code = 4 THEN
    servo.val = 1500
  ENDIF
  IF key.code = 7 THEN
    servo.val = 2200
  ENDIF
  IF key.code = 8 THEN
    servo.val = servo.val + 100
    IF servo.val > 3012 THEN servo.val = 3000     
  ENDIF
  IF key.code = 9 THEN
    servo.val = servo.val + 10
    IF servo.val > 3012 THEN servo.val = 3000     
  ENDIF
  
  SERVO 2, servo.val/1000

IRETURN



SUB LCD.Init()
  Pin(pinLCD.CE) = 1 ' Enable High
  Pause 25
  Pin(pinLCD.CE) = 0 ' Enable is active low
  
  Pin(pinLCD.RST) = 0
  Pause 15
  Pin(pinLCD.RST) = 1
  
  Pin(pinLCD.DC) = 0
 
  ' LCD EXTENDED COMMANDS
  LCD.ByteOut(&H21)
  Pause 20
  
  ' SET LCD Vop (CONTRAST)
  LCD.ByteOut(&HC8)
  Pause 20
  
  ' SET TEMP COEFFICENT
  LCD.ByteOut(&H06)
  Pause 20
  
  ' LCD BIAS MODE
  LCD.ByteOut(&H12)
  Pause 20
  
  ' LCD STANDARD COMMANDS
  LCD.ByteOut(&H20)
  Pause 20
  
  ' LCD IN NORMAL MODE
  LCD.ByteOut(&H0C)
  Pause 20

  Pin(pinLCD.DC) = 1
  
End Sub



SUB LCD.ByteOut(LcdData)
 Junk =  SPI(LcdData)
End Sub



SUB LCD.Clear()
  LCD.GotoXY(0, 0)
  Pin(pinLCD.DC) = 1
  For Chr = 1 To 504
      LCD.ByteOut(0)
  Next Chr
End Sub



SUB LCD.GotoXY(PosX, PosY)
  Pin(pinLCD.DC) = 0
  LCD.ByteOut(&B01000000 Or PosY)
  LCD.ByteOut(&B10000000 Or PosX)
  Pin(pinLCD.DC) = 1
End Sub



SUB LCD.CharOut (LcdData)
  Pin(pinLCD.DC) = 1
  font.index = ((LcdData - 32) * 6)
  For I = font.index To (font.index + 5)
    junk = SPI(font(I))
  Next I
End Sub



SUB LCD.StringOut(Text$)
  For CharCount=1 To Len(Text$)
    LCD.CharOut(Asc(Mid$(Text$, CharCount, 1)))
  Next CharCount
End Sub





'-------------------------------------------------
' Font DATA table
'-------------------------------------------------

  Data &H00,&H00,&H00,&H00,&H00,&H00    '  32       20
  Data &H00,&H00,&H2f,&H00,&H00,&H00    '  33   !   21
  Data &H00,&H07,&H00,&H07,&H00,&H00    '  34   "   22
  Data &H14,&H7f,&H14,&H7f,&H14,&H00    '  35   #   23
  Data &H24,&H2a,&H7f,&H2a,&H12,&H00    '  36   $   24
  Data &Hc4,&Hc8,&H10,&H26,&H46,&H00    '  37   %   25
  Data &H36,&H49,&H55,&H22,&H50,&H00    '  38   &   26
  Data &H00,&H05,&H03,&H00,&H00,&H00    '  39   '   27
  Data &H00,&H1c,&H22,&H41,&H00,&H00    '  40   (   28
  Data &H00,&H41,&H22,&H1c,&H00,&H00    '  41   )   29
  Data &H14,&H08,&H3E,&H08,&H14,&H00    '  42   *   2A
  Data &H08,&H08,&H3E,&H08,&H08,&H00    '  43   +   2B
  Data &H00,&H00,&H50,&H30,&H00,&H00    '  44   ,   2C
  Data &H08,&H08,&H08,&H08,&H08,&H00    '  45   -   2D
  Data &H00,&H60,&H60,&H00,&H00,&H00    '  46   .   2E
  Data &H20,&H10,&H08,&H04,&H02,&H00    '  47   /   2f
  Data &H3E,&H51,&H49,&H45,&H3E,&H00    '  48   0   30
  Data &H00,&H42,&H7F,&H40,&H00,&H00    '  49   1   31
  Data &H42,&H61,&H51,&H49,&H46,&H00    '  50   2   32
  Data &H21,&H41,&H45,&H4B,&H31,&H00    '  51   3   33
  Data &H18,&H14,&H12,&H7F,&H10,&H00    '  52   4   34
  Data &H27,&H45,&H45,&H45,&H39,&H00    '  53   5   35
  Data &H3C,&H4A,&H49,&H49,&H30,&H00    '  54   6   36
  Data &H01,&H71,&H09,&H05,&H03,&H00    '  55   7   37
  Data &H36,&H49,&H49,&H49,&H36,&H00    '  56   8   38
  Data &H06,&H49,&H49,&H49,&H3E,&H00    '  57   9   39
  Data &H00,&H36,&H36,&H00,&H00,&H00    '  58   :   3A
  Data &H00,&H56,&H36,&H00,&H00,&H00    '  59   ;   3B
  Data &H08,&H14,&H22,&H41,&H00,&H00    '  60   <   3C
  Data &H14,&H14,&H14,&H14,&H14,&H00    '  61   =   3D
  Data &H00,&H41,&H22,&H14,&H08,&H00    '  62   >   3E
  Data &H02,&H01,&H51,&H09,&H06,&H00    '  63   ?   3F
  Data &H32,&H49,&H59,&H51,&H3E,&H00    '  64   @   40
  Data &H7E,&H11,&H11,&H11,&H7E,&H00    '  65   A   41
  Data &H7F,&H49,&H49,&H49,&H36,&H00    '  66   B   42
  Data &H3E,&H41,&H41,&H41,&H22,&H00    '  67   C   43
  Data &H7F,&H41,&H41,&H22,&H1C,&H00    '  68   D   44
  Data &H7F,&H49,&H49,&H49,&H41,&H00    '  69   E   45
  Data &H7F,&H09,&H09,&H09,&H01,&H00    '  70   F   46
  Data &H3E,&H41,&H49,&H49,&H7A,&H00    '  71   G   47
  Data &H7F,&H08,&H08,&H08,&H7F,&H00    '  72   H   48
  Data &H00,&H41,&H7F,&H41,&H00,&H00    '  73   I   49
  Data &H20,&H40,&H41,&H3F,&H01,&H00    '  74   J   4A
  Data &H7F,&H08,&H14,&H22,&H41,&H00    '  75   K   4B
  Data &H7F,&H40,&H40,&H40,&H40,&H00    '  76   L   4C
  Data &H7F,&H02,&H0C,&H02,&H7F,&H00    '  77   M   4D
  Data &H7F,&H04,&H08,&H10,&H7F,&H00    '  78   N   4E
  Data &H3E,&H41,&H41,&H41,&H3E,&H00    '  79   O   4F
  Data &H7F,&H09,&H09,&H09,&H06,&H00    '  80   P   50
  Data &H3E,&H41,&H51,&H21,&H5E,&H00    '  81   Q   51
  Data &H7F,&H09,&H19,&H29,&H46,&H00    '  82   R   52
  Data &H46,&H49,&H49,&H49,&H31,&H00    '  83   S   53
  Data &H01,&H01,&H7F,&H01,&H01,&H00    '  84   T   54
  Data &H3F,&H40,&H40,&H40,&H3F,&H00    '  85   U   55
  Data &H1F,&H20,&H40,&H20,&H1F,&H00    '  86   V   56
  Data &H3F,&H40,&H38,&H40,&H3F,&H00    '  87   W   57
  Data &H63,&H14,&H08,&H14,&H63,&H00    '  88   X   58
  Data &H07,&H08,&H70,&H08,&H07,&H00    '  89   Y   59
  Data &H61,&H51,&H49,&H45,&H43,&H00    '  90   Z   5A
  Data &H00,&H7F,&H41,&H41,&H00,&H00    '  91   [   5B
  Data &H55,&H2A,&H55,&H2A,&H55,&H00    '  92   \   5C
  Data &H00,&H41,&H41,&H7F,&H00,&H00    '  93   ]   5D
  Data &H04,&H02,&H01,&H02,&H04,&H00    '  94   ^   5E
  Data &H40,&H40,&H40,&H40,&H40,&H00    '  95   _   5F
  Data &H00,&H01,&H02,&H04,&H00,&H00    '  96   '   60
  Data &H20,&H54,&H54,&H54,&H78,&H00    '  97   a   61
  Data &H7F,&H48,&H44,&H44,&H38,&H00    '  98   b   62
  Data &H38,&H44,&H44,&H44,&H20,&H00    '  99   c   63
  Data &H38,&H44,&H44,&H48,&H7F,&H00    '  100  d   64
  Data &H38,&H54,&H54,&H54,&H18,&H00    '  101  e   65
  Data &H08,&H7E,&H09,&H01,&H02,&H00    '  102  f   66
  Data &H0C,&H52,&H52,&H52,&H3E,&H00    '  103  g   67
  Data &H7F,&H08,&H04,&H04,&H78,&H00    '  104  h   68
  Data &H00,&H44,&H7D,&H40,&H00,&H00    '  105  i   69
  Data &H20,&H40,&H44,&H3D,&H00,&H00    '  106  j   70
  Data &H7F,&H10,&H28,&H44,&H00,&H00    '  107  k   71
  Data &H00,&H41,&H7F,&H40,&H00,&H00    '  108  l   72
  Data &H7C,&H04,&H18,&H04,&H78,&H00    '  109  m   73
  Data &H7C,&H08,&H04,&H04,&H78,&H00    '  110  n   74
  Data &H38,&H44,&H44,&H44,&H38,&H00    '  111  o   75
  Data &H7C,&H14,&H14,&H14,&H08,&H00    '  112  p   76
  Data &H08,&H14,&H14,&H18,&H7C,&H00    '  113  q   77
  Data &H7C,&H08,&H04,&H04,&H08,&H00    '  114  r   78
  Data &H48,&H54,&H54,&H54,&H20,&H00    '  115  s   79
  Data &H04,&H3F,&H44,&H40,&H20,&H00    '  116  t   80
  Data &H3C,&H40,&H40,&H20,&H7C,&H00    '  117  u   81
  Data &H1C,&H20,&H40,&H20,&H1C,&H00    '  118  v   82
  Data &H3C,&H40,&H30,&H40,&H3C,&H00    '  119  w   83
  Data &H44,&H28,&H10,&H28,&H44,&H00    '  120  x   84
  Data &H0C,&H50,&H50,&H50,&H3C,&H00    '  121  y   85
  Data &H44,&H64,&H54,&H4C,&H44,&H00    '  122  z   86
  Data &H08,&H14,&HE8,&HA0,&HA0,&H00    '  Degree Symbol 
 


