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

Jak usunąć niepotrzebny znak na LCD16x2 w BASCOM po zmianie temperatury?

Towdee 16 Lip 2005 11:34 1410 9
REKLAMA
  • #1 1657664
    Towdee
    Poziom 11  
    Posty: 52
    Jeśli wyświetlam temperaturę mniejszą od 100 to wyświetlam ją w sposób:
    Locate 1 , 9 : Lcd T (a więc od 9 miejsca na lcd).

    Jeśli temp jest trzycyfrowa to swyświetlam ją w postaci:
    Locate 1 , 8 : Lcd T (a więc od 8 miejsca na lcd)

    i jak następnie temperatura znowu zmaleje do 2-cyfrowej to zostaje na wyświetlaczu jedynka (z poprzedniego wyświetlenia setki).

    Jak się jej pozbyć? Nie wchodzi w grę przesuwanie poprzez sziftcursor bo mi przesunie a jak wróci to znowu zostanie znak. Dobre by było wygaszenie jednego wiersza (NIE OBU przez cls bo dolny wiersz musi być cały czas). Doradźcie coś...

    dobr by było coś takiego co pozwala wygasić jeden znak w wyświetlanym wierszu
  • REKLAMA
  • REKLAMA
  • #3 1657824
    Towdee
    Poziom 11  
    Posty: 52
    zumek, mnie nie chodzi od której pozycji na lcd zacząc wyswieltac.

    Popatrz, dajmy na to zaczne od ósmej pozycji, wyświetlę temp xx.xoC to na 13 pozycji pokaże się znak "C".
    -------xx.xoC---

    Następnie temperatura się zwiekszy ponad 100 stopni wiec bedzie xxx.xoC i tak samo zacznę od ósmej pozycji i teraz znak "C" pojawi się na 14.
    -------xxx.xoC--

    Wszystko na razie ok.

    Ale teraz temperatura zmaleje znowu do poniżej 100 stopni i znowu zacznę od wyświetlenia na ósmej pozycji , skończę na 13 ale zostanie mi znak na 14 (z poprzedniego wyświetlenia) a więc pojawi się teraz:
    -------xx.xoCC--


    Ta sama sytuacja pojawi się ZAWSZE zmieniając wyświetlaną liczbę o większej liczbie znaków na mniejszą liczbę znaków. Liczbą o mniejszej ilości znaków nie nadpiszesz liczby o większej liczbie znaków :)

    I tu właśnie szkopół. najprościej byłoby wymazać cały wyświetlacz przez "cls" i znikneło by to nadmiarowe "C" na 14 pozycji, ale nie chcę używać cls bo wyświetlacz zniknie na blisko sekundę. Nie mogę sobie na to pozwolić bo dolna linia wyświetlana musi być ciągle. Mogę co najwyżej zgasić tą górną na której jest wyświetlana ta nieszczęsna temperatura. Ale czy jest jakieś takie polecenie czyszczące tylko jeden wiersz lcd?
  • REKLAMA
  • REKLAMA
  • #5 1657867
    Towdee
    Poziom 11  
    Posty: 52
    hehe, nie rozumiemy się, dobra to jeszcze inaczej spróbuję to wyjaśnić:

    Lcd "12345" - wyświetli się 12345
    Lcd "123456" - wyświetli się 123456
    Lcd "12345" - i tutaj po wykonaniu tej linijki nie pokaże się 12345 tylko 123456 bo zostanie ta "6" z poprzedniego wyświeltenia.

    Chyba, że przed tym ostatnim wygasisz lcd bo jak nie to zostanie znak "6" z poprzedniego wyświetlenia

    hehe sorry za ortografa
  • #6 1657887
    max_gg
    Poziom 26  
    Posty: 631
    Pomógł: 83
    Ocena: 26
    Kolega Zumek ma rację :)

    To samo chciałem poradzić - tą spację na końcu.
    Z drugiej strony pierwsza propozycja jest lepsza - można to zrobić tak, że znak st. i C zostają na wyświetlaczu, a zmienia się tylko wartość.

    np.

    IF temp>100 THEN
    LOCATE 1,8
    LCD temp
    END IF
    IF temp<100 THEN
    LOCATE 1,8: LCD " ";temp
    END IF
    [color=#]

    wcześniej musisz tylko to °C wstawić LOCATE 1,13:LCD "oC"

    Pozdrawiam!
  • #7 1657890
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    Towdee napisał:
    hehe, nie rozumiemy się, dobra to jeszcze inaczej spróbuję to wyjaśnić:

    Lcd "12345" - wyświetli się 12345
    Lcd "123456" - wyświetli się 123456
    Lcd "12345" - i tutaj po wykonaniu tej linijki nie pokaże się 12345 tylko 123456 bo zostanie ta "6" z poprzedniego wyświeltenia.

    Chyba, że przed tym ostatnim wygasisz lcd bo jak nie to zostanie znak "6" z poprzedniego wyświetlenia

    hehe sorry za ortografa

    He he chyba się jednak rozumiemy :wink:
    
    Lcd T;" "  'wyświetl T i zaraz  za tym 1-ną spację
    

    Efekt będzie taki:
    12345_ (ta pozioma kreseczka to spacja)
    123456_
    12345_
    Paniatno :?:
    Piotrek
  • #8 1657893
    Towdee
    Poziom 11  
    Posty: 52
    aaaa nie zwróciłem uwagi na spację, hehe no już sprawdzam czy pójdzie
  • #9 1657894
    Tomcio7
    Poziom 17  
    Posty: 297
    Pomógł: 8
    Ocena: 19
    Wpisz taki kod

    lcd "12345"
    wait 1

    lcd "123456"
    wait 1

    lcd "12345" ; " "
    wait 1

    i zobaczysz że nie wyświetli ci się ostatnia cyfra
    Musisz wpisać Lcd T; " " i to musi działać
  • #10 1657902
    Towdee
    Poziom 11  
    Posty: 52
    hehe już gitara, dzięki chłopaki. Nie zwróciłem uwagi na spację pomiędzy cudzysłowem w pierwszym poście zumka. dzięki

Podsumowanie tematu

LABEL_AI_GENERATED
Problem dotyczy wyświetlania temperatury na wyświetlaczu LCD 16x2 w BASCOM, gdzie zmiana liczby cyfr temperatury (z trzycyfrowej na dwucyfrową) powoduje pozostawanie niechcianych znaków na ekranie, np. pozostałość cyfry setek. Standardowe przesuwanie kursora lub czyszczenie całego wyświetlacza (cls) nie jest akceptowalne, ponieważ dolny wiersz musi pozostać niezmieniony. Rozwiązaniem jest nadpisanie ostatniego znaku spacją po wyświetleniu wartości temperatury, np. użycie komendy `Lcd T; " "` zamiast samego `Lcd T`. Dzięki temu nadmiarowy znak zostaje skutecznie usunięty bez konieczności czyszczenia całego wyświetlacza. Wskazano także, że można ustawić stałe znaki stopnia i litery "C" na stałych pozycjach, a zmieniać tylko wartość temperatury, co zapobiega problemowi pozostawiania niechcianych znaków.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA