Jak zbudować kalkulator?

15

Jestem nowicjuszem w elektronice. Próbuję zbudować kalkulator od zera jako prosty projekt i hobby boczne, aby zająć się mną.

Moim celem jest zbudowanie prostego kalkulatora, a nie kalkulatora naukowego lub graficznego, chociaż nie mam nic przeciwko otrzymywaniu informacji o tym, jak to zrobić, tylko dla kopnięć.

Czy jest na to dobry tutorial? Jak mam zacząć?

Philoxopher
źródło
2
Tutaj jest zestaw do zbudowania podstawowego kalkulatora 4-funkcyjnego: spikenzielabs.com/Catalog/…
jwygralak67

Odpowiedzi:

26

Oto przykład kalkulatora, który można zbudować bez zbyt dużej wiedzy na temat elektroniki. Jest w pełni funkcjonalny, chociaż dodawanie nie jest uwzględnione.

Tak, żartuję, nie bierz tego zbyt poważnie

W5VO
źródło
lol. Co to jest? Chyba już to widziałem, choć nie jestem pewien. Bardzo ciekawi, czy uda mi się zdobyć jedną z nich. Czy masz nazwę lub link do jednego z nich?
Philoxopher
zainspirowało to moje pytanie: electronics.stackexchange.com/questions/11263
markrages
@KerxPhilo - Hahahahahahahahahahah ...... och, jak czasy się zmieniają.
Connor Wolf,
@markrages, uwielbienie na twoje pytanie, bardzo interesujące :)
Philoxopher
18

To nie jest trywialny projekt. Istnieje wiele podprojektów edukacyjnych, o które należy się martwić. Jednym z nich są przyciski i zaprzeczanie. Innym jest pisanie znaków na wyświetlaczu. Istnieje decyzja, jak chcesz to zaimplementować. Czy chcesz zrobić to z dużego pudełka bramek Nand, czy chcesz wziąć mikrokontroler lub inny procesor i napisać oprogramowanie? Czy jesteś zainteresowany używaniem FPGA i wykonywaniem matematyki w RTL? Musisz podzielić problem na te komponenty i pracować / uczyć się jednego komponentu na raz, a następnie połączyć je razem. Na przykład, jeśli głównym mechanizmem matematycznym jest oprogramowanie na mikrokontrolerze, jedno zadanie obejmowałoby napisanie na komputerze stacjonarnym niektórych funkcji C, które można podawać naciśnięciom klawiszy i wypisywać znaki, które ostatecznie trafią na ekran. Zadanie nietrywialne, jeśli nigdy wcześniej nie programowałeś.

