Definiowanie własnych znaków Atmega Bascom

Pytania, kody i porady dotyczące nie tylko Bascom.
Zbyszek
Posty: 71
Rejestracja: 30 lis 2017, 17:12

Definiowanie własnych znaków Atmega Bascom

Post autor: Zbyszek » 09 sty 2019, 8:26

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 ?
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Definiowanie własnych znaków Atmega Bascom

Post autor: niveasoft » 09 sty 2019, 8:34

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.
Zbyszek
Posty: 71
Rejestracja: 30 lis 2017, 17:12

Re: Definiowanie własnych znaków Atmega Bascom

Post autor: Zbyszek » 09 sty 2019, 16:36

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ł.
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Definiowanie własnych znaków Atmega Bascom

Post autor: niveasoft » 09 sty 2019, 17:07

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.
  1. Sub Podmien_ogonki_z_o()                                    'ogonki potrzebne na głównej planszy 4,5
  2.   'kropki(pełna/pusta) to znaki 0 i 1
  3.   'Deflcdchar 2 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8              ' pionowa kreska trochę w lewo
  4.   Deflcdchar 2 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4              ' pionowa kreska
  5.   'Deflcdchar 2 , 32 , 32 , 14 , 17 , 31 , 16 , 14 , 1        ' to literka ę
  6.   Deflcdchar 3 , 4 , 32 , 31 , 2 , 4 , 8 , 31 , 32          ' ż zet z kropką  potrzebne do --------
  7.   Deflcdchar 4 , 2 , 4 , 31 , 2 , 4 , 8 , 31 , 32           ' ź
  8.   Deflcdchar 5 , 2 , 4 , 14 , 17 , 17 , 17 , 14 , 32        ' ó
  9.  
  10.   'potrzebny jest też znak 6(ń) nigdzie nie dotykany
  11.   'znak 7 jest ustawiany gdzie indziej na znak BT
  12.   'znaki 2 i 3 to ę i ś
  13. End Sub
  14.  
  15. Sub Podmien_ogonki_c_l()                                    ' ogonki potrzebne w menu 4,5,7
  16.  Deflcdchar 2 , 32 , 32 , 14 , 17 , 31 , 16 , 14 , 1        ' ę
  17.  Deflcdchar 4 , 12 , 4 , 4 , 6 , 12 , 4 , 14 , 32           ' ł
  18.  Deflcdchar 5 , 2 , 4 , 14 , 16 , 16 , 17 , 14 , 32         ' ć
  19.  Deflcdchar 7 , 32 , 32 , 14 , 1 , 15 , 17 , 15 , 1         ' ą   <<
  20. 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 :D Ważne by włączyć BOD bo podczas burzy dwa razy się bez tego wysypał.
Zbyszek
Posty: 71
Rejestracja: 30 lis 2017, 17:12

Re: Definiowanie własnych znaków Atmega Bascom

Post autor: Zbyszek » 12 sty 2019, 6:18

