*****************************************************************************
' *
' * Title         : Dot Matrix Display text.bas
' * Version       : 1.0
' * Last Updated  : 07.11.2008
' * Target Device : ATMEGA 16 @ 20Mhz
' * Author        : wwww .avrprojects.net
' * Program code  : BASCOM AVR
' * Hardware req. : scrolling sign board, ATTiny Board
' * Description   : shows characters on the dot matrix display that are placed in the variable Str_text
' *
' *
' *
' *****************************************************************************

$regfile = "m16def.dat"                                     ' we use the M8

$hwstack = 32                                               ' default use 32 for the hardware stack

$swstack = 10                                               'default use 10 for the SW stack

$framesize = 40                                             'default use 40 for the frame space

'$crystal = 20000000

Dim Char As Byte , C As Byte , Digit As Byte , L As Byte , I As Byte , Temp(2) As Byte , Temp2 As Byte

Dim X As Word

Dim Str_temp As String * 1 , Reeks(250) As Byte , Str_text As String * 50 , Str_len As Byte , Col_len As Byte , R As Byte

Dim Tempmsb As Byte , Templsb As Byte , Tempstr As String * 2

Dim Scroll_speed As Byte

Declare Sub Input_text
Declare Sub Show_text
Declare Sub Set_volt
Declare Sub Set_text
Declare Sub Test_display
Declare Sub Read_volt
Declare Sub Read_temp

Config Portb = Output
Config Portd = Output

Enable Interrupts
Config Clock = Soft                                         'This command inits the clock
Config Date = Dmy , Separator = /                           ' ANSI-Format


Goto Main

'Sub Input_text
'Input "Give text (50 chars max):" , Str_text
'End Sub Input_text

'read temperature
Sub Read_temp
'initialise TCN75
I2cstart
I2cwbyte &H90
I2cwbyte &H00
I2cstop
'read temp
I2cstart
I2cwbyte &H91
I2crbyte Tempmsb , Ack
I2crbyte Templsb , Nack
I2cstop
End Sub Readtemp
'****************


'set text
Sub Set_text
C = 1
For Digit = 1 To Str_len
Str_temp = Mid(str_text , Digit , 1)
Char = Asc(str_temp)
X = Char * 5
For I = 1 To 5
Reeks(c) = Lookup(x , Text_data)
X = X + 1
C = C + 1
Next I
Reeks(c) = 0
C = C + 1
Next Digit
End Sub Set_string




'show text
Sub Show_text
If Str_len > 4 Then

For L = 0 To Col_len
C = 1
   For R = 1 To Scroll_speed                                'scrolling speed
       Set Portb.0                                          'lees "1" in voor de 595
       Toggle Portb.1
       Toggle Portb.1
       Toggle Portb.2
       Toggle Portb.2
       Char = C + L
       Portd = Reeks(char)
       Waitms 1
       C = C + 1
       Reset Portb.0
       For X = 1 To 19
       Toggle Portb.1
       Toggle Portb.1
       Toggle Portb.2
       Toggle Portb.2
       Char = C + L
       Portd = Reeks(char)
       Waitms 1
       C = C + 1
       Next X
       C = 1
  Next R
Next L

Else

For L = 0 To Col_len
C = 1
   For R = 1 To Scroll_speed                                'scrolling speed
       Set Portb.0                                          'lees "1" in voor de 595
       Toggle Portb.1
       Toggle Portb.1
       Toggle Portb.2
       Toggle Portb.2
       Portd = Reeks(c)
       Waitms 1
       C = C + 1
       Reset Portb.0
       For X = 1 To 19
       Toggle Portb.1
       Toggle Portb.1
       Toggle Portb.2
       Toggle Portb.2
       Portd = Reeks(c)
       Waitms 1
       C = C + 1
       Next X
       C = 1
  Next R
Next L

End If

End Sub Show_text

Sub Test_display
Portd = 255
For X = 1 To 20
       Set Portb.0
       Toggle Portb.1
       Toggle Portb.1
       Toggle Portb.2
       Toggle Portb.2
Next X
End Sub Test_display

'---------------------

Main:

Call Test_display
Waitms 100
Time$ = "19:56:00"
Date$ = "24-12-08"

Scroll_speed = 16                                           'adjust the scroll speed
Call Set_text
Do
Str_text = "   " + Time$ + " " + Date$ + " 23" + Chr(1) + "C" + Chr(2) + " Happy New Year"
Str_len = Len(str_text)
Col_len = Str_len * 6
Call Set_text
Call Show_text
Loop
End                                                         'end program                                                       'end program