Jako projekt edukacyjny chciałbym zdobyć kilka starterów msp430, każdy za 5 dolców lub odkrycie linii wartości STM32 (stm32 / arm oparte na jednym ramieniu, a nie drugie) za około 12 dolców każdy. Wielu ludzi poprowadzi cię w kierunku arduino, i to też jest świetna platforma, ma swoje zalety i wady, nie chciałbym iść z nią jako moim pierwszym mikrokontrolerem. Kup prosty dwuliniowy panel LCD, ziemia LCD była dobrym miejscem, być może po prostu idź do SparkFun. Weź jedną płytkę mikrokontrolera i podłącz ją do panelu LCD i naucz się umieszczać postacie na wyświetlaczu. Nauczyłbym się wtedy, jak korzystać z UART na mikrokontrolerze, który często zaczyna się od wysadzania bajtów, a następnie odbierania i echa. Użyj odbiornika Uart, aby odbierać rzeczy do wyświetlenia, a następnie użyj głupiego terminalu (kit, hyperterm, minicom) z komputera, a następnie upewnij się, że działa. Następnie weź inny mikrokontroler, wykorzystaj swoje doświadczenie w pracy i pracuj nad podstawowym silnikiem matematycznym, z komputera podaj 0 - 9, +, -, = najpierw dodaj następnie pomnóż i podziel, a następnie zmiennoprzecinkowy, jeśli jesteś wystarczająco odważny do tego (lub mieć bibliotekę, która pasuje). Dane wyjściowe z modułu matematycznego odbijają liczby wejściowe i wypisują wyniki, gdy wysyłane jest = itp. Następnie wymyśl, co zrobić z przyciskami, znajdź tablicę przycisków, podaj je jakoś do trzeciego mikrokontrolera, zapisz i przekształć w Wyjście z 0 - 9, +, -, = do mikrokontrolera matematycznego. NASTĘPNIE, zredukuj to wszystko do jednego mikrokontrolera bez uartów pośrodku. skorzystaj z doświadczenia uart i out i pracuj nad podstawowym silnikiem matematycznym, z komputera podaj 0 - 9, +, -, = najpierw dodaj mnożenie i dziel, a następnie zmiennoprzecinkowy, jeśli masz na to dość odwagi (lub masz biblioteka, która pasuje). Dane wyjściowe z modułu matematycznego odbijają liczby wejściowe i wypisują wyniki, gdy wysyłane jest = itp. Następnie wymyśl, co zrobić z przyciskami, znajdź tablicę przycisków, podaj je jakoś do trzeciego mikrokontrolera, zapisz i przekształć w Wyjście z 0 - 9, +, -, = do mikrokontrolera matematycznego. NASTĘPNIE, zredukuj to wszystko do jednego mikrokontrolera bez uartów pośrodku. skorzystaj z doświadczenia uart i out i pracuj nad podstawowym silnikiem matematycznym, z komputera podaj 0 - 9, +, -, = najpierw dodaj mnożenie i dziel, a następnie zmiennoprzecinkowy, jeśli masz na to dość odwagi (lub masz biblioteka, która pasuje). Dane wyjściowe z modułu matematycznego odbijają liczby wejściowe i wypisują wyniki, gdy wysyłane jest = itp. Następnie wymyśl, co zrobić z przyciskami, znajdź tablicę przycisków, podaj je jakoś do trzeciego mikrokontrolera, zapisz i przekształć w Wyjście z 0 - 9, +, -, = do mikrokontrolera matematycznego. NASTĘPNIE, zredukuj to wszystko do jednego mikrokontrolera bez uartów pośrodku. Dane wyjściowe z modułu matematycznego odbijają liczby wejściowe i wypisują wyniki, gdy wysyłane jest = itp. Następnie wymyśl, co zrobić z przyciskami, znajdź tablicę przycisków, podaj je jakoś do trzeciego mikrokontrolera, zapisz i przekształć w Wyjście z 0 - 9, +, -, = do mikrokontrolera matematycznego. NASTĘPNIE, zredukuj to wszystko do jednego mikrokontrolera bez uartów pośrodku. Dane wyjściowe z modułu matematycznego odbijają liczby wejściowe i wypisują wyniki, gdy wysyłane jest = itp. Następnie wymyśl, co zrobić z przyciskami, znajdź tablicę przycisków, podaj je jakoś do trzeciego mikrokontrolera, zapisz i przekształć w Wyjście z 0 - 9, +, -, = do mikrokontrolera matematycznego. NASTĘPNIE, zredukuj to wszystko do jednego mikrokontrolera bez uartów pośrodku.

Inną alternatywą jest zdobycie jednej z rp-232 fpga z knjn.com lub kratownicy brevia (czy to wystarczająco duże?) Lub wielu innych, a następnie praca na każdym z bloków funkcjonalnych przy użyciu języka RTL. jego części będą znacznie łatwiejsze niż równoważne oprogramowanie, niektóre będą nieco trudniejsze niż oprogramowanie.

Jeśli możesz podać więcej informacji na temat tego, co myślisz, pudełko bramek Nand lub rozwiązanie oparte na mikrokontrolerze, czy zastanawiasz się nad czymś innym?

old_timer
źródło
7

Najprostszym kalkulatorem elektronicznym, jaki można zbudować, byłby czterofunkcyjny kalkulator binarny. Można go zbudować za pomocą przełączników do wprowadzania liczb binarnych, a podstawowe elementy logiczne rodziny 7400 mogłyby obsłużyć sumatory obsługujące dodawanie. Możesz użyć albo pojedynczych diod LED do przedstawienia każdej liczby binarnej na wyjściu, albo możesz użyć kilku siedmiosegmentowych wyświetlaczy do wyświetlenia liczby w systemie szesnastkowym. Zbudowanie kalkulatora binarnego pozwoliłoby uniknąć budowania konwertera dziesiętnego na binarny i pomógłby zapoznać się ze sposobem działania elektroniki cyfrowej. Jeśli planujesz zająć się elektroniką cyfrową jako hobby, możesz rozważyć zakup Logisim , darmowego programu, który pozwala symulować obwody przed ich zbudowaniem.

