Przeszukaj forum
Pokazywanie wyników dla tagów 'binarny'.
Znaleziono 2 wyniki
-
Kiedy dam Ci zadanie: dodaj do siebie 3 i 6 i podaj wynik, to na 90% podasz automatyczną odpowiedź 9. Względnie proste operacje matematyczne są dla nas naturalne do rozwiązania, bo niemal codziennie takie rozwiązujemy. Natomiast ciężej jest z operacją 11+1, bo odpowiedzią nie musi być 12. Co gorsza odpowiedź do pierwszego przykładu nie musi wynosić 9! W języku mówionym każda wypowiedź jest zależna od kontekstu. Mówiąc zamek możemy mieć na myśli budynek lub zapięcie od kurtki. Tak samo jest z liczbami. Wynik zależy od kontekstu, w jakim dokonujemy obliczeń, a taki kontekst nazywamy systemem - ogólnie systemem liczbowym. Jednym z najpopularniejszych systemów liczbowych jest system binarny. Źródło zdjęcia. Innymi słowy, system liczbowy jest zbiorem reguł, według którego zapisywane są liczby. Jego nazwa definiuje, ile znaków służy do zapisu liczb. Przykładowo system czwórkowy korzysta z liczb od 0 do 3, czyli korzysta z 4 cyfr. Ludzie korzystają z systemu dziesiętnego, który jest systemem pozycyjnym. Oznacza to, że cyfry w liczbie określają ilość jedności, dziesiątek, setek itp. Te jedności, dziesiątki nazwiemy wagami. Przykładowo: liczba 375, to tak naprawdę: 3 setki, 7 dziesiątek i 5 jedności, 3 * 100 + 7 * 10 + 5 * 1, 3 * 102 + 7 * 101 + 5 * 100. Zauważmy, że wagi określa się jako potęgi liczby definiującej system liczbowy do pozycji liczby od prawej strony zaczynając od zera. Istnieją różne systemy liczbowe. Najpopularniejsze z nich to: Dwójkowy (binarny): np. 1011 (dziesiętnie: 11), do zapisu liczb używa się 0 i/lub 1. Czwórkowy: np. 3102 (dziesiętnie: 210), używa się cyfr 0-3. Ósemkowy (oktalny): np. 75 (dziesiętnie 61), używa się cyfr 0-7. Dziesiętny (decymalny): np. 599, używa się cyfr 0-9. Szesnastkowy (heksadecymalny): np. 6F (dziesiętnie 95), używa się cyfr 0 - F. Występują tutaj dodatkowe symbole dla liczb większych od 9: A = 10, B = 11, C = 12, itd. do F = 15. W tym artykule skupimy się na systemie dwójkowym, czyli jednym z najważniejszych systemów w informatyce, elektronice i ogólnie technice Dlaczego systemu binarnego używa się w informatyce i elektronice? Tak naprawdę jest to spowodowane wygodą przesyłania informacji. Pojawienie się napięcia może oznaczać 1, a jego brak 0. Wprowadzenie większej ilości wartości, takich jak różne poziomy napięcia, wprowadza dodatkową złożoność takiego systemu, ponieważ wymaga interpretacji różnych wartości, co może stanowić wyzwanie. We wczesnym etapie rodzenia się komputerów binarność nie była oczywista, co potwierdza skonstruowanie komputera ENIAC, który był komputerem wykorzystującym system dziesiątkowy. Komputery jakie znamy obecnie to cud techniki, którym początki dał m.in. ENIAC. Źródło zdjęcia. Konwersja liczb binarnych i dziesiętnych Jak już wcześniej zostało wspomniane, liczba binarna składa się z samych zer i jedynek. Abyśmy mogli ją zrozumieć po naszemu, czyli jako liczbę dziesiętną, należy dokonać kilku obliczeń - konwersji. Poniżej przedstawiam kilka sposobów na przekształcanie liczb. Tabela powyżej przedstawia liczby dziesiętne i odpowiadające im liczby binarne. Źródło zdjęcia. a) Zamiana przy użyciu operacji modulo (dec → bin) Ta metoda jest wolna i bardzo algorytmiczna. Liczbę dzieli się całkowicie przez 2 i zapisuje się resztę z dzielenia. Powtarza się to do momentu, aż w wyniku dzielenia znajdzie się 0. Wynik odczytywany jest od końca. Zgodnie z powyższą grafiką za każdym razem dzielimy wyższą liczbę. Wynik dzielenia całkowitego zapisujemy w lewej kolumnie a resztę z dzielenia po prawej. Wynik, czyli liczbę binarną, odczytuje się od dołu do góry. Tę metodę można zastosować do jakiegokolwiek systemu liczbowego. Gdyby 22 zacząć dzielić całkowicie przez np. 8, to reszty z dzielenia wskazałyby nam liczbę ósemkową. b) Zapełnianie potęgami (dec → bin) Jest to zdecydowanie szybsza i prostsza metoda. Zamienianą liczbę dziesiętną nazwijmy x. Rozpisz potęgi dwójki (20, 21, 22…) od prawej do lewej, do ostatniej liczby, która jest mniejsza lub równa x. Zapełnianie zacznij od lewej strony, czyli od najwyższej potęgi. Pierwsza potęga mieści się w x, dlatego zapisz pod nią 1. Przejdź od lewej do prawej strony zapisując jedynkę pod tymi potęgami, które w sumie z poprzednimi pod którymi znajduje się 1 nie przekracza x. Wpisz 0 pod tymi potęgami, które już nie mieszczą się w x. Wynik przeczytaj od lewej do prawej. c) Konwersja za pomocą wag (bin → dec) W tej metodzie korzystamy z definicji systemu liczbowego, która została przedstawiona wcześniej. Każda cyfra na konkretnej pozycji definiuje wagę tej pozycji. Uwaga: aby podkreślić w zapisie liczby w jakim systemie jest ona zapisana, pisze się w indeksie dolnym w nawiasach podstawę systemu danej liczby. Przeliczmy liczbę 10110(2): Podstawą systemu w liczbie binarnej jest 2. Cyfra na ostatniej pozycji ma wagę 20, przedostatnia 21, kolejna 22 itp. Mnożymy wagi przez cyfry na ich pozycjach. Każdy iloczyn dodajemy. Zauważ, że wstępie w przykładzie z liczbą 375(10) dokonaliśmy tak naprawdę zamiany liczby dziesiętnej na dziesiętną korzystając z powyżej metody d) Ręczne dodawanie już obliczonych wag (binarna → dziesiętna) Wiemy już, że wagi są przedstawiane jako potęgi, więc gdy nadchodzi potrzeba przeliczenia liczby binarnej na kartce, to możemy dodawać tylko te wagi przy których stoi jedynka. Jest to uproszczenie poprzedniej metody. Animacja przedstawiająca zamianę liczby decymalnej na postać binarną. Źródło animacji. Zastosowania logiki binarnej i liczb binarnych 1) Tranzystor jako element binarny Jeżeli wykorzystamy tranzystor jako włącznik (klucz), to możemy powiedzieć, że działa on w logice binarnej. Gdy wymusimy odpowiednio duży przepływ prądu bazy tranzystora NPN, to doprowadzimy tranzystor do stanu nasycenia, czyli popłynie prąd przez kolektor. Ten prąd możemy traktować jako wyjście i jego przepływ jako logiczne 1. Brak tego prądu to 0. Działanie tranzystora NPN jako klucz. 2) Bramka logiczna NAND Wykorzystując wiedzę z poprzedniego punktu, możemy zacząć konstruować tak zwane bramki logiczne, czyli układy, których kombinacja wejść da nam jakieś wyjście. NAND jest bardzo ważną bramką logiczną, bo dzięki niej można zbudować układ realizujący dowolną funkcję logiczną. Wykonajmy ją używając tranzystorów bipolarnych NPN! Schemat bramki NAND. Jako wejścia interpretujemy bazy tranzystorów, a wyjściem jest prąd kolektora pierwszego tranzystora. Potocznie mówi się, że prąd płynie najkrótszą i najprostszą drogą, więc załączenie dwóch tranzystorów powinno skutkować praktycznie zwarciem kolektora wyższego tranzystora z masą źródła. Co za tym idzie prąd wybierze tę drogę zamiast diody (wyjście y) i dioda przestanie świecić - na wyjściu pojawi się 0. Tablica prawdy dla układu NAND. Działanie bramki NAND skonstruowanej z tranzystorów. Dzięki tranzystorom i traktowaniu ich jako elementów binarnych możemy manipulować sygnałem i budować elementy cyfrowe, które działają w logice binarnej. To wszystko dzięki działaniom na liczbach binarnych i wykorzystaniu algebry Boole’a. 3) Tranzystory w procesorze W procesorze raczej nie stosuje się tranzystorów bipolarnych. Współczesne procesory są zbudowane w technologii CMOS (Complementary Metal-Oxide-Semiconductor). Są one używane do budowy bramek logicznych, które z kolei formują układy logiczne odpowiedzialne za operacje arytmetyczne, logiczne i sterujące w procesorze. Procesory są praktycznie stworzone z tranzystorów i bazują na ich działaniu. W jednym procesorze może być ich aż 17 miliardów! To nie są oczywiście tranzystory w obudowie typu TO-92. Ich konstrukcja jest dużo bardziej złożona i szerokość takiego elementu może wynosić 100 nanometrów. Współczesne procesory mają ogromną liczbę tranzystorów na pojedynczym układzie scalonym, co pozwala na wykonywanie bardzo skomplikowanych obliczeń w bardzo krótkim czasie. Miniaturyzacja postępuje zgodnie z prawem Moore’a, co pozwala na zwiększenie gęstości integracji i poprawę wydajności procesora. Cała ta złożoność mikroarchitektury procesora jest ukierunkowana na efektywne wykonywanie instrukcji programu zgodnie z zasadami logiki binarnej. Najmniejsze elementy współczesnych procesorów nie da się zobaczyć ludzkim okiem. Potrzeba do tego bardzo dobrego mikroskopu. Źródło zdjęcia. 4) Programowanie mikrokontrolerów Mikrokontroler to układ scalony, który zachowuje się jak mały komputer. Możemy dołączyć do niego wejścia i wyjścia takie jak: przyciski, czujniki i diody. Dzięki wgranemu programowi może on interpretować wejścia i sterować wyjściami. Z mikrokontrolerami wiążą się rejestry - pamięci wewnętrzne, które służą do przechowywania danych tymczasowych. Dzięki takiemu rejestrowi możemy zdefiniować, że jedna nóżka mikrokontrolera będzie wejściem, a druga wyjściem. Co więcej, dzięki tej pamięci możemy sprawić, że LED dołączony do wyjścia układu scalonego zapali się. Na razie zapamiętaj, że: Rejestr DDRx odpowiada za ustawienie kierunku przepływu danych. Innymi słowy dajemy informację mikrokontrolerowi, że dany pin jest wejściem lub wyjściem. W miejscu x wpisuje się port, który chcemy skonfigurować, np. A, B, C. W danym bicie wpisuje się 0 jeżeli pin ma być wejściem i 1 jeżeli ma być wyjściem. Rejestr PORTx służy do ustawiania stanów na konkretnych pinach. Jeżeli chcemy ustawić stan wysoki na jakimś pinie to należy ustawić na odpowiednim bicie 1. 0 ustawi stan niski. Rejestry portu B mikrokontrolera Atmega16. Jak w taki rejestr wpisać informację? Tutaj możemy skorzystać z liczb binarnych! Przykład a) Ustawić w rejestrze DDRB jedynkę na bitach 0 i 3. b) Ustawić w rejestrze PORTB jedynkę na bitach 0, 4, 5 i 7. Jest kilka sposobów na wykonanie tego zadania. Zapis za pomocą liczby binarnej Aby w języku C zapisać liczbę binarną należy dodać prefiks 0b. Możemy wykorzystać liczby binarne, aby wpisać dane w rejestr, ponieważ rejestry interpretuje się za pomocą bitów. Zapis za pomocą liczby dziesiętnej Aby to zrobić musimy przeliczyć liczbę binarną na dziesiętną. Bardziej doświadczeni programiści pewnie będą to w stanie zrobić szybko w głowie a) 0b00001001(2) = 00001001(2) = 1001(2) = 9(10) DDRB = 9; b) 0b10110001(2) = 10110001(2) = 177(10) PORTB = 177; Ten zapis może być nieczytelny, ale jest jeden wyjątek, gdzie warto go stosować. Jeżeli chcemy zapełnić jedynkami cały rejestr, to można wpisać do niego wartość 255, ponieważ 255(10) = 11111111(2). Oczywiście można skorzystać z innych systemów liczbowych, np. hex (0xFF(16) = 255(10)) Jeżeli chcesz dowiedzieć się o zastosowaniu rejestrów, to zapraszam do kursu STM32L4. 5) Sterowniki PLC Używa się je w maszynach przemysłowych i do sterowania liniami produkcyjnymi - ogólnie w przemyśle. Gwarantują one stabilność i ciągłość procesu a ponadto spełniają szereg przepisów. Dzięki nim można projektować układy sterowania dyskretnego, czyli procesy przemysłowe, które działają w logice dwuwartościowej. Przykłady maszyn, którymi sterują sterowniki PLC: windy, prasy hydrauliczne, schody ruchome, układ świateł na skrzyżowaniu. Te układy mogą charakteryzować się binarnością, tzn. do ich działania nie muszą być wykorzystywane elementy, które na swoim wejściu/wyjściu otrzymują/zwracają coś innego niż logiczne 0/1. W algorytmach sterowania takimi obiektami stosuje się operatory logiczne typu: AND, OR, XOR… co potwierdza zastosowanie liczb binarnych i logiki binarnej w tych sterownikach. Podsumowanie System binarny stanowi fundament technologii, elektroniki i informatyki. Jest nie tylko teoretycznym konceptem, ale także praktycznym elementem współczesności. Jego znaczenie sięga od konstrukcji tranzystorów przez układy cyfrowe, aż po programowanie mikrokontrolerów i sterowanie maszynami przemysłowymi. System binarny stanowi nieodłączną część świata, stanowiąc podstawę dla licznych innowacji i osiągnięć technologicznych. Każdy informatyk, elektronik, inżynier powinien się z nim zapoznać i zrobić przynajmniej jedno ćwiczenie z konwersji liczby dziesiętnej na binarną
- 1 odpowiedź
-
- 6
-
-
- programowanie
- Elektronika
- (i 2 więcej)
-
Amatorską elektroniką zainteresowałem się po raz pierwszy w połowie lat dziewięćdziesiątych, będąc jeszcze dzieciakiem ze szkoły podstawowej. Moja aktywność na tym polu ograniczała się wówczas głównie do składania cudzych konstrukcji z pojedynczych tranzystorów, analogowych układów scalonych czy bramek logicznych. Brakowało mi wiedzy i narzędzi, aby zająć się czymś poważniejszym. Szczególnie wejście w świat mikrokontrolerów nie wchodziło w grę - zakup programatora i podręczników z kieszonkowego nie wchodził w grę, a i same elementy do tanich nie należały. Największą popularnością cieszyła się wówczas rodzina 8051, szczególnie w wykonaniu firmy Atmel (np. AT89C2051 albo AT89C51). Tematem mikrokontrolerów zająłem się wiele lat później, na początku obecnej dekady, standardowo zaczynając od AVR-ów. Kilka lat temu przy okazji zakupów na Allegro zauważyłem jednak w ofercie jednego ze sprzedawców stare układy AT89C51, co spowodowało natychmiastowy "atak" nostalgii. Od razu zamówiłem kilka sztuk. Dopiero potem zorientowałem się, że nie dysponuję programatorem. Na szczęście okazało się, że te można bez większych problemów kupić na najpopularniejszym chińskim serwisie aukcyjnym. Czekając na przesyłkę zorientowałem się w temacie programowania tych mikrokontrolerów w czasach współczesnych, wczytując się w dokumentację kompilatora SDCC. Po kilku tygodniach dysponowałem już podstawami wiedzy i zestawem narzędzi potrzebnych do realizacji projektu. Na tym etapie musiałem odpowiedzieć sobie na pytanie o jego temat. Szukałem czegoś, co byłoby popularną konstrukcją wśród amatorów elektroników w czasach, gdy ja zaczynałem zajmować się tym hobby. Zegar binarny zdawał się być oczywistą odpowiedzią. Urządzenie powstawało głównie wieczorami, w ciągu kilku tygodni. Składają się na nie dwie jednostronne płytki drukowane. Pierwsza zawiera wyświetlacz oparty na LED-ach oraz zestaw przycisków, druga logikę sterującą. Składają się na nią mikrokontroler AT89C51, zegar czasu rzeczywistego DS1307 z gniazdem baterii podtrzymującej, układ zasilania oraz niewielki głośnik piezoelektryczny. Przeznaczenie tego ostatniego jest dość specyficzne - co sekundę, przy odświeżaniu zawartości wyświetlacza generuje on dźwięk przypominający "tykanie" klasycznego zegara mechanicznego. Celem projektu było stworzenie urządzenia w stylu lat dziewięćdziesiątych, bez współczesnych ulepszeń w stylu automatycznej synchronizacji czasu za pomocą łączności sieciowej albo modułu GSM. Zegar nie robi nic poza wyświetlaniem czasu w formie binarnej (a właściwie BCD), a ustawia się go ręcznie. Oprogramowanie sterujące zostało napisane w języku C i skompilowane za pomocą kompilatora SDCC, szczelnie wypełniając dostępne 4kB pamięci flash mikrokontrolera.Obudowa urządzenia została wycięta laserowo. Za pomocą tego samego narzędzia został na niej wygrawerowany rysunek. Obecnie w realizacji (z uwagi na brak czasu i ważniejsze projekty) jest projekt bliźniaczego zegara, który tym razem będzie korzystał ze współczesnej elektroniki, opartej na module ESP8266.
