Back

2011_P2

Viewing page version #12
(Restore this version) 

Modified: 30 March 2010, 9:51 AM   User: cirneanu stefan  → cs

Calculator de buzunar

Project Description

Proiectul implica emularea calculatorului din windows cu programul Open Watcom si integrarea cu ajutorul placii EV/Z3.

Project Requirements

Proiectul consta in implementarea calculatorului din windows.Acesta presupune crearea unui program  in Open Watcom pentru efectuarea operatiilor:

  • adunare
  • scadere
  • impartire a 2 numere intregi
  • inmultire a 2 numere reale cu 2 zecimale
  • extragerea radacinii patrate dintr-un numar cu precizie de 2 zecimale.

User Flow

Utilizatorul poate folosi proiectul prin intermediul tastaturii placii EV/Z3.Astfel,

Pasii care trebuie urmati de utilizator sunt:

  1. Utilizatorul introduce primul numar(format din cifre de la 0 la 9)
  2. Utilizatorul alege operatia dorita:
  • Pentru operatia de adunare,se apasa tasta A de pe placuta EV/Z3;
  • Pentru operatia de scadere,se apasa tasta B de pe placuta EV/Z3;
  • Pentru operatia de inmultire,se apasa tasta C de pe placuta EV/Z3;
  • Pentru operatia de impartire,se apasa tasta D de pe placuta EV/Z3;
  • Pentru operatia de radical,se apasa tasta E de pe placuta EV/Z3;

3.  Utilizatorul introduce cel de-al doilea numar(format din cifre de la 0 la 9):

Dupa efectuarea pasului 3,utilizatorul are mai multe posibilitati de continuare a calculului:

  • Daca doreste afisarea rezultatului,utilizatorul apasa tasta F de pe placuta EV/Z3;
  • Dar daca utilizatorul,dupa introducerea celor 2 numere si a operatiei dorite,alege sa faca inca o data operatia precedenta,atunci apasa din nou tasta corespunzatoare operatiei si va observa ca rezultatul spre exemplu in cazul adunarii 2+3=5 ,va aduna al doilea operand la rezultat -->8.

Required components

 

Software Design

In prima etapa a proiectului,am folosit pentru compilarea codului programul Microsoft Visual Studio,iar dupa accea,programul Open Watcom.

Codul programului se bazeaza pe mai multi algoritmi:

  1. Algoritm pentru apasarea pe placuta EV/Z3 a unor caractere si intoarcere acestor caractere in calculator(a codurilor acestora) pentru efectuarea operatiilor dorite.

Astfel,daca se apasa 2 A 4 si utilizatorul apasa tasta F,atunci calculatorul va stii sa faca 2+4 si va returna spre afisare pe placuta rezultatul 6.

unsigned char getch()
{
//citeste codul de la tastatura
int code;
code=kIo.ReadKey();
//testam ce cod este
switch(code)
{
case 0x00:
return '0';
case 0x0A:
return '1';
case 0x01:
return '2';
case 0x0B:
return '3';
case 0x02:
return '4';
case 0x0C:
return '5';
case 0x03:
return '6';
case 0x0D:
return '7';
case 0x04:
return '8';
case 0x0E:
return '9';
case 0x05:
return 'A';
case 0x0F:
return 'B';
case 0x06:
return 'C';
case 0x10:
return 'D';
case 0x07:
return 'E';
case 0x11:
return 'F';
default:
return '\0';
}  
}

//Vectorul de caractere in ordinea crescatoare a codurilor fiecarui caracter in parte

char coduri[19]={0,2,4,6,8,'A','C','E','D','F',1,3,5,7,9);

void readkey() //intoarce in monitor codul tastei apasate
{
while (1)
{
int key=kIo=kIo.ReadKey();
kIo.DisplayBuffer(&key,2);
}
}

void convert(int key)
{
return coduri[key];
}

2.   Algoritm pentru efectuarea radicalului de ordin 2 dintr-un numar

float radical(int x)
{
float r1,r2;                     // calcul radical din x prin aproximatii
r2=x;                              // aproximatia initiala
do {
r1=r2;                          // r1 este aprox. veche
r2=(r1+x/r1)/2;            // r2 este aprox. mai noua
} while ( abs(r2-r1));   // pana cand r2==r1

return r2;
}

Results

O imagine de ansamblu a cum functioneaza proiectul, screenshoturi, filmulete cu proiectul functionand. Alte detalii care le credeti importante.

Download

Arhiva cu schema hardware + cod microcontroller + tot proiectul OpenWatcom.

Arhiva va contine 2 directoare (1 singur pentru proiecte doar software)

Hardware design - schema uC + codul folosit pentru a genera fisierul .HEX

Software design - template-ul Open Watcom folosit

Status

Saptamana 25 aprilie-1 mai ==== realizarea codului programului in Microsoft Visual  Studio

Saptamana 2 mai - 8 mai ====implementarea codului in OpenWatcom