Hangman

Introducere

Scopul proiectului este realizarea jocului “Spanzuratoarea” utilizand un dictionar mare de cuvinte si o tastatura standard PS/2.

Descriere generală

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.

Hardware Design

Pe langa componentele placii de baza au mai fost necesare urmatoarele:

  • 1 condensator 10µF
  • 3 rezistori 3,3 kOhm
  • 3 rezistori 1,8 kOhm
  • 2 diode 1N4004
  • 1 mufa PS/2 mama

Displayul LCD

Conectarea dintre microcontroller si displayul grafic s-a realizat pin la pin, nefiind necesare alte componente intermediare, cu exceptia condensatorului de Vout.

Tastatura PS/2

Intrucat nivelurile logice ale tastaturii sunt de 5V, nu au fost necesare alte componente de interconectare la Atmega.

Card SD

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 Design

Software-ul contine, in mare parte interfetele de comunicatie cu perifericele si anume:

Driverul LCD

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:

  • desenare dreptunghiuri
  • aliniere text
  • deplasament la nivel de pixel.

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:

  • OVER - suprascrie octetul curent
  • ON - echivalentul lui OR
  • OFF - echivalentul lui NOT(AND)
  • TOGGLE = echivalentul lui XOR.

De asemenea, pentru afisarea text, a fost retinut in memoria programabila un font 5×7.

Driverul PS/2

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.

Cardul SD

Pentru interfatarea cu cardul SD si implementarea sistemului de fisiere, a fost folosit codul de la laboratorul 4.

Functionalitati ale proiectului

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:

  • CLASIC - Permite jucarea mai multor cuvinte. In momentul in care un cuvant a fost ghicit, numarul de incercari este resetat si se trece la urmatorul cuvant.
  • SURVIVAL - Este analog clasic cu diferenta ca numarul de incercari se pastreaza de la un cuvant la altul.
  • TIMED - Este analog clasic dar limiteaza utilizatorul sa ghiceasca cuvantul intr-un anumit timp.

Rezultate Obţinute

Proiectul final

Designul original al interfetei grafice

Nota: Din cauza limitarilor impuse de memoria restransa a Atmega16, nu au putut fi implementate toate functionalitatile planuite initial.

Concluzii

Realizarea proiectului a fost o provocare intrucat resursele Atmega16 sunt destul de limitate insa a fost o experienta educationala.

Download

Bibliografie/Resurse

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

pm/prj2011/rtataroiu/hangman.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