Introducere

Proiectul ales se numeste Calculatorul aritmetic; in cadrul lui se va realiza un calculator numeric cu afisaj LCD care sa dispuna de urmatoarele functii:

1. Operatii aritmetice simple: adunare, scadere, inmultire, impartire
2. Radical
3. Ridicare la putere
4. Logaritm
5. Conversie zecimal-binar/hexazecimal/octal

Descriere generala

Schema bloc a proiectului este:

 Schema bloc a proiectului.

Input: datele furnizate de la cele doua tastaturi;
Output: rezultatul calculului aritmetic va fi afisat pe LCD.

Hardware design

Piesele necesare acestui proiect, pe langa cele pentru etapa 1, sunt:

- doua tastaturi 4×4

- un display LCD 16×2



Atat pentru conectarea tastaturilor cat si a LCD-ului am folosit barete SIL si banda de cablu, deoarece aceasta solutie este mai practica si mai lipsita de riscuri (daca cele trei componente ar fi legate direct la pinii microcontrolerului, s-ar putea face conexiuni nedorite intre pini).



Schema electrica a componentelor este:



Conectarea LCD-ului (pin LCD – pin Atmega16):
- Pinul 4 (RS)- pinul 40(PA0)
- Pinul 5 (RW)– pinul 39(PA1)
- Pinul 6 (E) - pinul 38(PA2)
- Pinul 11(D4)– pinul 36(PA4)
- Pinul 12(D5)– pinul 35(PA5)
- Pinul 13(D6)– pinul 34(PA6)
- Pinul 14(D7)– pinul 33(PA7)

Conectarea tastaturii (pin tastatura – pin Atmega16):
- Pinul A – pinul 5 (PB4, pentru a doua tastatura PC4)
- Pinul B – pinul 6 (PB5, pentru a doua tastatura PC5)
- Pinul C – pinul 7 (PB6, pentru a doua tastatura PC6)
- Pinul D – pinul 8 (PB7, pentru a doua tastatura PC7)
- Pinul 1 – pinul 1 (PB0, pentru a doua tastatura PC0)
- Pinul 2 – pinul 2 (PB1, pentru a doua tastatura PC1)
- Pinul 3 – pinul 3 (PB2, pentru a doua tastatura PC2)
- Pinul 4 – pinul 4 (PB3, pentru a doua tastatura PC3)

Software design

Implementarea software a proiectului am realizat-o in limbajul C folosind AVR Studio. Am folosit acest software deoarece este un program destul de practic.

Diagrama de stari


Pentru functionarea calculatorului am implementat atat functii pentru afisare pe LCD, cat si functii de citire a tastelor apasate si pentru prelucrarea datelor si intoarcerea rezulatelor corespunzatoare functiilor matematice selectate.

Afisare LCD:

void LCD_init();                                        // Initializare modul LCD.Trebuie apelata inainte de a se face orice operatie cu LCD-ul
void LCD_writeInstruction(unsigned char _instruction);	// Trimite o instructiune catre LCD
void LCD_writeData(unsigned char _data);		// Trimite date catre LCD pentru afisare
void LCD_write(unsigned char _byte);			// trimite un bute catre LCD la modul general (nu conteaza daca e instructiune sau date)
void LCD_waitNotBusy();					// Asteptam pana cand lcd-ul devine disponibil pt o noua comanda
void LCD_waitInstructions(unsigned char _instructions);	// Asteapta un numar de cicli de ceas.
void LCD_print(char* _msg);				// Afiseaza imformatia pe LCD (doar 1 linie, primele 16 caractere)
void LCD_print2(char* _msg1, char* _msg2);		// Afisare pe 2 lini pe LCD
void LCD_printDecimal2u(unsigned int _n);		// Afisare numar in baza 10 pe LCD
void LCD_printHexa(unsigned int _n);			// Afisare numar in baza 16 pe LCD


Citire taste si prelucrare date:

void key_init();                                       // Initializare taste
unsigned char get_key();                               // Citire taste apasate
void processDigit(char input);                         // Procesarea cifrelor selectate
void processOperator(char input);                      // Procesarea operatorilor(+,-, x, /, %, etc)
void processEqual();		                       // Procesare =
void plus(float x, float y, char* result)              // Adunarea a doua numere  
void minus(float x, float y, char* result)             // Diferenta a doua numere
...   

Rezultate obtinute



Concluzii

Proiectul a fost unul foarte interesant si, in final, am reusit sa realizez ceee ce mi-am propus: un calculator aritmetic care executa atat operatii simple(+, -, /, x), dar si mai dificile (radical, conversie dintr-o baza in alta, ridicare la putere). Pentru imbunatatirea proiectului se poate achizitioana o tastatura cu mai multe butoane pentru a-i adauga si alte functii mai complicate.

Bibliografie/Resurse

pm/prj2010/rtataroiu/calculator_aritmetic.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