Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Kalkulator - Od tego co nie jest w temacie

greenboy 10 Gru 2004 19:55 1443 9
  • #1 10 Gru 2004 19:55
    greenboy
    Poziom 2  

    Witam wszystkich!

    Na wstępie chciałbym powiedzieć, iż jestem osobą totalnie nie znająca się na elektronice a poniższe pytanie zadaje celem poszerzenia horyzontów. Więc wybaczcie jeśli wystąpi błędne rozumowanie, złe nazewnictwo czy coś w ten deseń.

    Chciałbym się dowiedzieć jak zaprojektować kalkulator. Taki zwykły, bez dodatkowych funkcji, tylko +, -, /, * i ewentualnie pierwiastkowanie. Co jest potrzebne do konstrukcji? Jaki procesor, jaki lcd etc.

    Jeśli ktoś zechce się podzielić ze mną swoimi informacjami to z góry dziękuję!

    0 9
  • #2 10 Gru 2004 20:00
    Xitami
    Poziom 29  

    Powiedz jeszcze czemu Cię to interesuje, serio, to ważne pytanie.

    0
  • #3 10 Gru 2004 20:38
    greenboy
    Poziom 2  

    Moje zainteresowanie tym tematem bierze się z czystej ciekawości świata. Jakiś czas temu rozmawiałem z ciekawym człowiekiem, który w bardzo ciekawy sposób opowiadał mi o różnych elektronicznych urządzeniach. Takich, które ułatwiają czy może raczej urozmaicają człowiekowi życie takich właśnie jak kalkulator, termometr elektroniczny, urządzenie do sterowania światłem w domu etc. Niestety była to zupełnie przypadkowa znajomość i nie mam do niego żadnych namiarów, a tak to bym jego pomęczył :)
    Generalnie chciałbym spróbować zrozumieć jak działają niektóre rzeczy, jakie występują zależności. Jak próbowałem coś znaleść w necie to wszystko to dla mnie jest zbyt skomplikowane. Po prostu jestem laikiem w tym temacie i nawet nie mam podstaw. Studiuję zupełnie nie pokrewne rzeczy bo zarządzanie i marketing i tam wystarczy przeczytać książkę raz lub dwa i nie ma rzeczy niezrozumiałych :)

    0
  • #4 10 Gru 2004 21:12
    Xitami
    Poziom 29  

    Nie szukaj jakichś tam szczegółów. Poszukaj o maszynie Turinga i twirdzeniu Gudla (kto wie jak to się pisze?), a najlepiej, „Nowy umysł cesarza”, Penrosa chyba.
    A co do „podstawowego” pytania, JAK?
    Tysiąc dróg, procesor? Dowolny!, LCD? Wystarczy że będzie działał ;)
    Bardzo fajnym procesorem jest „Pentium” to które siedzi na drugim końcu Twojej klawiatury! Ktoś powie, „Pentium do kalkulatora?” i co z tego, no bo czemu nie?
    No bo jakie kryteria?

    0
  • #5 10 Gru 2004 21:18
    brzoskwin
    Poziom 15  

    Pisze sie Gödla :D
    I twierdzenie Gödla:
    Jeżeli S jest zawierającym w sobie arytmetykę liczb naturalnych i S jest niesprzeczny (spójny), to S jest niezupełny, tzn. istnieją zdania w S, których prawdziwości nie da się udowodnić na podstawie przyjętych aksjomatów.

    II twierdzenie Gödla:
    Jeżeli S jest niesprzeczny, to niesprzeczność S jest niedowiedlna w S.

    0
  • #6 10 Gru 2004 21:26
    Xitami
    Poziom 29  

    Dzięki Brzoskwin.
    Napisałem źle, a ktoś wiedział o czym piszę, fajnie.
    Twierdzenie wygląda „akademicko” i „uczenie” ale ma niesamowite konsekwencje.

    0
  • #7 10 Gru 2004 21:41
    greenboy
    Poziom 2  

    Herr Xitami, gratuluje poczucia humoru i oczywiscie dziękuję za niezwykle życiowe rady. Myślę jednak, że twierdzenia Gödla zostawię sobie na później. Myślałem raczej o małym kalkulatorze, więc pentium odpada....

    0
  • Pomocny post
    #8 10 Gru 2004 22:36
    qmpel
    Poziom 16  

    Hey !!

    hehe nieźle Panowie :)
    Co do kalkulatora to jakoś na pierwszy rzut, jako człowiek, który nie zna się w ogóle na elektronice, to dosyć zawiły problem, zacznij od jakichś dzwonków, alarmów, liczników itp. :)
    No ale poważnie, tak jak Xitami pisał jest duuużo dróg do zrealizowania tego tematu, od układów logicznych do procków (tych małych '51 i dużych P4). Za pomocą "czystej elektroniki scalakowej" dodawanie i odejmowanie da się zrealizować na sumatorach (nie pamietam na pamięć numerków), a liczby wpisywać poprzez licznik binarny. Z mnożeniem i dzieleniem jest trudniej, normalnie na kartce robi się to tak jak ze zwykłymi liczbami ale z realizacją elektroniczna (bez procka na scalaczkach) jest gorzej, no ale jak bardzo to tego nie napiszę, bo nie pamiętam i nie mam gdzie zajrzeć :)
    ...a tak w ogóle to nie mam sił pisać, bo mnie kaszel męczy :(

    Pozdrawiam !!

    0
  • #9 11 Gru 2004 13:25
    Xitami
    Poziom 29  

    No to szukasz tematu do kawiarnianej pogawędki, czy schematu i kodu?
    Procesorek taki powinien po pierwsze być w stanie sterować w sumie sporym wyświetlaczem, i myślę że to właśnie powinno decydować o wyborze, swój głos oddaję na „motylka” z Atmela.

    0
  • Pomocny post
    #10 12 Gru 2004 01:25
    Paweł Es.
    Pomocny dla użytkowników

    No to właściwie się każdy nada do tego celu.

    Najprościej jest zapisać liczby w układzie dziesiętnym: jedna komórka pamięci jedna cyfra. Dodatkowa komórka do pamiętania znaku i jeszcze jedna do pamiętania położenia przecinka. Muszą być takie dwa zestawy dla obu wprowadzanych liczb.

    Przed dodawaniem i odejmowaniem przesuwasz jedną liczbę tak by przecinki były w tym samym miejscu (odrzucasz te cyfry po przecinku, które wychodzą poza zakres). Można też liczyć z dokładnością o jeden większą niż jest to pokazywane na wyświetlaczu wtedy dodajemy na większej ilości cyfr po przecinku i zaokrąglamy ostatnią cyfrę.

    Mnożenie można realizować przez wielokrotne dodawanie. Aby zmniejszyć liczbę dodawań dokonujemy przesunięcia pozycyjnego mnożnej (podobnie jak przy mnożeniu na papierze). Czyli maksymalna ilość dodawań to 9*N gdzie N ilość pozycji mnożnika.

    Do następnych operacji używa się metody iteracyjnej Newtona-Raphsona na szukanie rozwiązania równania f(x)=0, gdzie kolejne przybliżenie dane jest wzorem

    x[i+1]=x[i]-f(x[i])/f'(x[i])

    gdzie f' pierwsza pochodna funkcji.

    Dzielenie polega na iteracyjnym przybliżaniu ułamka 1/x
    Zwykle pierwsze przybliżenie jest stablicowane (decydują np. dwie najstarsze cyfry x) dla zmniejszenia ilości iteracji.

    dzielenie przekształcamy do postaci iloczynowej

    a=y/x=y*1/x

    liczymy iteracyjnie 1/x i wynik mnożymy przez y.

    Pierwiastek liczymy iteracyjnie ze wzoru (metoda Newtona-Raphsona)


    $$y[n+1]=0.5*(\frac{a}{y[n]}+y[n])$$

    gdzie

    a - liczba pierwiastkowana
    y[n] - poprzednie przybliżenie
    y[n+1] - nowe przybliżenie

    Obliczenia prowadzimy do momentu gdy przestaną się zmieniać cyfry na założonej ilości miejsc po przecinku czyli ujmując to wzorem:

    |y[n+1]-y[n]|<eps

    gdzie
    | | - moduł liczby
    eps - założona dokładność np. 0.0000001

    Największym problemem jest znalezienie pierwszego przybliżenia (różne firmy robią to w różny sposób, metoda zależy także od sposobu reprezentacji wewnętrznej liczb w kalkulatorze).

    Można np. przedstawić liczbę w postaci

    x=x0*100^N czyli pierwiastek będzie √x=√x0*10^N

    1. Normalizujemy liczbę do znanego zakresu 0..1 (dzieląc wielokrotnie przez 100 i zliczając ilość podzieleń = N - robimy to przesuwając przecinek o 2N pozycji w lewo).

    2. liczymy pierwsze przybliżenie z przedziałowego równania liniowego (przybliżamy wykres funkcji pierwiastek w zakresie 0..1 linią łamaną) y0=a*x0+b,
    gdzie a,b współczynniki danego odcinka łamanej.

    3. stosujemy iteracje NR np. 4 krotnie (ilość zależy od jakości przybliżenia w punkcie 2).

    4. wynik pomnożyć n-krotnie przez 10 (przez przesunięcie przecinka).

    0
  Szukaj w 5mln produktów