sobota, 8 lutego 2014

Podstawowa obsługa LCD TFT 3,2" HY-320 SSD1289

 Cześć!


Otóż w moje łapki wpadł wyświetlacz 3,2 cala HY-320 z dotykiem, bazujący na sterowniku SSD1289. Poświęciłem bodaj trzy lub cztery wieczory na jego uruchomienie, już miałem się poddać gdyż nie było widać jakichkolwiek efektów, jednak porada jednego użytkownika z forum.atnel.pl okazała się kamieniem zakończającym moje udręki związane z inicjalizacją wyświetlacza. Pozostała mi z niej puenta że trzeba szukać błędów tam gdzie się ich nie spodziewamy.
Historię "choroby" możecie zobaczyć tutaj: http://forum.atnel.pl/topic5747.html

Otóż wszystko działa jak powinno, włącznie z dotykiem, banan na twarzy był niesamowity kiedy udało mi się rozkminić ten problem :)


Załączam przykładowy program dzięki któremu uda się go uruchomić i coś wyświetlić każdemu:
http://adf.ly/1665682/lcd-ssd1289

Kod w najważniejszych miejscach jest z dodanymi komentarzami, jeśli czegoś nie rozumiesz, pytaj w komentarzach pod tym postem. W obecnej wersji działa rysowanie za pomocą dotyku, wyświetlają się współrzędne X i Y, kasuje rysunek po wciśnięciu "Czyść"  oraz wyświetla się przykładowa akcja po wciśnięciu pola z napisem "Klik".

Wiele pozostało do dopracowania, jednak myślę że nawet w tym stopniu przyda się przekazana ode mnie takowa "wędka". Jeśli doprowadzę te biblioteki do jakichś diametralnych poprawek, zarzucę je na blogu.

Podłączenie wyświetlacza w tym przykładzie, można je zmienić w pliku pins.h

Użyty mikrokontroler: Atmega32A
Częstotliwość taktowania: 16MHz

LCD                     Mikrokontroler
DB0 do DB7   <-> PORTC0 do PORTC7
DB8 do DB15 <-> PORTA0 do PORTA7
CS   <->    PORTD7
RD  <-> PORTD6
WR <-> PORTD5
RS  <->  PORTD4
REST <-> PORTD3

T_CLK <-> PORTB0
T_DIN <->  PORTB1
T_DO <-> PORTB2
T_IRQ <-> PORTB3



Jednak parę uwag ode mnie, przeczytaj przed ruszeniem z miejsca:

Sam wyświetlacz można zasilać napięciem 3,3V oraz 5V, posiada wewnętrzny stabilizator.

Napięcie na liniach I/O LCD musi być w przedziale 1.4V – 3.6V, co za tym idzie nie można podłączyć ich bezpośrednio do mikrokontrolera zasilanego 5V!!!, gdyż ulegnie on uszkodzeniu.
Tak więc albo stosujemy jakiś bufor np. 74LVC245 albo zasilamy wszystko 3,3V.
W przykładzie używam mikrokontrolera Atmega32A, który może być zasilany napięciem 3,3V.

Dla bezpieczeństwa żeby nic nam się nie skichało nie podłączać pinów I/O LCD do linii programowania ISP mikrokontrolera. Starczy że programator AVR'a będzie dawał sygnały na poziomie 5V, i już LCD umarł w butach :(
Dobrze opowiedział o problemach używania pinów ISP Mirosław Kardaś w swoim wideo-poradniku: http://www.youtube.com/watch?v=CX9r0GwkFU0

Pozdrawiam!