Wpadł mi do ręki układ ICM 7228 AIPI z czterema wyświetlaczami 7 segmentowymi led
układ ten może wysterować 8 wyświetlaczy.
niestety nie znalazłem nigdzie opisu jak mógłbym to coś wysterować, na ślepo starałem się sam do tego dojść, i zajęło mi to naprawdę kilka godzin dłubania.
przedstawiam efekt mojej pracy, może komuś oszczędzę tego czasu który sam w to włożyłem.
jak na razie wysterowanie odbywa się szeregowo, bez kodowania, być może w przyszłości rozgryzę jeszcze także kodowanie.
link do pdf-a
program napisany w bascomie
Jeśli macie mnie krytykować to lepiej nic nie piszcie
układ ten może wysterować 8 wyświetlaczy.
niestety nie znalazłem nigdzie opisu jak mógłbym to coś wysterować, na ślepo starałem się sam do tego dojść, i zajęło mi to naprawdę kilka godzin dłubania.
przedstawiam efekt mojej pracy, może komuś oszczędzę tego czasu który sam w to włożyłem.
jak na razie wysterowanie odbywa się szeregowo, bez kodowania, być może w przyszłości rozgryzę jeszcze także kodowanie.
link do pdf-a
program napisany w bascomie
' obsługa układu icm7228
$regfile = "m16def.dat"
$crystal = 16000000
$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
Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 'standard
Config Lcd = 16 * 2
'podłączenie układu icm 7228A
' Port A pin 7 - write
' 6 - mode
'
' Port B pin 0 - ID0
' 1 - ID1
' 2 - ID2
' 3 - ID3
' 4 - ID4 shutdown *H - normalna praca L - wyłączony
' 5 - ID5 decode *H - bez dekodowania L - z dekodowanie
' 6 - ID6 wybór kodowania (ważny tylko dla trybu z dekodowaniem) H-hex L-code B
' 7 - ID7 Data Coming *H - wgranie danych L - bez wgrywania danych
'ten program wykorzystuje wprowadzanie danych bez dekodowania czyli ID0-ID7 odpowiadają
'po kolei segmentom wyświetlacza, za każdym razem jak na WR pojawia stan H do następnego segmentu wrzucane są dane liczby
' dane do cyfr:
' 0 11111011
' 1 10110000
' 2 11101101
' 3 11110101
' 4 10110110
' 5 11010111
' 6 11011111
' 7 11110000
' 8 11111111
' 9 11110111
' A 11111110
' b 10011111
' C 11001111
' d 10111101
' E 11001111
' F 11001110
' - 10000100
' H 10111110
' L 10001011
' P 11101110
' blank 10000000
' kropkę inicjujemy wpisując 0 w pierwszym bicie (przykładowo &B01111111 - efekt zapalenie wszystkich segmentów)
Display On
Cursor Off
Cls
Lcd "do dziala "
Wait 1
Ddra = 255 ' wprowadzenie portu A jako port wyjściowy
Ddrb = 255 ' wprowadzenie portu B jako port wyjściowy
Wait 1
Cls
Do
Lcd "pierwsze"
Porta = &B01000000 ' mode na H, WR na L (stany wyjściowe)
Portb = &B10110000 ' Wpisanie parametrów wczytania danych (opis wyżej zaznaczony *)
Porta = &B11000000 ' WR - H wpisanie wartości
Waitms 1
'pierwszy segment wpisujemy 4
Porta = &B00000000 ' przygotowanie do wprowadzenia danych
Portb = &B10110110 ' wprowadzenie danych cyfry 4
Porta = &B10000000 ' wpisanie danych do pamięci
Waitms 1
'następny segment wpisujemy 3
Porta = &B00000000
Portb = &B11110101
Porta = &B10000000
Waitms 1
'2
Porta = &B00000000
Portb = &B11101101
Porta = &B10000000
Waitms 1
'1
Porta = &B00000000
Portb = &B10110000
Porta = &B10000000
Waitms 1
'pozostałe 4 segmenty czyste
Porta = &B00000000
Portb = &B00000000
Porta = &B10000000
Waitms 1
Porta = &B00000000
Portb = &B00000000
Porta = &B10000000
Waitms 1
Porta = &B00000000
Portb = &B00000000
Porta = &B10000000
Waitms 1
Porta = &B00000000
Portb = &B00000000
Porta = &B10000000
Waitms 1
'po wpisaniu wszystkich znaków układ sam je wyświetli na wszystkich segmentach
' oraz podtrzyma świecenie wszystkich do czasu wpisania nowych danych
Wait 2
Cls
Lcd "drugie"
Porta = &B01000000
Portb = &B10110000
Porta = &B11000000
Waitms 1
'9
Porta = &B00000000
Portb = &B11110111
Porta = &B10000000
Waitms 1
'7
Porta = &B00000000
Portb = &B11110000
Porta = &B10000000
Waitms 1
'6
Porta = &B00000000
Portb = &B11011111
Porta = &B10000000
Waitms 1
'5
Porta = &B00000000
Portb = &B11010111
Porta = &B10000000
Waitms 1
'reszta segmentów czysta
Porta = &B00000000
Portb = &B00000000
Porta = &B10000000
Waitms 1
Porta = &B00000000
Portb = &B00000000
Porta = &B10000000
Waitms 1
Porta = &B00000000
Portb = &B00000000
Porta = &B10000000
Waitms 1
Porta = &B00000000
Portb = &B00000000
Porta = &B10000000
Waitms 1
Wait 2
Cls
Loop
Jeśli macie mnie krytykować to lepiej nic nie piszcie