Introducere
Scopul proiectului este de a realiza un joc “Bila in labirint” folosind microcontrollerul ATMega16 si un LCD de Nokia 3310. Ghidarea bilei in labirint va fi facuta de utilizator prin 4 butoane care vor da directia de deplasare.
Descriere generală
Schema bloc a modulelor hardware:
Hardware Design
Schema electrica:
Explicatii schema:
LCD-ul are urmatorul pinout:
Pentru ca tensiunea de alimentare si cele de input pentru LCD este de 3.3V, iar Vcc=5V, am folosit un divizor de tensiune cu rezistente de 1k7 si 3k3.
Butoanele sunt conectate folosind rezistente de pull-up intre pinul de intrare si Vcc.
Circuitul rezultat:
Piese folosite:
1 x LCD Nokia 3310
5 x rezistente 3k3
5 x rezistente 1k7
4 x rezistente 10k
1 x condensatoare 10uF
4 x push-button-uri
2 x diode 1N4148
Software Design
Mediu de dezvoltare:
Testare:
Librarii 3-rd party:
-
implementeaza protocolul SPI 'by hand'
pe langa functiille deja implementate (lcd.c), am adugat alte functii pentru a imi usura codarea jocului (ex: afisarea unui singur pixel)
Probleme:
void stack_init(void) __attribute__ ((naked)) __attribute__ ((section (".init8")));
void stack_init(){
asm("ldi r28,lo8(0x80045F)");
asm("ldi r29,hi8(0x80045F)");
asm("out __SP_H__,r29");
asm("out __SP_L__,r28");
}
Poze
Rezultate Obţinute
Software
Hardware
Concluzii
LCD-urile PCD8544 se comporta destul de ciudat (unul nu afisa nimic, iar ce de-al doilea ramanea cu pixelii setati aiurea dupa LCD_clear).
Simularile in Proteus nu sunt foarte relevante (nu toate driverele functionale in Proteus functioneaza si practic).
Download
Codul si schemele Eagle sunt disponibile aici.
Bibliografie/Resurse