wynalazca
źródło
2
Łał. Czy w dobie System-on-Chip chcesz, żeby podłączył dwadzieścia bramek na cyfrę, żeby dodać ? Nawet pierwszy kalkulator kieszonkowy tego nie zrobił. Kalkulatory jednoukładowe istnieją już od trzydziestu lat.
Ron
Cóż, możesz użyć 74181 dla 4-bitowego wycinka. Byłoby łatwiej, gdyby nic więcej.
W5VO,
1
Tak, można to zrobić za pomocą jednego lub dwóch układów (za pomocą mikroprocesora takiego jak w tym przykładzie ), jeśli chce on utworzyć kalkulator w oprogramowaniu. Być może zbudowanie całego kalkulatora przy użyciu dyskretnych komponentów zajęłoby zbyt dużo czasu, ale jeśli chce się dostać do sprzętu, kalkulator binarny może być dobrym punktem wyjścia.
wynalazca,
To jest naprawdę dobry pomysł, aby właściwie zrozumieć matematykę bitów binarnych. Z moją 12-letnią córką wykonałem projekt na pół sumatora, podczas gdy zabrakło nam miejsca na płycie do chleba - poszła dalej „zbudować” ją praktycznie w Minecrafcie. „Zrozumiała” koncepcję bram i dodawania bitów, o co w tym wszystkim chodziło.
Ron J.
Co do tego, co jest warte, kalkulatory (zwykle) nie działają wewnętrznie w trybie binarnym i konwersji, działają bezpośrednio w BCD. Czterobitowy kawałek wystarczy ALU (tak naprawdę było to pierwotne zadanie Intel 4004).
Spehro Pefhany
6

Oto jak to zrobiłem.

Wybierz komponenty:

Input Device(Klawiatura 4x4 w moim przypadku. 10 klawiszy dla cyfr, 4 dla operatorów, jeden dla „=” i jeden dla „resetu / odświeżania”)

Processor(8-bitowy AVR)

Output device(16x2 LCD)

Power supply(Regulator LM7805 z baterią 9-woltową)

BreadBoard(wykonaj płytkę drukowaną po uruchomieniu)

Wybrałem programować w asemblerze (uczyć się), kwestię osobistego wyboru. Użyłem AVR Studio 4 jako IDE i domowego programisty ISP opartego na lpt do flashowania hexa do AVR.

potem napisałem sterowniki do LCD i klawiatury. Gdy mogłem pobierać dane wejściowe i generować dane wyjściowe, zacząłem analizować liczby dziesiętne i operatory, następnie przeanalizowałem wyrażenia i przeczytałem o Infix, Postfix i Prefiksie . Pracowałem w asemblerze, więc nie było „wsparcia dla typu danych FLOAT” i ostatecznie wdrożyłem własny niestandardowy typ danych (typ danych oparty na BCD dla utrzymania 15-cyfrowej precyzji dziesiętnej był ogromnym marnotrawstwem pamięci RAM!).

Wszystko to gotowe i Voila .. mój kalkulator był gotowy (nazwałem go BUB!).

Mój działał przy 1 MHz i był w stanie pokonać casio_991MS (pod względem precyzji dziesiętnej oraz mnożenia i dzielenia).

Mam nadzieję, że to pomaga innym.

vvy
źródło
5

Możesz użyć zestawu programistycznego ze wszystkim, co już jest na płycie, abyś mógł skupić się na oprogramowaniu. Na przykład http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en024858&part=DM240001 ten zestaw ma PIC, LCD i kilka przycisków. Istnieje wiele nagłówków, aby dodać dodatkowe przyciski. Jedyną wadą jest to, że ekran LCD jest większy, niż początkowo możesz chcieć użyć, ale na pewno zaczniesz.

Jeśli będziesz szukać, możesz znaleźć mniejsze (i tańsze), od których możesz zacząć.

