Proiectul consta in realizarea unui calculator pentru functii matematice elementare precum:
Ideea unui astfel de proiect mi-a venit in cadrul primului laborator cand trebuia sa afisam pe ecran numarul de apasari ale unui buton. Extinzand aceasta la mai multe butoane si o prelucrare mai complexa in spate rezulta calculatorul mentionat mai sus.
Consider ca neavand experienta in acest domeniu (curs de EAP de exemplu sau concursuri) cel mai bun inceput poate consta intr-un calculator simplu pentru functii matematice de baza. Utilitatea consta in acumularea de experienta.
Schema cuprinde 3 module:
Prin intermediul tastaturii utilizatorul introduce datele, adica apasarea butonelor determina prelucrarea datelor si modificarea afisajului in conformitate cu acestea. In functie de comenzi microcontrolerul comanda ceea ce se va afisa pe ecran.
Placutei din prima etapa a trebuit sa-i adaug
Pentru a determina ce tasta a fost apasata am folosit pinii portului D:
Determinam ce linie si ce coloana au fost activate, si, in functie de aceste 2 informatii determinam ce buton a fost apasat.Afisam cifra/operandul/rezultatul/stergem ecranul dupa caz.
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 (vezi datasheet) 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
Proiectul e nefinalizat, insa detin o intelegere mai buna a problematicii.
Proiectul poate fi extins. Pot fi adaugate butoane si functionalitati noi(functii matematice mai complexe).
Resurse Software
avr-programming.php
lab1
Resurse Hardware
44780.shtml
datasheet_iul.pdf