Tetris

Introducere

Scopul proictului este implementarea unui joc Tetris, unul din cele mai populare jocuri de tip puzzle, pe o placuta cu microcontroler ATMEGA16. Controlul blocurilor (tetromino-urilor) se face prin intermediul a 4 butoane conectate la placuta. Afisajul se face pe un LCD de la un telefon NOKIA 3310.

Descriere generală

  • INPUT: 4 butoane;
  • OUTPUT: LCD;

Hardware Design

Piesele folosite pentru interconectarea LCD-ului cu placuta de baza sunt:

  • 5 x rezistente 3k3
  • 5 x rezistente 1k8
  • 1 x condensator 10 uF
  • 2 x diode

Conexiune pini microcontroler → LCD:

  • LCD_CLK_PIN ⇒ PB7
  • LCD_DATA_PIN ⇒ PB5
  • LCD_DC_PIN ⇒ PB0
  • LCD_CE_PIN ⇒ PB1
  • LCD_RST_PIN ⇒ PB3

SCREENSHOT PROTEUS

Tensiunea de alimentare a LCD de ~3V3 am obtinut-o prin legarea celor 2 diode la Vcc. La CLK, DATA, DATA/CMD ENABLE si RESET am folosit cate un divizor de tensiune (realizat cu rezistentele de 1k8 şi 3k3).

Conectare butoane cu AMTEGA16 → porturile PA0..PA3

Software Design

Mediu de dezvoltare: Notepad++

Compilator: avr-gcc

Pentru comunicatia cu LCD am pornit de la acest API

Implemetarea jocului Tetris:

Display-ul LCD are o rezolutie de 84 x 48 pixeli, care din pacate dupa ore de chin cu lipitul s-a modificat in 84×28 8-O. Primul pas a fost implementarea unei functii care sa creeze blocuri din care sunt formate piesele (dimensiune 2 x 2 pixeli). Dupa care destul de simplu am creat functiile pt afisarea fiecarei piese.

Pentru realizarea logicii jocului retin starea ecranului de joc si verific daca la urmatorul pas va aparea coliziune.

TODO:

  • functie de rotire a pieselor
  • imbunatatire functie coliziune

Rezultate Obţinute

Proiect functional.

POZE:

Download

Bibliografie/Resurse

pm/prj2011/dloghin/tetris_lcd.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