Możesz zerknąć dlaczego nie chce mi to działać ?
  1.  
  2. $sim
  3. $regfile = "m168def.dat"
  4. $crystal = 8000000
  5.  
  6. '----- KONFIGURACJA WYŚWIETLACZA -----------------------------------------------
  7.  
  8. Config Lcd = 16 * 2
  9. Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portb.2
  10. Cursor Off , Noblink
  11. Cls
  12.  
  13. '----- KONFIGURACJA PORTÓW WEJŚCIA I WYJŚCIA / SCL i SDA / 1 WIRE / ALIASY -----
  14.  
  15. Config Portb.0 = Output : Reset Portb.0 : Pk_plus Alias Portb.0
  16. Config Portb.1 = Output : Reset Portb.1 : Disp Alias Portb.1
  17. Config Portb.2 = Output : Reset Portb.2
  18. Config Pinb.3 = Input : Set Portb.3 : Up Alias Pinb.3
  19. Config Pinb.4 = Input : Set Portb.4 : Dn Alias Pinb.4
  20. Config Pinb.5 = Input : Set Portb.5 : Ok Alias Pinb.5
  21. Config Portc.0 = Output : Reset Portc.0
  22. Config Portc.1 = Output : Reset Portc.1
  23. Config Portc.2 = Output : Reset Portc.2
  24. Config Portc.3 = Output : Reset Portc.3
  25. Config Portc.4 = Output : Reset Portc.4
  26. Config Portc.5 = Output : Reset Portc.5
  27. Config Pind.5 = Input : Set Portd.5
  28. Config Portd.6 = Output : Reset Portd.6 : Buzer Alias Portd.6
  29. Config Portd.7 = Output : Reset Portd.7 : Pk_minus Alias Portd.7
  30.  
  31. '----- PĘTLA GŁÓWNA ------------------------------------------------------------
  32. Portb.1 = 1
  33.  
  34. Do
  35. Gosub Znaki_diakrytyczne_programu_1
  36.  
  37.    Locate 2 , 3 : Lcd "543 " ; Chr(0) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(4) ; " 557"
  38.    Wait 1
  39.  
  40. Gosub Znaki_diakrytyczne_programu_2
  41.    Locate 1 , 1 : Lcd Chr(0) ; Chr(1)
  42.    Locate 2 , 1 : Lcd Chr(2) ; Chr(3)
  43.    Wait 1
  44. '   Locate 1 , 1 : Lcd Chr(6) ; Chr(7)
  45. '   Locate 2 , 1 : Lcd Chr(4) ; Chr(5)
  46. Loop
  47.  
  48. '*************************************
  49.  
  50. Znaki_diakrytyczne_programu_1:
  51.  
  52. Deflcdchar 0 , 32 , 32 , 32 , 15 , 32 , 32 , 32 , 32        ' 1/2 strzałki w prawo ( kreska pozioma )
  53. Deflcdchar 1 , 32 , 4 , 2 , 31 , 2 , 4 , 32 , 32            ' 1/2 strzałki w prawo ( strzałka)
  54. Deflcdchar 2 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 32               ' kreska pionowa
  55. Deflcdchar 3 , 32 , 4 , 8 , 31 , 8 , 4 , 32 , 32            ' 1/2 strzałki w lewo ( strzałka)
  56. Deflcdchar 4 , 32 , 32 , 32 , 30 , 32 , 32 , 32 , 32        ' 1/2 strzałki w lewo ( kreska pozioma )
  57.  
  58. Return
  59.  
  60. '*************************************
  61.  
  62. Znaki_diakrytyczne_programu_2:
  63.  
  64. Deflcdchar 0 , 31 , 30 , 30 , 28 , 28 , 24 , 24 , 16        '1/2 strzałki w górę ( lewa )
  65. Deflcdchar 1 , 31 , 15 , 15 , 7 , 7 , 3 , 3 , 1             '1/2 strzałki w górę ( prawa )
  66. Deflcdchar 2 , 28 , 28 , 28 , 28 , 28 , 28 , 28 , 31        '1/2 strzałki w górę - noga lewa
  67. Deflcdchar 3 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 31               '1/2 strzałki w górę - noga prawa
  68. Deflcdchar 4 , 16 , 24 , 24 , 28 , 28 , 30 , 30 , 31        '1/2 strzałki w dół ( lewa )
  69. Deflcdchar 5 , 1 , 3 , 3 , 7 , 7 , 15 , 15 , 31             '1/2 strzałki w dół ( prawa )
  70. Deflcdchar 6 , 31 , 28 , 28 , 28 , 28 , 28 , 28 , 28        '1/2 strzałki w dół - noga lewa
  71. Deflcdchar 7 , 31 , 7 , 7 , 7 , 7 , 7 , 7 , 7               '1/2 strzałki w dół - noga prawa
  72.  
  73. Return
  74.  
  75. '*******************************************************************************
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Definiowanie własnych znaków Atmega Bascom

Post autor: niveasoft » 12 sty 2019, 7:36

Nie wygląda żle i pewnie nawet można to wrzucić na symulator ale w linii 17 masz napisane :
  1. Config Portb.2 = Output : Reset Portb.2
a przecież tego pinu potrzebuje RS od LCD...
Zbyszek
Posty: 71
Rejestracja: 30 lis 2017, 17:12

Re: Definiowanie własnych znaków Atmega Bascom

Post autor: Zbyszek » 12 sty 2019, 8:16

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
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: Definiowanie własnych znaków Atmega Bascom

Post autor: Henryk » 12 sty 2019, 9:08

Zbyszek pisze:
12 sty 2019, 8:16
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
Witaj Zbyszek :D

Uczono mnie , że pętla główna powinna kończyć się END
Do
treść programu
loop
End
Zbyszek
Posty: 71
Rejestracja: 30 lis 2017, 17:12

Re: Definiowanie własnych znaków Atmega Bascom

Post autor: Zbyszek » 12 sty 2019, 9:22

Witaj,
w tym przypadku jednak, nic to nie zmienia ...
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Definiowanie własnych znaków Atmega Bascom

Post autor: niveasoft » 12 sty 2019, 9:24

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ć. :D

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.
ODPOWIEDZ