Scopul proiectului este realizarea jocului “Spanzuratoarea” utilizand un dictionar mare de cuvinte si o tastatura standard PS/2.
Pentru realizarea interfetei grafice a acestui proiect a fost utilizat un LCD PCD8544 ( Nokia 3310 ). De asemenea, pentru obtinerea inputului Atmega interfateaza cu o tastatura standard PS/2, iar pentru stocarea unui numar cat mai mare de cuvinte in dictionar, a fost ales un card SD.
Pe langa componentele placii de baza au mai fost necesare urmatoarele:
Conectarea dintre microcontroller si displayul grafic s-a realizat pin la pin, nefiind necesare alte componente intermediare, cu exceptia condensatorului de Vout.
Intrucat nivelurile logice ale tastaturii sunt de 5V, nu au fost necesare alte componente de interconectare la Atmega.
Cardul SD a fost montat conform schemei de la laborator. Astfel au fost necesare divizoare de tensiune pentru coborarea tensiunii de la 5V la 3.3V.
Software-ul contine, in mare parte interfetele de comunicatie cu perifericele si anume:
Implicit, LCD-ul primeste serial octeti pe care ii afiseaza pe 6 randuri de latime 84. In acest sens, driverul LCD a fost scris pentru a permite operatii mai complexe si anume:
Pentru a realiza acest lucru a fost nevoie de tinerea in memorie a starii LCD-ului. Cu alte cuvinte, pastram in memoria Atmega o imagine a starii displayului care se poate prelucra mult mai usor. Aceasta a dus si la obtinerea unui feature interesant de lazy-update si anume: efectuarea mai multor operatii pe LCD cu o singura scriere catre acesta.
Driverul poate scrie la lcd in mai multe moduri si anume:
De asemenea, pentru afisarea text, a fost retinut in memoria programabila un font 5×7.
Pentru a putea deslusi codurile de scanare trimise de tastatura in momentul apasarii tastelor, a fost necesara implementarea unei cozi. In aceasta coada se vor inregistra evenimente de tip key_event. Pentru obtinerea codurilor ascii, a fost folosit un lookup table stocat in memoria programabila. Trebuie mentionat ca nu au fost implementate decat caracterele alfa-numerice, tastele directionale si tasta ENTER intrucat acestea prezentau interes pentru proiectul de fata.
Pentru interfatarea cu cardul SD si implementarea sistemului de fisiere, a fost folosit codul de la laboratorul 4.
Programul citeste cate un cuvant de la o pozitie aleatoare din fisierul dictionar stocat pe cardul SD. Interfata cu utilizatorul ce permite selectarea optiunilor cum ar fi modurile de joc, prezentate in continuare:
Nota: Din cauza limitarilor impuse de memoria restransa a Atmega16, nu au putut fi implementate toate functionalitatile planuite initial.
Realizarea proiectului a fost o provocare intrucat resursele Atmega16 sunt destul de limitate insa a fost o experienta educationala.
37 - Un bun punct de pornire pentru interfata LCD
ps2keyboard - Resurse pentru interfatarea cu o tastatura ps2
scancodes2.html - Codurile de scanare “default” de pe o tastatura ps2
Hangman_%28game%29 - Documentatie joc Hangman