Użycie takiego zestawu ułatwi rozpoczęcie pisania kodu, ponieważ będą to przykłady, i usunie problem ze sprzętem, ponieważ wszystko jest skonfigurowane poprawnie. Kolejną wadą jest to, że ten zestaw wykorzystuje wysokiej klasy zdjęcia, które są przesadą dla projektu kalkulatora, ale daje ci przestrzeń do rozwoju i modyfikowania go w przyszłości do wykonywania innych zadań. Otrzymasz również schematy, które będą stanowić punkt wyjścia do tworzenia własnych plansz w przyszłości.

smashtastic
źródło
5

Na mojej półce mam „Electronic Calculators” H. Edwarda Robertsa, pod redakcją Forrest M. Mims III. 1974.

To dość pouczające o tym, jak ludzie używali do budowania kalkulatorów w 1974. Wiele zdjęć są kompletnego cyklu życia masowej produkcji kalkulatorze MITS - zdjęcia z prototypowania (wielki bałagan spaghetti przewodów), projektowanie płytek drukowanych (r rubinie na stół kreślarski), poszczególne części, linia montażowa, maszyna do lutowania falowego i rozwiązywanie problemów.

Ach, wiele rzeczy zmieniło się od tego czasu. Dzisiejsze książki zwykle unikają pokazywania dużego spaghetti bałaganu drutów. Dzisiejsze kalkulatory unikają przyłożenia napięcia sieciowego bezpośrednio do płytki drukowanej kalkulatora.

Wiele rzeczy jest wciąż takich samych. Ludzie wciąż robią duży spaghetti bałagan drutów podczas prototypowania.

Davidcary
źródło
3

Na początek powinieneś pomyśleć o głównych elementach, których będziesz potrzebować. Prawdopodobnie będziesz potrzebować mikrokontrolera, klawiatury i ekranu LCD. Po wybraniu tych składników powinno to być tak proste, jak opracowanie oprogramowania układowego.

Ryan
źródło
Więcej szczegółów, które możesz podać, pamiętaj, że jestem całkowitym nowicjuszem, jeśli chodzi o budowę elektroniki, i chcę podjąć to wyzwanie jako pierwsze. Dzięki powyższym informacjom jest to dobry początek, jednak nie wiem, jakiego mikrokontrolera potrzebowałbym. Jak opracować oprogramowanie wewnętrzne? Czy piszesz oprogramowanie układowe w C i ładujesz je do oprogramowania układowego, czy też musisz je zapisać w ASM?
Philoxopher
Czy mógłbyś również zapewnić dobrą stronę internetową, która sprzedaje sprzęt elektroniczny w bardzo niskiej cenie dla hobbystów? Doceń swoje wsparcie!
Philoxopher
Dwoma głównymi mikrokontrolerami hobbystycznymi są PIC i AVR. Istnieją kompilatory C dla obu tych urządzeń. Prosty mikrokontroler będzie działał dla twojego projektu, o ile ma wystarczającą liczbę pinów wejścia / wyjścia do połączenia z klawiaturą i wyświetlaczem LCD. Dobrą stroną internetową dla hobbystycznej elektroniki byłby SparkFun
Ryan
2
@KerxPhilo: Tak, większość osób z wbudowanym systemem pisze oprogramowanie układowe w C. Ladyada ma dobre samouczki na temat pisania oprogramowania układowego w C i przesyłania go do mikrokontrolera, a także samouczki na temat podłączania wyświetlacza LCD i wyświetlania na nim różnych rzeczy .
davidcary,
3

Wierzę, że może to być dobry pierwszy projekt edukacyjny, ale nie jest trywialny i po drodze będziesz musiał nauczyć się sporo, a także uzbroić się w cierpliwość, ponieważ projekt obejmuje wiele podprojektów do rozwiązania sposób.

Pierwszą przeszkodą w projektowaniu, którą musisz podjąć, jest to, na jakim poziomie technologii chcesz to zrobić? Z mikrokontrolerem lub bez niego (w dużej mierze samowystarczalny mikroprocesor), dyskretna logika (np. AND, OR, bramki NOR i przerzutniki) z / bez jednostek arytmetycznych (ALU), logika programowalna (CPLD, FPGA), coś innego, czego nie mam nie wspomniane ani nie wzięte pod uwagę. Powinno to przede wszystkim dotyczyć technologii zastosowanej do obliczeń, kontrole wejścia / wyjścia są decyzjami drugorzędnymi (siedmiosegmentowe wyświetlacze LED, panel LCD), na które wpływ ma przede wszystkim estetyka lub koszt.

