Witam
Zakupiłem ostatnio listwę z 14-stoma wyświetlaczami 14-sto segmentowymi (w zasadzie 16-sto segmentowymi ale ja używam 14). Chciałbym zbudować na niej jakieś urządzenie typu zegar z kalendarzem. Podłączyłem już wszystko do atmegi16 na płytce stykowej. Jako drivery do poszczególnych wyświetlaczy użyłem uln2804 a segmentami steruję z pomocą zatrzasku 74hct573 (bez niego prawie wszystkie porty były by zajęte). Opanowałem już sterowanie tym wszystkim co widać w załączonym programie. Nie wiem tylko jak w zjadliwy sposób ładnie wyświetlać tekst i wartości zmiennych tak abym nie musiał wpisywać za każdym razem wartość liczbowych dla poszczególnych wyświetlaczy. Może dopisze ktoś kawałek kodu co i jak?
Zakupiłem ostatnio listwę z 14-stoma wyświetlaczami 14-sto segmentowymi (w zasadzie 16-sto segmentowymi ale ja używam 14). Chciałbym zbudować na niej jakieś urządzenie typu zegar z kalendarzem. Podłączyłem już wszystko do atmegi16 na płytce stykowej. Jako drivery do poszczególnych wyświetlaczy użyłem uln2804 a segmentami steruję z pomocą zatrzasku 74hct573 (bez niego prawie wszystkie porty były by zajęte). Opanowałem już sterowanie tym wszystkim co widać w załączonym programie. Nie wiem tylko jak w zjadliwy sposób ładnie wyświetlać tekst i wartości zmiennych tak abym nie musiał wpisywać za każdym razem wartość liczbowych dla poszczególnych wyświetlaczy. Może dopisze ktoś kawałek kodu co i jak?
Code:
'-------------Zegar Kalendarz 14-segment LED-"
'opis złącza ISP
'czerwony - "+"
'zielony - RESET
'biały - MISO
'niebieski - SCK
'brązowy - MOSI
'czarny - "-"
'------------dyrektywy dla kompilatora--------"
$regfile = "m16def.dat"
$crystal = 8000000
'------------konfiguracja timera--------------"
Config Timer2 = Timer , Prescale = 8 : Enable Interrupts : Enable Timer2
On Timer2 Co4ms
'------------zmienne--------------------------"
Dim Ktorywysw As Byte
Dim W1 As Byte
Dim W2 As Byte
Dim W3 As Byte
Dim W4 As Byte
Dim W5 As Byte
Dim W6 As Byte
Dim W7 As Byte
Dim W8 As Byte
Dim W9 As Byte
Dim W10 As Byte
Dim W11 As Byte
Dim W12 As Byte
Dim W13 As Byte
Dim W14 As Byte
'------------konfiguracja portów--------------"
Config Portb = &B11111111
Portb = &B00000000
Config Portd = &B1111111
Portb = &B11111111
Config Porta = &B11111111
Porta = &B11111111
Config Pinc.0 = Output
Portc.0 = 0
'-----------program główny--------------------"
Do
W1 = 3
W2 = 6
W3 = 36
W4 = 12
W5 = 35
W6 = 35
W7 = 35
W8 = 35
W9 = 35
W10 = 35
W11 = 35
W12 = 35
W13 = 35
W14 = 35
Loop
End
'-----------obsługa wyświetlacza------"
Co4ms:
Portd = &B00000000
Portb = &B00000000
Incr Ktorywysw : If Ktorywysw = 14 Then Ktorywysw = 0
Select Case Ktorywysw
Case 0:
Portc.0 = 1
Porta = Lookup(w1 , Tabela1)
Portc.0 = 0
Porta = Lookup(w1 , Tabela2) : Portd.0 = 1
Case 1:
Portc.0 = 1
Porta = Lookup(w2 , Tabela1)
Portc.0 = 0
Porta = Lookup(w2 , Tabela2) : Portd.1 = 1
Case 2:
Portc.0 = 1
Porta = Lookup(w3 , Tabela1)
Portc.0 = 0
Porta = Lookup(w3 , Tabela2) : Portd.2 = 1
Case 3:
Portc.0 = 1
Porta = Lookup(w4 , Tabela1)
Portc.0 = 0
Porta = Lookup(w4 , Tabela2) : Portd.3 = 1
Case 4:
Portc.0 = 1
Porta = Lookup(w5 , Tabela1)
Portc.0 = 0
Porta = Lookup(w5 , Tabela2) : Portd.4 = 1
Case 5:
Portc.0 = 1
Porta = Lookup(w6 , Tabela1)
Portc.0 = 0
Porta = Lookup(w6 , Tabela2) : Portd.5 = 1
Case 6:
Portc.0 = 1
Porta = Lookup(w7 , Tabela1)
Portc.0 = 0
Porta = Lookup(w7 , Tabela2) : Portd.6 = 1
Case 7:
Portc.0 = 1
Porta = Lookup(w8 , Tabela1)
Portc.0 = 0
Porta = Lookup(w8 , Tabela2) : Portb.7 = 1
Case 8:
Portc.0 = 1
Porta = Lookup(w9 , Tabela1)
Portc.0 = 0
Porta = Lookup(w9 , Tabela2) : Portb.0 = 1
Case 9:
Portc.0 = 1
Porta = Lookup(w10 , Tabela1)
Portc.0 = 0
Porta = Lookup(w10 , Tabela2) : Portb.1 = 1
Case 10:
Portc.0 = 1
Porta = Lookup(w11 , Tabela1)
Portc.0 = 0
Porta = Lookup(w11 , Tabela2) : Portb.2 = 1
Case 11:
Portc.0 = 1
Porta = Lookup(w12 , Tabela1)
Portc.0 = 0
Porta = Lookup(w12 , Tabela2) : Portb.3 = 1
Case 12:
Portc.0 = 1
Porta = Lookup(w13 , Tabela1)
Portc.0 = 0
Porta = Lookup(w13 , Tabela2) : Portb.4 = 1
Case 13:
Portc.0 = 1
Porta = Lookup(w14 , Tabela1)
Portc.0 = 0
Porta = Lookup(w14 , Tabela2) : Portb.5 = 1
End Select
Return
Tabela1: 'TABELA DLA PORTU A
Data 63 , 6 , 219 , 207 , 230 , 237 , 253 , 7 , 255 , 239 , 247 , 143 , 57 , 15 , 249 , 241 , 189 , 246 , 0 , 30 , 112 , 56 , 54 , 54 , 63 , 243 , 243 , 237 , 1 , 62 , 54 , 0 , 0 , 9 , 0 , 0 , 227 , 192
Tabela2: 'TABELA DLA PORTU A-dodatkowe segmenty
Data 12 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 18 , 0 , 18 , 0 , 0 , 0 , 0 , 18 , 0 , 36 , 0 , 5 , 33 , 0 , 0 , 32 , 0 , 18 , 0 , 40 , 45 , 21 , 12 , 8 , 0 , 0 , 0