Calculator Numeric

Introducere

Scopul acestui proiect este implementarea unui calculator ce efectueaza urmatoarele operatii aritmetice:

  • adunare
  • scadere
  • inmultire
  • impartire
  • tangenta
  • sin
  • cos
  • arcsin
  • arccos

Descriere generală

Utilizatorul are la dispozitie doua tastaturi de la care va introduce numerele asupra carora se efectueaza calculele si operatiile ce vor fi realizate. Pe ecranul LCD vor fi afisate cifrele pe masura ce ele sunt introduse, un rezultat partial care tine cont de prioritatea operatiilor si rezultatul final atunci cand se apasa tasta egal.

Schema de functionare este urmatoarea:

Hardware Design

Componentele utilizate sunt:

  • doua tastaturi 4×3
  • un ecran LCD DEM16101 16×1
  • panglici conectoare

Schema electrica pentru conectarea tastaturilor si LCD-ului este urmatoarea:

Tastaturile au avut pinii asezati intr-o ordine diferita fata de modul normal in care primii pini corespund coloanelor iar urmatorii liniilor. Asadar am avut urmatoarele asocieri intre linii/coloane si pinii tastaturilor:

  • coloana 1 - pin2
  • coloana 2 - pin0
  • coloana 3 - pin4
  • linia 1 - pin1
  • linia 2 - pin6
  • linia 3 - pin5
  • linia 4 - pin3

Conectarea LCD-ului am facut-o asa cum este redat in schema. De asemenea a conectat pinii 0 si 2 la masa iar pinul 1 la Vcc.

Software Design

Mediul de dezvoltare Ubuntu 10.04.

Pentru afisarea pe LCD am utilizat API-ul din laboratorul 1.

Pentru asigurarea interfetei cu tastatura:

  • void key_init() - functie ce initializeaza tastatura
  • int get_key() - functie ce returneaza un intreg ce reprezinta un indice in vectorul key-pressed
  • int key_pressed[24] - un vector ce reprezinta o mapare a tastelor pentru cele doua tastaturi

Maparea tastelor este urmatoarea:

Calculatorul implementat de mine tine cont de prioritatea operatiilor atunci cand calculeaza. Pe ecran va fi afisat ultimul rezultat conform prioritatilor (de exemplu daca s-a introdus 1 + 2 * 3 * → se va afisa 6). Deasemenea se permite afisare unui numar cu virgula.

Algoritmul dupa care functioneaza calculatorul:

  1. se afiseaza mesajul “START” pe LCD la conectare
  2. se apasa tasta “ON”, dupa care pe ecran se va afisa “0”
  3. se introduc cifre (se poate introduce si un numar cu virgula prin apasarea tastei ce corespunde lui '.')
  4. se apasa un operand si se pune intr-un vector ce retine operanzii; deasemenea numarul citit la pasul anterior se introduce intr-un vector (vectorii pentru operanzi si numere functioneaza ca niste stive).
  5. se repeta pasii 3 si 4. Dupa pasul 4, cat timp prioritatea ultimului operand e mai mica sau egala decat prioritatea ultimului operand se va calcula un rezultat partial extragandu-se din vectorii ce retin operazii si numere.
  6. daca se apasa ”=” se va calcula rezultatul final

In cazul unei operatii nepermise (impartire la zero, arcsin si arccos in afara [-1, 1]) se afiseaza “ERROR” si se asteapta resetarea. In urma operatiei de resetare se va afisa “0” pe ecran si calculul anterior va fi abandonat.

Rezultate Obţinute

Proiectul este functional, se pot efectua operatii aritmetice asupra numerelor introduse de la tastatura iar rezultatul este afisat pe ecran. Am adaugat pozele de mai jos:

LCD-ul:

Tastatura:

Tot calculatorul:

Concluzii

Proiectul a fost interesant dar mi-a ocupat destul de mult timp deoarece am avut probleme la conectarea LCD-ului pentru ca nu se aprindea dar si la conectarea tastaturilor pentru ca au fost incurcati pinii, nu au fot pusi in ordine coloane apoi linii.

Download

Bibliografie/Resurse

pm/prj2012/pbara/calculator.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0