Jednym z potencjalnie użytecznych miejsc do nauki o obliczeniach cyfrowych jest bardzo dostępna książka How Computers Do Math (ISBN: 0471732788) autorstwa dziwnego Clive'a Maxfielda. Jest to napisane na „miękkim” - poziomie programowania lub logicznym, który musisz zrozumieć, aby móc wykonać obliczenia.

Ktoś inny jako przykład podał projekt uWatch (- mikro-zegarek ), aw Internecie istnieją odniesienia do inżynierów elektryków (lub studentów EE), którzy zbudowali własny kalkulator w latach 70. Istnieją również pewne szczegóły dotyczące budowy kalkulatora opartego na FPGA (programowalnym urządzeniu logicznym) .

Jeśli jesteś nowicjuszem w dziedzinie elektroniki (lub elektroniki cyfrowej), sugeruję użycie mikrokontrolera jako punktu wyjścia w twoim projekcie, zajrzyj na stronę wspomnianej książki, aby poczuć złożoność programowania (niewiele, jeśli masz jakieś doświadczenie programistyczne) do mikrokontrolera i stamtąd.

Mctylr
źródło
0

Wymagania sprzętowe

  • Klawiatura do wprowadzania danych przez użytkownika
  • Wyświetlacz LCD do wyświetlania wejście i jej wynik
    w prawdziwym produktem kalkulatora, trzeba niestandardowego LCD do wyświetlania znaków specjalnych lubią =, -i M(dla MC , MR i MS operacji) znaki. Niestandardowa konstrukcja wyświetlacza LCD kosztuje do 3000 $, ale wtedy niestandardowo zaprojektowane wyświetlacze LCD stają się bardziej ekonomiczne niż inne uniwersalne. Ponieważ twój projekt jest tylko dla hobby, sugeruję, abyś użył wyświetlacza ogólnego przeznaczenia z kontrolerem KS0108.
  • Bardzo tani i niewymagany mikrokontroler
    Potrzebujesz bardzo podstawowego kontrolera, ponieważ będziesz wykonywać bardzo proste zadania. Możesz użyć taniego mikrokontrolera PIC.

Etapy projektowania

  • Steruj wyświetlaczem LCD
    Zarządzaj wyświetlaczem LCD. Napisz na nim kilka cyfr. Napisz do tego interfejs oprogramowania.
  • Przetestuj klawiaturę
    Wykonaj te same czynności, co w przypadku wyświetlacza LCD. Upewnij się, że masz kontrolę oprogramowania na klawiaturze.
  • Napisz algorytmy wykonujące operacje arytmetyczne
    Jeśli używasz mikrokontrolera, który może się zwielokrotniać i dzielić, nie musisz wykonywać tych operacji samodzielnie; ale musisz zapłacić więcej za mikrokontroler, z drugiej strony, uczysz się mniej i zyskujesz mniej doświadczenia podczas swojego projektu.

Jeśli chcesz dodać bardziej zaawansowane funkcje arytmetyczne (takie jak rootowanie kwadratowe, obliczanie sinus / cosinus itp.), Musisz zaimplementować odpowiednie algorytmy obliczeniowe przy użyciu metody Newtona lub rozszerzenia szeregów Taylora .

W przeciwnym razie ma to być prosty projekt. Twoim głównym wyzwaniem będzie prowadzenie ekranu LCD i klawiatury, jeśli nie masz z tym większego doświadczenia.

