2011_P16
Calculator de buzunar
Project Description
Pentru proiect avem de implementat un calculator cu ajutor placii Z3. Calculatorul va implementa urmatoarele operatii:
- adunare, scadere, inmultire, impartire, modulo
- sinus, cosinus
- logaritm in baza 2 si in baza 10
Project Requirements
Trebuie sa emulati Calculatorul din Windows.
Operatii: + - * / % intreaga
logaritm - intreg (baza 2 10)
cos sin
La logaritm ma intereseaza ce algoritm folositi. La cos/sin folositi tabele de cosinus si sinus (atentie la memoria maxima folosita - << 32-8KB)
User Flow
Se incarca programul ce se vrea rulat cu metoda binecunoscuta de la laborator apoi facem pasii Go->0800-0000->CHG/RET si va incepe executia programului.
Datorita insuficientei de butoane avute la dispozitie vom face implementarea operatiilor +,-,/,*,% intr-un program iar in altul operatiile sin, cos, log2, log10;
Din aceasta clipa utilizatorul poate folosi oricare din functiile implementate in programul respectiv.
Implementarea butoanelor:
Pentru program:
0->9 tastele numerice;
A-> '+' ;
B-> '-' ;
C-> '*' ;
D-> '/' ;
E-> '%' ;
F-> 'CE';
arrow-right-> 'sin';
arrow-left-> 'cos';
CHG/RET-> "=" ;
Tastatura avuta la dispozitie si displayul LCD :
Required components
Implementarea tastelor pentru Program1:
Din platform_io.h am folosit functia ReadKey pentru citirea inputurilor is DisplayString pentru afisarea datelor prelucrate.
Software Design
static char cod[19]={'0','2','4','6','8','A','C','E','c','l','1','3','5','7','9','B','D','F','r'};
return cod[key];
}
{
case 'A' : { operatie='p'; nr1=nr2; nr2=0; break;}
case 'B' : { operatie='m'; nr1=nr2; nr2=0; break;}
case 'C' : { operatie='i'; nr1=nr2; nr2=0; break;}
case 'D' : { operatie='d'; nr1=nr2; nr2=0; break;}
case 'E' : { operatie='r'; nr1=nr2; nr2=0; break;}
case 'F' :{nr2=0;nr1=0;break;}
case 'r' :{s=sin[nr2];nr2=0;i=1;break;}
case 'l' :{s=sin[90-nr2];nr2=0;i=1; break;}
case 'c' : {switch (operatie)
{
case 'p': {nr2=nr2+nr1;break;}
case 'm': {nr2=nr1-nr2;break;}
case 'd': {nr2=nr1/nr2;break;}
case 'r': {nr2=nr1%nr2;break;}
case 'i': {nr2=nr1*nr2;break;}
}break;}
default :{
nr2=nr2*10 + (c-'0');
}
}
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
20 Aprilie-> in sfarsit am gasit o placa Z3 care functioneaza corect :D
27 Aprilie-> am implementat convert si am reusit sa citim de la tastatura + DisplayString afiseaza corect pe LCD
11 Mai-> Program este terminat switch-case-ul functioneaza :)
17 Mai-> Finalizat Program si testat proiectul :D:D