Text_data:
Data 0 , 6 , 9 , 9 , 6                                      '
Data 6 , 9 , 9 , 6 , 0                                      '
Data 14 , 31 , 62 , 31 , 14                                 ' hart
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      '
Data 0 , 0 , 0 , 0 , 0                                      'space
Data 0 , 0 , 95 , 0 , 0                                     '!
Data 0 , 7 , 0 , 7 , 0                                      '''
Data 20 , 127 , 20 , 127 , 20                               '#
Data 36 , 42 , 127 , 42 , 18                                '$
Data 39 , 21 , 107 , 84 , 114                               '%
Data 54 , 73 , 86 , 32 , 80                                 '&
Data 0 , 0 , 11 , 7 , 0                                     ''
Data 0 , 28 , 34 , 65 , 0                                   ' (
Data 0 , 65 , 34 , 28 , 0                                   ')
Data 42 , 28 , 127 , 28 , 42                                '*
Data 8 , 8 , 62 , 8 , 8                                     '+
Data 0 , 88 , 56 , 0 , 0                                    ',
Data 8 , 8 , 8 , 8 , 8                                      '-
Data 0 , 96 , 96 , 0 , 0                                    '.
Data 32 , 16 , 8 , 4 , 2                                    '/
Data 62 , 81 , 73 , 69 , 62                                 '0
Data 0 , 66 , 127 , 64 , 0                                  '1
Data 114 , 73 , 73 , 73 , 70                                '2
Data 34 , 65 , 73 , 73 , 54                                 '3
Data 24 , 20 , 18 , 127 , 16                                '4
Data 39 , 69 , 69 , 69 , 57                                 '5
Data 60 , 74 , 73 , 73 , 48                                 '6
Data 1 , 113 , 9 , 5 , 3                                    '7
Data 54 , 73 , 73 , 73 , 54                                 '8
Data 6 , 73 , 73 , 41 , 30                                  '9
Data 0 , 54 , 54 , 0 , 0                                    ':
Data 0 , 91 , 59 , 0 , 0                                    ';
Data 8 , 20 , 34 , 65 , 0                                   '<
Data 20 , 20 , 20 , 20 , 20                                 '=
Data 0 , 65 , 34 , 20 , 8                                   '>
Data 2 , 1 , 81 , 9 , 6                                     '?
Data 50 , 73 , 121 , 65 , 62                                '@
Data 124 , 18 , 17 , 18 , 124                               'A
Data 65 , 127 , 73 , 73 , 62                                'B
Data 62 , 65 , 65 , 65 , 34                                 'C
Data 65 , 127 , 65 , 65 , 62                                'D
Data 127 , 73 , 73 , 65 , 65                                'E
Data 127 , 9 , 9 , 1 , 1                                    'F
Data 62 , 65 , 73 , 73 , 58                                 'G
Data 127 , 8 , 8 , 8 , 127                                  'H
Data 0 , 65 , 127 , 65 , 0                                  'I
Data 32 , 64 , 65 , 63 , 1                                  'J
Data 127 , 8 , 20 , 34 , 65                                 'K
Data 127 , 64 , 64 , 64 , 64                                'L
Data 127 , 2 , 12 , 2 , 127                                 'M
Data 127 , 2 , 4 , 8 , 127                                  'N
Data 62 , 65 , 65 , 65 , 62                                 'O
Data 127 , 9 , 9 , 9 , 6                                    'P
Data 62 , 65 , 65 , 33 , 94                                 'Q
Data 127 , 9 , 25 , 41 , 70                                 'R
Data 38 , 73 , 73 , 73 , 50                                 'S
Data 1 , 1 , 127 , 1 , 1                                    'T
Data 63 , 64 , 64 , 64 , 63                                 'U
Data 7 , 24 , 96 , 24 , 7                                   'V
Data 127 , 32 , 24 , 32 , 127                               'W
Data 99 , 20 , 8 , 20 , 99                                  'X
Data 3 , 4 , 120 , 4 , 3                                    'Y
Data 97 , 81 , 73 , 69 , 67                                 'Z
Data 0 , 127 , 65 , 65 , 0                                  '[
Data 2 , 4 , 8 , 16 , 32                                    '\
Data 0 , 65 , 65 , 127 , 0                                  ']
Data 4 , 2 , 1 , 2 , 4                                      '^
Data 64 , 64 , 64 , 64 , 64                                 '_
Data 0 , 0 , 7 , 11 , 0                                     ''
Data 32 , 84 , 84 , 84 , 56                                 'a
Data 127 , 40 , 68 , 68 , 56                                'b
Data 0 , 56 , 68 , 68 , 68                                  'c
Data 56 , 68 , 68 , 40 , 127                                'd
Data 56 , 84 , 84 , 84 , 24                                 'e
Data 8 , 126 , 9 , 9 , 2                                    'f
Data 8 , 84 , 84 , 84 , 60                                  'g
Data 127 , 16 , 8 , 8 , 112                                 'h
Data 0 , 68 , 125 , 0 , 0                                   'i
Data 32 , 64 , 68 , 61 , 0                                  'j
Data 0 , 127 , 16 , 40 , 68                                 'k
Data 0 , 65 , 127 , 64 , 0                                  'l
Data 124 , 4 , 120 , 4 , 120                                'm
Data 124 , 8 , 4 , 4 , 120                                  'n
Data 56 , 68 , 68 , 68 , 56                                 'o
Data 124 , 20 , 20 , 20 , 8                                 'p
Data 8 , 20 , 20 , 20 , 124                                 'q
Data 124 , 8 , 4 , 4 , 8                                    'r
Data 72 , 84 , 84 , 84 , 36                                 's
Data 0 , 4 , 63 , 68 , 68                                   't
Data 60 , 64 , 64 , 32 , 124                                'u
Data 28 , 32 , 64 , 32 , 28                                 'v
Data 60 , 64 , 60 , 64 , 60                                 'w
Data 68 , 40 , 16 , 40 , 68                                 'x
Data 12 , 80 , 80 , 80 , 60                                 'y
Data 68 , 100 , 84 , 76 , 68                                'z
Data 0 , 8 , 54 , 65 , 0                                    '{
Data 0 , 0 , 119 , 0 , 0                                    '|
Data 0 , 65 , 54 , 8 , 0                                    '}
Data 2 , 1 , 2 , 4 , 2                                      '~
Data 42 , 85 , 42 , 85 , 42                                 '  