hkBattousai
źródło
W zależności od poziomu ambicji można użyć kilku rejestrów przesuwnych i nieco dyskretnej logiki wraz z „ROM” (prawdopodobnie EPROM lub równoległy flash), aby zbudować bardzo surowy mikrokontroler. Prosty kalkulator może być możliwy przy użyciu 20 lub mniej żetonów, szczególnie. jeśli ktoś używa dość dużej pamięci ROM. Typową instrukcją byłoby: „wyjście X w rejestrze przesuwnym 1, Y w rejestrze przesuwnym 2, ustaw strobę wyjściową na Z, a następnie pobierz następną instrukcję z adresu utworzonego przez połączenie wartości niektórych rejestrów ze stałą A”.
supercat
Nie trzeba mieć żadnych obwodów, aby wykonać dodawanie BCD - wszystko to można obsłużyć w kodzie. Jeśli jeden ma dwa osobno kontrolowane rejestry przesuwne, przesuń je w razie potrzeby, aby ustawić argumenty źródłowy i docelowy, a następnie użyj czterech instrukcji, aby ustawić procesor w jednym z 20 stanów na podstawie wartości czterech bitów pobranych z każdej wartości; następne cztery instrukcje mogą pobrać kolejne cztery bity z każdego rejestru przesuwnego, zastępując jeden z nich pierwszymi czterema bitami obliczonego wyniku.
supercat
Kwestionowałbym wymóg dotyczący „niestandardowego wyświetlacza LCD”. Kalkulatory LCD nadają każdemu wyglądowi towar towarowy z kilkoma odmianami - skok padu, prosty kontra naukowy (co zwykle implikuje 8 vs 10 cyfr). W ramach powyższego wyboru będą dziesiątki, jeśli nie setki elementów, które są funkcjonalnie równoważne, nawet jeśli różnią się nieznacznie wymiarami lub stylem czcionki.
Chris Stratton,
@ChrisStratton: Jeśli ktoś chce 8-cyfrowy wyświetlacz bez sygnalizatorów, dostępne są gotowe części spełniające ten opis. Chyba nie widziałem żadnych gotowych wyświetlaczy, które byłyby funkcjonalnie równoważne z tymi w typowym kalkulatorze. Należy pamiętać, że kalkulatory mogą używać połączeń pasków zebry, które są tańsze niż szpilki do produkcji, ale trudniejsze do pracy w projekcie DIY.
supercat
@ supercat - LCD używane w tanich kalkulatorach zwykle używają taśmy z klejem aktywowanym termicznie, a nie paska zebry. Są to w dużej mierze standardowe gotowe produkty, które można wymieniać między seriami produkcyjnymi.
Chris Stratton,
0

Najłatwiejszym sposobem wdrożenia kalkulatora byłoby prawdopodobnie użycie mikrokontrolera. Jeśli zdecydujesz się wybrać tę trasę, pierwszym krokiem byłoby znalezienie kodu do wykonania obliczeń. Potrzebujesz programu, który akceptuje operandy i operatory i wyrzuca wynik. Ten stosunkowo prosty moduł kalkulatora napisany w cpowinien dać ci wyobrażenie o tym, co jest konieczne. Może dodawać, odejmować, mnożyć i dzielić, a także niektóre operacje bitowe, a jeśli używasz odwrotnej notacji polskiej, jak w kalkulatorach naukowych, może rozwiązywać podwyrażenia w nawiasach. Aby przeczytać, które przyciski zostały wciśnięte, zbierz każdy „token” w buforze konwertując dowolne cyfry na rzeczywiste wartości liczbowe, a następnie, gdy pojawi się przycisk „=”, podajesz listę tokenów do tego kodu ewaluacyjnego, który redukuje i rozwiązuje wyrażenie skutkujące pojedynczą wartością.

Squarewav
źródło
0

Dla początkujących oto moja sugerowana LM dla twojego projektu:

  • 1x tablica Arduino Uno lub Leonardo, które mają wymagany mikrokontroler
  • HD44780LCD oparty na 1x , podobnie jak wszechobecne 16x2
  • 1x klawiatura matrycowa 4x4

Umożliwi to zbudowanie podstawowego kalkulatora.

Dla bardziej zaawansowanych celów oto mój sugerowany zestawienie komponentów:

  • 1x Arduino Mega 2560 lub Arduino Due (w tym przypadku program będzie duży)
  • 1x ST7920matrycowy wyświetlacz LCD z matrycą, który obsługuje zarówno znaki, jak i grafikę
  • 1x Arduino Host USB Shield (tylko Mega 2560, Ze względu na natywną funkcję hosta USB) na klawiaturze

Umożliwi to zbudowanie skomplikowanego kalkulatora graficznego, takiego jak seria TI-83 Plus lub TI-nSpire.

Maxthon Chan
źródło