ATNEL tech-forum https://forum.atnel.pl/ |
|
Wyświetlacz LCD pytania https://forum.atnel.pl/topic19309.html |
Strona 1 z 2 |
Autor: | procek87 [ 4 paź 2017, o 20:11 ] |
Tytuł: | Wyświetlacz LCD pytania |
Witajcie kolejne moje pytanie tym razem do rozdziału o Wyświetlaczach LCD nie spotkałem się wcześniej w książce z takim zapisem makr jak poniżej, czy możecie mi objaśnić jak to działa? co to znaczy PORT(x) ? i czemu dodaje się (S) SPORT(x) ? Kod: #define PORT(x) SPORT(x) // co daje taki zapis? // co daje taki zapis?#define SPORT(x) (PORT##x) // co daje taki zapis? #define PIN(x) SPIN(x) // co daje taki zapis? #define SPIN(x) (PIN##x) Dziękuje Pozdrawiam |
Autor: | xentis [ 4 paź 2017, o 20:56 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
są to makra które ułatwiają konfigurowanie biblioteki. Np tak jak w rozdziale od LCD: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Wtedy w wygodny sposób dla użytkownika widać co jest na jakim porcie i pinie bo zamiast litery A można wpisać dowolną inną literę portu a za numerek dowolny inny numer pinu danego portu, a dzięki tym makrom preprocesor poskleja litery i numerki z odpowiednimi nazwami np PORT oraz literę A sklei w gotowe do przełknięcia przez kompilator PORTA . No ale Mirek opisał to dokładnie w rozdziale o LCD, poczytaj dokładnie ten rozdział. |
Autor: | jacekk232 [ 4 paź 2017, o 21:09 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
W tym wątku masz dokładnie wyjaśnione jak to dziala topic105.html |
Autor: | mirekk36 [ 4 paź 2017, o 21:57 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
jacekk232 napisał(a): W tym wątku masz dokładnie wyjaśnione jak to dziala topic105.html ZDECYDOWANIE również polecam ten wątek |
Autor: | procek87 [ 5 paź 2017, o 16:35 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
co to jest sport() ? skąd się to wzięło jeśli jest to jakieś polecenie to gdzie szukać listy takich poleceń preprocesora z opisem co z czym się je? |
Autor: | mirekk36 [ 5 paź 2017, o 16:52 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
procek87 napisał(a): co to jest sport() ? skąd się to wzięło jeśli jest to jakieś polecenie to gdzie szukać listy takich poleceń preprocesora z opisem co z czym się je? ale jakie polecenie ? toż hmmm czy kolega wie jak działa #define ? toż SPORT() to własnie makro tworzone za pomocą #define równie dobrze możesz sobie tam wpisać |
Autor: | procek87 [ 5 paź 2017, o 16:58 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Wiem jak działa dyrektywa #define , zastanowiło mnie skąd się wzięło w kodzie sport() jakie ma znaczenie. #define nazwa zastępowana spacja nazwa zastąpiona |
Autor: | Marhef [ 5 paź 2017, o 17:29 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Odpowiedź Mirka została wstawiona, jak jeszcze pisałem... może to coś pomoże To nie jest polecenie. Możesz tam wpisać cokolwiek. Tłumaczył to dobrze Mirek w wątku, do którego odwołują się koledzy wyżej. Używasz tego makra, żeby można było w łatwy sposób określić pin, do którego podłączasz... coś. Pisząc samo język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Spróbuję jeszcze raz wyjaśnić, tak jak pisał Mirek: Gdzieś w programie przypisujesz: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Najpierw wywoływane jest: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. |
Autor: | procek87 [ 6 paź 2017, o 07:55 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Nie rozumiem jednego zapis PORT () wygląda jak wywołanie funkcji tylko jak to jest w przypadku preprocesora . Też występuje przekazywanie argumentów ,a nazwa PORT to nazwa funkcji ? Kod: #define PORT(D) SPORT(D) Co wtedy gdy wystąpi taki zapis ,podwójne wywołanie funkcji SPORT () to też funkcja ? W tego rodzaju zapisie. Hmm chyba coś mieszam ale odpowiedź cie. |
Autor: | mirekk36 [ 6 paź 2017, o 08:29 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
procek87 napisał(a): Nie rozumiem jednego zapis PORT () wygląda jak wywołanie funkcji tylko jak to jest w przypadku preprocesora . Też występuje przekazywanie argumentów ,a nazwa PORT to nazwa funkcji ? No przecież #define nie służy TYLKO do definiowania stałych dosłownych czy literałów masz przecież i o tym w Bluebooku, że można tworzyć tzw MAKRA - czyli odpowiedniki prostych funkcji no po to dodaje się nawiasy i argumenty np język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. w czym problem? |
Autor: | procek87 [ 6 paź 2017, o 08:43 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Czyli SPORT () to przygotowana funkcja pomocnicza do, której przekazywany jest argument z funkcji ,która była zdefiniowana preprocesorowi wyźej ,PORT () określony pomiędzy nawiasami . |
Autor: | mirekk36 [ 6 paź 2017, o 09:47 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Cytuj: Czyli SPORT () to przygotowana funkcja pomocnicza Nie, to nie żadna funkcja, to jest makro przygotowane za pomocą #define i ma ono na celu tylko odpowiednie posklejanie nazw - nie wygeneruje samo z siebie żadnego kawałka kodu źródłowego |
Autor: | Marhef [ 6 paź 2017, o 11:44 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Kolego procek87, poczytaj o preprocesorze. Na przykład tu: https://4programmers.net/C/Preprocesor Działanie preprocesora polega na tym, że zamienia jeden tekst na inny, bez sprawdzania poprawności(!) Możesz tworzyć proste "funkcje", ale nie możesz do argumentów tych funkcji przypisywać zmiennych. A nie możesz, ponieważ preprocesor działa przed kompilatorem. Wtedy, kiedy jeszcze nie wie, że w programie masz funkcje, zmienne... Nie wiem, jak jeszcze można to wytłumaczyć A o makrach możesz przeczytać tu: https://pl.wikibooks.org/wiki/C/Preprocesor#Makra |
Autor: | procek87 [ 7 paź 2017, o 09:35 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
ok dzięki już zrozumiałem . A teraz znalazłem fajny symulator Wyświetlacza LCD dobre do lepszego poznania : http://www.dinceraydin.com/djlcdsim/djlcdsim.html i krótki filmik: https://www.youtube.com/watch?v=bfqz0JQA0Rw może komuś się przyda |
Autor: | procek87 [ 7 paź 2017, o 11:57 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Właśnie zależałoby mi by przećwiczyć sobie to na zestawie atb czyli źywy organizm , nie wiem jak napisać program który pokazywały stany lini wyswietlacza na diodach Led? Znalazłem pod linkiem użytkownik też sobie wymyślił fajny sposób na szybsze pojmowanie wyświetlacza proszę: https://youtu.be/tOLnAFhUVjw |
Autor: | mirekk36 [ 7 paź 2017, o 12:04 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
procek87 napisał(a): Znalazłem pod linkiem użytkownik też sobie wymyślił fajny sposób na szybsze pojmowanie wyświetlacza proszę: https://youtu.be/tOLnAFhUVjw To jest wg mnie NAJLEPSZY sposób a nie tam te jakieś na stronach www macanie LCD przez WWW to tak jak lizanie lizaka przez papierek |
Autor: | procek87 [ 7 paź 2017, o 13:29 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Podpowiedzcie mi jak powinien wyglądać kod do atb , do takiego procka jeśli chciałbym się nim tak bawić w celu sprawdzania i nauki LCD na atb . Natchnoł mnie kolega z tego linku: https://youtu.be/tOLnAFhUVjw chciałem od początku sobie czytać ten rozdział i migać na nim w ten sposób jak w linku. Ciekawy sposób nauki co? najpewniej rozwiąże to wiele pytań. |
Autor: | procek87 [ 8 paź 2017, o 06:47 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Wspaniale xentis Dziękuję i dobrze że jest to w tym wątku Przyda się pewnie początkującym takim jak ja |
Autor: | procek87 [ 10 paź 2017, o 15:36 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Gdy zdawało mi się że rozumiem ogarnęły mną wątpliwości albo za głęboko drążę , w każdym bądź razie jestem w punkcie wyjścia pomocy język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Preprocesor dostrzega tylko definicje makra pierwszego przed spacją , gdy dochodzi do linijki pierwszej widzi PORT(x) zamiast x podstawia stałą dosłowną LCD_RSPORT nasza definicja wygląda teraz tak : język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. pytanie co jest pod x w makro SPORT(x) po prawej stronie przekazany LCD_RSPORT, czy już jego argument #define LCD_RSPORT D? język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Dlaczego jest tak że preprocesor w drógiej dopiero linijce dostrzega że pomiedzy nawiasami jest D a nie dalej stała dosłowna LCD_RSPORT . Może ktoś to zobrazować jak przybyłemu z księżyca. tłumaczenia z tematu : topic105.html nie do końca do mnie trafiają Czy ktoś podejmie się próby wytłumaczenia mi tego jeszcze raz |
Autor: | xentis [ 10 paź 2017, o 18:20 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Ja sobie zawsze to tak tłumaczyłem, że preprocesor potrafi dokonać tylko jednopoziomowej podmiany, a tu zachodzi już dwupoziomowa podmiana, bo za x podstawiane jest LCD_RSPORT, a z kolei za LCD_RSPORT podstawiane jest D więc dla tego trzeba to zrobić w dwóch krokach. Nie wiem na ile w tym prawdy ale przynajmniej mi udało się zapamiętać |
Autor: | Harry [ 10 paź 2017, o 18:42 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
mirekk36 napisał(a): Mirek tu użył niefortunnie PORT do tłumaczeń, bo wszystkim kojarzy się tylko z jednym język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Preprocesor reaguje na ciąg "DUPA" w kodzie czyli zamienia nam naszą końcówkę na ALAMAKOTA nasze "x" w kodzie to nic innego jak rozwinięcie LCD_D7DUPA do C, to chyba proste w drugiej linijce zmieniamy ALA... na już właściwy PORT - operator "##" służy do łączenia(sklejania) znaków, czyli wychodzi nam z tego już prawidłowe PORTC jakby ktoś się poczuł urażony określeniami... sorka, nie jestem zbyt kreatywny przy tłumaczeniach, może jakiś niebieski poprawi zanim mnie poczęstuje bananem lewoskrtętnym za wulgaryzmy. |
Autor: | mirekk36 [ 10 paź 2017, o 19:27 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Harry napisał(a): Preprocesor reaguje na ciąg "DUPA" ... Nie lubię takich określeń, a szczególnie tu na forum ... ale ... no ale może dzięki takiemu dobremu tłumaczeniu to jednak dotrze |
Autor: | Harry [ 10 paź 2017, o 19:33 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
mirekk36 napisał(a): Nie lubię takich określeń, a szczególnie tu na forum ... Na przyszłość obiecuje poprawę |
Autor: | procek87 [ 10 paź 2017, o 20:04 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Dalej tego nie widzę mi żeby wytłumaczyć to pozostaje chyba już namalować jak przedszkolakowi bo dla mnie to nielogiczne, ten Preprocesor chyba porusza według własnego wzoru . |
Autor: | Harry [ 10 paź 2017, o 20:13 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
To może napisz czego konkretnie nie rozumiesz, bo wydaje mi się, że wytłumaczyłem jak chłopu na miedzy co z czego wynika. |
Autor: | procek87 [ 10 paź 2017, o 20:27 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Cytuj: Preprocesor reaguje na ciąg "DUPA" w kodzie czyli zamienia nam naszą końcówkę na ALAMAKOTA nasze "x" w kodzie to nic innego jak rozwinięcie LCD_D7DUPA do C, to chyba proste w Nie jasne dla mnie jest reaguje na ciąg dupa,jaką końcówkę? Fajnie jakby mi ktoś to wyjaśnił krok po kroku jeszcze raz . Bo pewnych rżyczy nie dostrzegam. |
Autor: | Harry [ 10 paź 2017, o 20:50 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
procek87 napisał(a): Nie jasne dla mnie jest reaguje na ciąg dupa,jaką końcówkę? |
Autor: | Marhef [ 10 paź 2017, o 21:55 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Przy pomocy preprocesora możesz pisać tzw. makra. Tłumaczę (a przynajmniej się postaram) na przykładzie: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Tutaj wybierasz sobie zarówno port jak i pin, do którego podłączysz. Ale kompilator nie zna takich określeń, potrzebuje wprost: "dioda podłączona pod pin PC8". Żeby ustawić ten pin jako WYJŚCIE, musisz wywołać: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. No więc teraz, dlaczego tak nie będzie. Zacznijmy od podstawowych podstaw preprocesora: 1) Dyrektywa #define działa w ten sposób, że w kodzie programu wyszukiwany jest ciąg znaków, który jest pierwszym wyrazem po #define, a następnie jest zastąpiony tym, co jest jako drugi wyraz. 2) wyrażenie język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. 3) symbol "##" to tzw. symbol sklejania. Łączy ze sobą w jeden ciąg to, co jest przed tym symbolem, i to, co jest za tym symbolem. No dobrze, ale jak się to ma do opisanego problemu, zapytasz? Już tłumaczę: Jeżeli wpiszesz tylko: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. A teraz, jak powinno być: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Mam nadzieję, że się rozjaśni. Prościej tego nie potrafię wytłumaczyć |
Autor: | Harry [ 10 paź 2017, o 22:15 ] |
Tytuł: | Re: Wyświetlacz LCD pytania |
Następnym razem zrobi się historyjkę obrazkową Wysłane ze srajfona. |
Strona 1 z 2 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |