Definiowanie własnych znaków Atmega Bascom
-
- Posty: 71
- Rejestracja: 30 lis 2017, 17:12
Definiowanie własnych znaków Atmega Bascom
Witam,
Jak wiadomo wszem i wobec bascom umożliwia zdefiniowanie 8 znaków własnych,a ja potrzebuję 12. Gdzieś wyczytałem że można, tylko że trzeba je załadować do epromu czy coś takiego, tylko pytanie jak to zrobić ? Ktoś coś wie na ten temat ?
Jak wiadomo wszem i wobec bascom umożliwia zdefiniowanie 8 znaków własnych,a ja potrzebuję 12. Gdzieś wyczytałem że można, tylko że trzeba je załadować do epromu czy coś takiego, tylko pytanie jak to zrobić ? Ktoś coś wie na ten temat ?
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Definiowanie własnych znaków Atmega Bascom
Znaków możesz zdefiniować dużo więcej, ale wyswietlać możesz jednocześnie tylko osiem.
To znaczy że możesz te znaki podmieniać dynamicznie.
To znaczy że możesz te znaki podmieniać dynamicznie.
-
- Posty: 71
- Rejestracja: 30 lis 2017, 17:12
Re: Definiowanie własnych znaków Atmega Bascom
Na razie tak robię, ale to zajmuje trochę kodu a gdyby je wrzucić do eprom to flash byłby wolny. Szukam tego artykułu / postu ale nie mogę znaleźć. Ktoś już tak kiedyś robił.
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Definiowanie własnych znaków Atmega Bascom
W jednym z moich projektów przeniosłem napisy do Eeprom, ale to były własnie całe: "Bojler","Czujnik" itp.
Co to za mały procesorek że się w nim nie możesz zmieścić? Czasem poprawienie/optymalizacja kodu w innych miejscach pozwala własnie na umieszczenie większego kodu.
Co do podmiany znaków to nie definiuję ich bezpośrednio w kodzie tylko w Sub`ach typu "Ustaw_ogonki_a_e", "Ustaw_ogonki_z_z" itp.
[EDIT] Tak zerknąłem i faktycznie przeniosłem do Eeprom także znaki specjalne TUTAJ LINK
Ten sterownik dalej działa i grzeje mój tyłek ahahahaha Ważne by włączyć BOD bo podczas burzy dwa razy się bez tego wysypał.
Co to za mały procesorek że się w nim nie możesz zmieścić? Czasem poprawienie/optymalizacja kodu w innych miejscach pozwala własnie na umieszczenie większego kodu.
Co do podmiany znaków to nie definiuję ich bezpośrednio w kodzie tylko w Sub`ach typu "Ustaw_ogonki_a_e", "Ustaw_ogonki_z_z" itp.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- Sub Podmien_ogonki_z_o() 'ogonki potrzebne na głównej planszy 4,5
- 'kropki(pełna/pusta) to znaki 0 i 1
- 'Deflcdchar 2 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 ' pionowa kreska trochę w lewo
- Deflcdchar 2 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ' pionowa kreska
- 'Deflcdchar 2 , 32 , 32 , 14 , 17 , 31 , 16 , 14 , 1 ' to literka ę
- Deflcdchar 3 , 4 , 32 , 31 , 2 , 4 , 8 , 31 , 32 ' ż zet z kropką potrzebne do --------
- Deflcdchar 4 , 2 , 4 , 31 , 2 , 4 , 8 , 31 , 32 ' ź
- Deflcdchar 5 , 2 , 4 , 14 , 17 , 17 , 17 , 14 , 32 ' ó
- 'potrzebny jest też znak 6(ń) nigdzie nie dotykany
- 'znak 7 jest ustawiany gdzie indziej na znak BT
- 'znaki 2 i 3 to ę i ś
- End Sub
- Sub Podmien_ogonki_c_l() ' ogonki potrzebne w menu 4,5,7
- Deflcdchar 2 , 32 , 32 , 14 , 17 , 31 , 16 , 14 , 1 ' ę
- Deflcdchar 4 , 12 , 4 , 4 , 6 , 12 , 4 , 14 , 32 ' ł
- Deflcdchar 5 , 2 , 4 , 14 , 16 , 16 , 17 , 14 , 32 ' ć
- Deflcdchar 7 , 32 , 32 , 14 , 1 , 15 , 17 , 15 , 1 ' ą <<
- End Sub
[EDIT] Tak zerknąłem i faktycznie przeniosłem do Eeprom także znaki specjalne TUTAJ LINK
Ten sterownik dalej działa i grzeje mój tyłek ahahahaha Ważne by włączyć BOD bo podczas burzy dwa razy się bez tego wysypał.
-
- Posty: 71
- Rejestracja: 30 lis 2017, 17:12
Re: Definiowanie własnych znaków Atmega Bascom
Możesz zerknąć dlaczego nie chce mi to działać ?
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $sim
- $regfile = "m168def.dat"
- $crystal = 8000000
- '----- KONFIGURACJA WYŚWIETLACZA -----------------------------------------------
- Config Lcd = 16 * 2
- Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portb.2
- Cursor Off , Noblink
- Cls
- '----- KONFIGURACJA PORTÓW WEJŚCIA I WYJŚCIA / SCL i SDA / 1 WIRE / ALIASY -----
- Config Portb.0 = Output : Reset Portb.0 : Pk_plus Alias Portb.0
- Config Portb.1 = Output : Reset Portb.1 : Disp Alias Portb.1
- Config Portb.2 = Output : Reset Portb.2
- Config Pinb.3 = Input : Set Portb.3 : Up Alias Pinb.3
- Config Pinb.4 = Input : Set Portb.4 : Dn Alias Pinb.4
- Config Pinb.5 = Input : Set Portb.5 : Ok Alias Pinb.5
- Config Portc.0 = Output : Reset Portc.0
- Config Portc.1 = Output : Reset Portc.1
- Config Portc.2 = Output : Reset Portc.2
- Config Portc.3 = Output : Reset Portc.3
- Config Portc.4 = Output : Reset Portc.4
- Config Portc.5 = Output : Reset Portc.5
- Config Pind.5 = Input : Set Portd.5
- Config Portd.6 = Output : Reset Portd.6 : Buzer Alias Portd.6
- Config Portd.7 = Output : Reset Portd.7 : Pk_minus Alias Portd.7
- '----- PĘTLA GŁÓWNA ------------------------------------------------------------
- Portb.1 = 1
- Do
- Gosub Znaki_diakrytyczne_programu_1
- Locate 2 , 3 : Lcd "543 " ; Chr(0) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(4) ; " 557"
- Wait 1
- Gosub Znaki_diakrytyczne_programu_2
- Locate 1 , 1 : Lcd Chr(0) ; Chr(1)
- Locate 2 , 1 : Lcd Chr(2) ; Chr(3)
- Wait 1
- ' Locate 1 , 1 : Lcd Chr(6) ; Chr(7)
- ' Locate 2 , 1 : Lcd Chr(4) ; Chr(5)
- Loop
- '*************************************
- Znaki_diakrytyczne_programu_1:
- Deflcdchar 0 , 32 , 32 , 32 , 15 , 32 , 32 , 32 , 32 ' 1/2 strzałki w prawo ( kreska pozioma )
- Deflcdchar 1 , 32 , 4 , 2 , 31 , 2 , 4 , 32 , 32 ' 1/2 strzałki w prawo ( strzałka)
- Deflcdchar 2 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 32 ' kreska pionowa
- Deflcdchar 3 , 32 , 4 , 8 , 31 , 8 , 4 , 32 , 32 ' 1/2 strzałki w lewo ( strzałka)
- Deflcdchar 4 , 32 , 32 , 32 , 30 , 32 , 32 , 32 , 32 ' 1/2 strzałki w lewo ( kreska pozioma )
- Return
- '*************************************
- Znaki_diakrytyczne_programu_2:
- Deflcdchar 0 , 31 , 30 , 30 , 28 , 28 , 24 , 24 , 16 '1/2 strzałki w górę ( lewa )
- Deflcdchar 1 , 31 , 15 , 15 , 7 , 7 , 3 , 3 , 1 '1/2 strzałki w górę ( prawa )
- Deflcdchar 2 , 28 , 28 , 28 , 28 , 28 , 28 , 28 , 31 '1/2 strzałki w górę - noga lewa
- Deflcdchar 3 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 31 '1/2 strzałki w górę - noga prawa
- Deflcdchar 4 , 16 , 24 , 24 , 28 , 28 , 30 , 30 , 31 '1/2 strzałki w dół ( lewa )
- Deflcdchar 5 , 1 , 3 , 3 , 7 , 7 , 15 , 15 , 31 '1/2 strzałki w dół ( prawa )
- Deflcdchar 6 , 31 , 28 , 28 , 28 , 28 , 28 , 28 , 28 '1/2 strzałki w dół - noga lewa
- Deflcdchar 7 , 31 , 7 , 7 , 7 , 7 , 7 , 7 , 7 '1/2 strzałki w dół - noga prawa
- Return
- '*******************************************************************************
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Definiowanie własnych znaków Atmega Bascom
Nie wygląda żle i pewnie nawet można to wrzucić na symulator ale w linii 17 masz napisane :
a przecież tego pinu potrzebuje RS od LCD...
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- Config Portb.2 = Output : Reset Portb.2
-
- Posty: 71
- Rejestracja: 30 lis 2017, 17:12
Re: Definiowanie własnych znaków Atmega Bascom
Nie chodzi ani w rzeczywistości ani na symulatorze, nawet po wywaleniu tej linii którą wskazałeś.
Na symulatorze zachowuje się tak samo jak w rzeczywistości
Na symulatorze zachowuje się tak samo jak w rzeczywistości
- Henryk
- Posty: 348
- Rejestracja: 22 sty 2018, 17:20
-
- Posty: 71
- Rejestracja: 30 lis 2017, 17:12
Re: Definiowanie własnych znaków Atmega Bascom
Witaj,
w tym przypadku jednak, nic to nie zmienia ...
w tym przypadku jednak, nic to nie zmienia ...
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Definiowanie własnych znaków Atmega Bascom
Program nie musi kończyć się "END".
END oznacza dokładniej "Wyłącz przerwania i nieskończona pętla w tym miejscu.
END wstawia się też w symulacjach tam gdzie nie chcemy pętli DO-LOOP bo chcemy by wykonało się tylko raz.
Co do programu to rankiem nawet nie zauważyłem tego $sim u góry.
Czego oczekujesz od tego programu?
Jeśli gdzieś użyłeś/narysowałeś znaki specjalne Chr(0) - Chr(1) a potem podmienisz definicje znaków na nowe to te wcześniej narysowane się zmienią.
Nie zostaną tak jak je rysowałeś.
Napisz albo zrób poglądowy obrazek co tam miałeś chęć narysować.
No i mały TIP: Niektóre wyświetlacze mają strzałki w lewo i prawo chyba pod Chr(126) i Chr(127). Dodajesz minus i masz taką dłuższą bez definiowania.
END oznacza dokładniej "Wyłącz przerwania i nieskończona pętla w tym miejscu.
END wstawia się też w symulacjach tam gdzie nie chcemy pętli DO-LOOP bo chcemy by wykonało się tylko raz.
Co do programu to rankiem nawet nie zauważyłem tego $sim u góry.
Czego oczekujesz od tego programu?
Jeśli gdzieś użyłeś/narysowałeś znaki specjalne Chr(0) - Chr(1) a potem podmienisz definicje znaków na nowe to te wcześniej narysowane się zmienią.
Nie zostaną tak jak je rysowałeś.
Napisz albo zrób poglądowy obrazek co tam miałeś chęć narysować.
No i mały TIP: Niektóre wyświetlacze mają strzałki w lewo i prawo chyba pod Chr(126) i Chr(127). Dodajesz minus i masz taką dłuższą bez definiowania.