Table of Contents

Calculator Numeric

Introducere

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

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:

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:

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:

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