logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Zegar na wyświetlaczach Dot matrix LED 5x7

dizell 18 Kwi 2009 15:57 4312 1
  • #1 6429179
    dizell
    Poziom 11  
    Witam,

    Zainspirowany projektem "Dot matrix scrolling LED" ze strony: Link postanowiłem wykonać podobne urządzenie, jednak ze zwiększoną funkcjonalnością.

    Na początek układ ma pełnić funkcję zegara synchronizowanego sygnałem DCF 77, termometru mierzącego temperaturę w dwóch punktach, oraz wyświetlać dowolny zaprogramowany text. Całość ma być sterowana pilotem na RC5. Później nie wykluczam rozbudowy układu o moduł bluetooth czy moduł ethernetowy i stopniowe zwiększanie możliwości.

    Zmiany jakie mam zamiar wprowadzić w stosunku do oryginalnego projektu to:

    - 6 szt. wyświetlaczy Dot matrix LED 5x7 f-my Kingbright TA20-11EWA o wysokości cyfr 50mm
    - procesor ATmega 32
    - odbiornik DCF77 z f-my Conrad.

    Program do procesora bedzie pisany w Bascom AVR.

    Jeżeli znajdą się osoby zainteresowane budową takiego urządzenia, chętnie podzielę się posiadanymi materiałami takimi jak wzór płytek drukowanych , schemat, źródła programu, umieszczając je w tym wątku.

    Obecnie jestem na etapie projektowania płytek w Eagle. Jeśli ktoś ma bibliotekę do Eagla z wyświetlaczem TA20-11EWA to proszę o informację, inaczej czeka mnie tworzenie jej samemu.


    Proszę o ewentualne sugestie na temat wyżej przedstawionego projektu lub propozycję zmian.
  • #2 8280827
    Rafal-Szm
    Poziom 11  
    Witam ;)
    Temat lekko stary ale na pisze.
    Też bawiłem się tym i zbudowałem taką tablice 7x20 o wymiarach 11x30cm z żółtych diod dodałem też termometr i myślałem o zmianie ATmegi16 na ATmege32 i dodać odczytywanie tekstu z pliku txt zapisanego na karcie SD, ale nie wiem jak zwiększyć długość wyświetlanego tekstu ;(
    Daje kod i fotkę :)

    Zegar na wyświetlaczach Dot matrix LED 5x7 Zegar na wyświetlaczach Dot matrix LED 5x7 Zegar na wyświetlaczach Dot matrix LED 5x7 Zegar na wyświetlaczach Dot matrix LED 5x7

    
    $regfile = "m16def.dat"                                     ' we use the M16
    
    $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 = 16000000
    '$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
    Config 1wire = Portc.0                                      ' konfiguracja portu PD.5 jako wej?cia magistrali 1-wire
    Dim Odczyt(2) As Byte , A As Byte , Licznik As Byte , T As Integer , T1 As Single , Temperatura As String * 5
    Dim Str_temp As String * 1 , Reeks(250) As Byte , Str_text As String * 40 , 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
    Declare Sub Tempe
    Config Portb = Output
    Config Porta = 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
           Porta = Reeks(char)
           Waitus 100
           C = C + 1
           Reset Portb.0
           For X = 1 To 119
           Toggle Portb.1
           Toggle Portb.1
           Toggle Portb.2
           Toggle Portb.2
           Char = C + L
           Porta = Reeks(char)
           Waitus 100
           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
           Porta = Reeks(c)
          Waitus 100
           C = C + 1
           Reset Portb.0
           For X = 1 To 119
           Toggle Portb.1
           Toggle Portb.1
           Toggle Portb.2
           Toggle Portb.2
           Porta = Reeks(c)
           Waitus 100
           C = C + 1
           Next X
           C = 1
      Next R
    Next L
    
    End If
    
    End Sub Show_text
    
    Sub Test_display
    Porta = 255
    For X = 1 To 120
           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$ = "12:35:00"
    Date$ = "12-04-08"
    Scroll_speed = 6                                            'adjust the scroll speed
    Call Set_text
    Do
    Call Tempe
    Str_text = "   Tablica LED...Temp. " + Temperatura
    Str_len = Len(str_text)
    Col_len = Str_len * 6
    Call Set_text
    Call Show_text
    Loop
    End                                                         'end program                                                       'end program
    Sub Tempe
      1wreset                                                   'reset
      1wwrite &HCC                                              'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM
      1wwrite &H44                                              'dokonaj konwersji
      Waitms 750                                                'przeczekaj czas konwersji
      1wreset                                                   'reset
      1wwrite &HCC                                              'rozkaz adresowy SKIP ROM
      1wwrite &HBE                                              'rozkaz funkcyjny - polecenie odczytu DS18x20
      Odczyt(1) = 1wread(2)                                     'odczytaj dwa pierwsze bajty
      T = Odczyt(2)                                             'przepisz starszy bajt do zmiennej typu Integer
      Shift T , Left , 8                                        'przesuń ten bajt w lewo na wyższe pozycje
      T = T + Odczyt(1)                                         'przepisz - dodaj młodszy bajt
    
      T1 = T * 0.0625                                           'wyra?w stopniach Celsjusza, wynik wpisz do zmiennej Single
    
    Temperatura = Fusing(t1 , "#.#")
    Temperatura = Temperatura + Chr(1) + "C"
    End Sub Tempe
    
    Text_data:
    Data 0 , 6 , 9 , 9 , 6                                      '
    Data 6 , 9 , 9 , 6 , 0                                      '
    Data 62 , 65 , 65 , 65 , 34                                 ' 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                                 '  
    
REKLAMA