logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[C]Odczytywanie danych z RAM HD44780

xamrex 05 Mar 2011 10:57 1850 5
REKLAMA
  • #1 9237177
    xamrex
    Poziom 28  
    Witam,
    Posiadam wyśw lcd 2x16 oraz bibliotekę do tego wyświetlacza w C.
    Chciałbym napisać sobie taki program, który jeśli w Lini1 i na pozycji 1 będzie umieszczony znak A, oświeci diodę
    Coś takiego:
    [C]Odczytywanie danych z RAM HD44780
    Rozumiem, że muszę ustawić swój wyświetlacz w tryb Data read
    Czyli (RS = 1, R/W = 1)
    Ale w jaki sposób teraz sprawdzić jaki znak jest Lini1 i na pozycji 1?
  • REKLAMA
  • #2 9237200
    piotrva
    VIP Zasłużony dla elektroda
    1. przeczytaj datasheet i przeanalizuj procedury wysyłające dane
    2. po co robić takie kombinacje, lepiej zapamiętać dane w zmiennej w procesorze :D
  • REKLAMA
  • #3 9237210
    xamrex
    Poziom 28  
    piotrva napisał:
    2. po co robić takie kombinacje, lepiej zapamiętać dane w zmiennej w procesorze :D


    Tak, ale chciałbym się czegoś nauczyć (odczytywanie danych z LCD)
    Czytałem datasheeta, tylko za mało go zrozumiałem.
    Proszę tylko o jakąś poradę/podpowiedź, co powinienem dalej zrobić.
  • REKLAMA
  • #4 9237345
    tadzik85
    Poziom 38  
    A za mało przykładów jest w necie?
  • REKLAMA
  • #5 9237424
    mirekk36
    Poziom 42  
    To co ja mógłbym poradzić:

    1. Jeśli już na siłę chcesz odczytywać coś z pamięci RAM wyświetlacza LCD to trzeba byłoby bardzo dokładnie przejrzeć swoją bibliotekę do LCD i poczytać taką tabelkę rozkazów i ich kodów do obsługi LCD. Tam jest do dobrze opisane .... zatem na tej podstawie można byłoby zrobić odczytywanie.

    2. Ale jednak podpowiedziałbym taką praktyczną uwagę. PO CO W OGÓLE odczytywać coś z pamięci RAM LCD ? Samą obsługę LCD można uprościć do nieskończoności - wystarczy zrobić ją tak jak robi to np oprogramowanie na PC o nazwie (być może znanej LCD Smartie) ;) .... Jak ono działa? A przecież za jego pomocą na różnych LCD dzieją się "cuda i dziwy" , własne semigrafiki i w ogóle różne MUNU co się żywnie spodoba. A jak to działa tak ogólnie ?

    - wystarczy sobie zadeklarować w pamięci RAM mikrokrokontrolera tablicę np 2x16 dla LCD 2x16. I teraz wszystko co chcesz wyświetlać niby na LCD zapisujesz do tego bufora w pamięci RAM. Tak szybko jak chcesz i co ci się żywnie spodoba.

    - następnie za pomocą jakiegoś timera programowego np co 20ms "wywalać" na LCD CAŁE DWIE LINIE po kolei !!! Najprostsza i najszybsza operacja na LCD. Nawet bez żadnego CLS - tylko wyświetlić po kolei te dwie linie z własnego RAM co 20ms.

    - a wszystkie własne operacje robić na tym buforku pamięci ;) ... tu można zastosować własne funckyjki LOCATE itp ... zrobić sobie nawet ze 2 albo i 3 takie buforki dzięki czemu będziesz mógł bardzo szybko i płynnie przełączać całe ekrany. A zrobienie na tym animacji to już MEGA PIKUŚ

    Zobacz sobie na filmik z tego projektu:

    https://www.elektroda.pl/rtvforum/topic1430008.html#7038329

    animacje prawie jak w Windows ;) hyhhy a wszystko właśnie w taki wyżej opisany sposób - taki, który używa LCD Smartie.

    A dłubanie w pamięci RAM od LCD - no też można, tylko najpierw trzeba ją w ogóle poznać, jak ona jest rozlokowana, bo to nie jest tylko że ma 32 komórki w przypadku LCD 2x16, tylko sporo więcej a po co? bo za pomocą LCD przeciez już można uzyskiwać proste efekty przesuwania zawartości ekranu itp ... właśnie dzięki takim jakby buforom większym w nim zawartym.

    Kiedyś w gazetce zdaje się EdW albo EP był fajny w 3 odcinkach szczegółowy opis LCD - i trzeba coś takiego przynajmniej przeczytać - żeby zrozumieć od podstaw komunikację z LCD - a nie bazować tylko na jakichś bibliotekach - których sami do końca nie rozumiemy jeszcze. Jak się je przećwiczy na maxa - i od podstaw , krok po kroku z jakąś książką np .... to będzie dużo łatwiej to wszystko zrozumieć ;)

    powodzenia
  • #6 9237428
    piotrva
    VIP Zasłużony dla elektroda
    http://radzio.dxp.pl/hd44780/hd44780_podstawy.htm
    Moim zdaniem (choć w praktyce nigdy tego nie robiłem):
    1. inicjalizujesz LCD w trybie 4-bit
    2. wyświetlasz coś
    3. teraz dajesz DDRAM Set i podajesz adres
    4. i teraz komenda data read
REKLAMA