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

BASCOM: przewijanie tekstu z EEPROM na LCD Nokia (6x14) – jak zaimplementować?

djleeon603 10 Sie 2007 20:39 1908 9
REKLAMA
  • #1 4165753
    djleeon603
    Poziom 20  
    Posty: 472
    Pomógł: 2
    Ocena: 14
    Witam.
    Mam do was Panowie prośbę. Pewnie powiecie ze nie moge oczekiwać gotowych rozwiązań.. ale zapewniam ze juz sie nad tym glowilem i nie wiem jak to napisać: Ale do rzeczy:

    W pamięci eeprom będę miał wprowadzony tekst ... ciąg bajtów...
    zawartość eepromu będzie przewijana na LCD od nokii (6 wierszy po 14 znaków)
    muszę teraz napisać kod ktory np.

    If Adress = 10 And Command = 1 Then
    (wyświetl o 14 pierwszych bajtów (czyt. znaków) z eepromu mniej)
    End If

    if Adress = 10 And Command = 2 then
    (wyświetl o 14 pierwszych bajtów (czyt. znaków) w eepromu więcej)

    End If

    komenda wyświetl PRINT"tekst"

    *chodzi o ujecie w kod pogrubionych fragmentów

    za pomocą pobierania o 1 wiersz więcej lubmniej chcę tekst scroolowac na wyswietlaczu


    Oczywiscie w BASCOM'ie
  • REKLAMA
  • #2 4166539
    radekgers
    Poziom 10  
    Posty: 48
    ja tego zupełnie nie rozumiem... co właściwie chcesz zrobić?

    piszesz "wyświetl...z eepromu MNIEJ" i więcej, ale mniej i więcej od czego?
  • REKLAMA
  • #3 4166628
    djleeon603
    Poziom 20  
    Posty: 472
    Pomógł: 2
    Ocena: 14
    No to moze jeszcze raz... w inny sposob.. jak ująć w kod następującą rzecz:

    If Adress = 10 And Command = 1 Then
    Wyświetl na lcd komórki z zakresu 1-84 z zewnętrznego EEpromu.

    ponowane Adress = 10 And command = 1 then
    Wyświetl na lcd komórki z zakresu 85-169 z zewnętrznego EEpromu.

    itd.


    If Adress =10 and Command =2
    Wyświetl na lcd komórki z zakresu 85-169 z zewnętrznego EEpromu.

    ponownie If Adress =10 and Command =2
    Wyświetl na lcd komórki z zakresu 1-84 z zewnętrznego EEpromu.
    itd


    chodzi o to ze w eepromie bede mial okolo 4000 komórek ze znakami i chce je po kolei wyświetlać na lcd (przewijać do przodu i do tyłu)

    tylko niewiem jak to ująć w kod .. to moje początki wiec wiecie.

    Dodano po 1 [minuty]:

    dla sprostowania czemu akurat 84 komórki... a dla tego ze mam wyświetlacz od nokii3310 a ona ma 6 wierszy po 14 znaków (6*14=84)
  • REKLAMA
  • #5 4167166
    djleeon603
    Poziom 20  
    Posty: 472
    Pomógł: 2
    Ocena: 14
    myslałem pol nocy i wymyslilem to:
    Co o tym sadzicie???

    Dim A As Byte
    Dim B As Byte
    Dim C As String
    A = 1
    B = 84
    
    Do
    If Adress = 10 and Comand = 1
    Then
    Temp1 = A + 84
    Temp2 = B + 84
    Read EEPROM C , From A to B (tylko niewiem czy sa funkcje from, to)
    Cls_lcd
    Waitus 50
    Print C
    End If
    
    If Adress = 10 and Command = 2
    Then
    Temp1 = A - 84
    Temp2 = B - 84
    Read eeprom C , from A to B (tylko niewiem czy sa funkcje from, to)
    Cls_lcd
    waitus 50
    Print C
    End If
    
    End
  • #6 4167287
    dturczak
    Poziom 19  
    Posty: 416
    Pomógł: 9
    Ocena: 5
    jezeli rzeczywiscie to bedzie dzialac.. (przyznam sie ,nie wnikalem ;)
    to to from..zrob normalnie w petli for
    albo odrazu wyswietlaj albo umieszczaj zmienna nie w 'C' tylko w jakiejs tablicy i potem wyswietlaj
    for i=A to B
    Read eeprom C , i
    next i
  • REKLAMA
  • #7 4167305
    djleeon603
    Poziom 20  
    Posty: 472
    Pomógł: 2
    Ocena: 14
    a mozna tak?:
    Dim A As Byte
    Dim B As Byte
    Dim C As String
    A = 1
    B = 84

    Do
    If Adress = 10 and Comand = 1
    Then
    Temp1 = A + 84
    Temp2 = B + 84
    Read EEPROM C , A to B
    Cls_lcd
    Waitus 50
    Print C
    End If

    If Adress = 10 and Command = 2
    Then
    Temp1 = A - 84
    Temp2 = B - 84
    Read eeprom C , A to B
    Cls_lcd
    waitus 50
    Print C
    End If

    End

    ta metoda wydaje mi sie bardziej przejzysta....
  • #8 4179266
    pixel7
    Poziom 24  
    Posty: 656
    Pomógł: 53
    Ocena: 160
    Tak nie będzie działać.
    Sprobuj poniższego kodu:

    do
    If Adress = 10 and Comand = 1 Then
    I=1' zaczynamy od 1 bajtu
    Do
    Readeeprom C , I
    Waitus 50
    Print C
    incr I
    loop untill I=84' petla az do 84 bajtu
    End If

    If Adress = 10 and Comand = 1 Then
    I=85' zaczynamy od 85 bajtu
    Do
    Readeeprom C , I
    Waitus 50
    Print C
    incr I
    loop untill I=169' petla az do 169 bajtu
    End If
    loop
    End

    Powinno działać, z tym że musisz rozwiązać problem wyboru kolejnego bloku zawartości eeproma (jeśli chcesz używać 1 przycisku)
  • #9 4179293
    djleeon603
    Poziom 20  
    Posty: 472
    Pomógł: 2
    Ocena: 14
    1 przycisk up 2 przycisk down

    a czemu moj kod nie bedzie działał?
  • #10 4179532
    pixel7
    Poziom 24  
    Posty: 656
    Pomógł: 53
    Ocena: 160
    Bo "A to B" w bascom można używać tylko z komendą FOR

    FOR I=1 to 20
    print I
    next I

    W przykładzie który podałem Ci w poprzednim poście I jest zwiększane komendą incr, a pętla do..loop jest wykonywana aż I osiągnie żądaną wartość. jeśli chcesz używać 2 przycisków możesz zmienić comand w drugim IF na np 2. Wtedy po naciśnięciu 1 pojawi się pierwsza część a po naciśnięciu 2 druga część tekstu z eeprom.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy implementacji przewijania tekstu zapisanego w zewnętrznej pamięci EEPROM na wyświetlaczu LCD Nokii o rozdzielczości 6 wierszy po 14 znaków (84 znaki na ekran). Autor chce w BASCOM-ie napisać kod, który na podstawie wartości zmiennych Adress i Command wyświetla kolejne fragmenty tekstu z EEPROM, umożliwiając przewijanie do przodu i do tyłu. Proponowane rozwiązania obejmują odczyt bloków po 84 bajty (odpowiadających pełnemu ekranowi) i ich wyświetlanie. Wskazano, że w BASCOM nie można używać konstrukcji "Read EEPROM C, from A to B", lecz należy odczytywać bajty pojedynczo w pętli For lub Do Loop, inkrementując adres. Zaproponowano kod z pętlą odczytującą bajty EEPROM i wyświetlającą je na LCD, z obsługą dwóch przycisków do przewijania tekstu w przód i w tył. Podkreślono konieczność zarządzania indeksami adresów EEPROM, aby poprawnie wyświetlać kolejne fragmenty tekstu na ekranie Nokii 3310.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA