Skocz do zawartości

Problem z programem do LCD 14*2


Pomocna odpowiedź

Witam !

Od kilku dni bawię się wyświetlaczem na płytce testowej z atmegą8 z elbota. I w końcu napotkałem pewien problem. Gdy chcę żeby wyświetlacz wyświetlił mi słowo OK po tym jak wcisnę przycisk na wyświetlaczy "jeździ" tylko napis OK (bez naciśnięcia przycisku ) na przycisk nie reaguje ( oprócz tego że gdy przycisnę przycisk wyświetlacz robi się czarniejszy). przycisk podłączony do procka potem do vcc. Zamieszcam program:

$regfile = "M8def.DAT"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Config Pind.2 = Input
Do

If Pind.2 = 1 Then

Lcd ; "OK"



 End If

Loop
Link to post
Share on other sites
$regfile = "M8def.DAT" 
$crystal = 8000000 
Config Lcd = 16 * 2 
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 
Config Pind.2 = Input 
Pind.2 = 0 'wyłączone

Cls 'czyścisz ekran

Do 

If Pind.2 = 1 Then 
Cls 'czyścisz ekran
Lcd "OK" 
End If 

Loop
End

Powinno być ok. Jeżeli nie to pisz 😉 Polecam dorobić licznik przyciśnięć tego µSwitch-a. Ogólnie zapomniałeś czyszczenia ekranu, dlatego masz takie "dziwactwa".

W temacie jet błąd powinno być 16x2 😎

  • Pomogłeś! 1
Link to post
Share on other sites

Niestety program nie działa:( Dalej to samo (w temacie nie ma błędu po prostu popsuł mi się LCD 16*2 i użyłem 14*2 😎 )

[ Dodano: 07-08-2011, 18:56 ]

Dałem taki program

$regfile = "M8def.DAT"
   $crystal = 8000000
   Config Lcd = 16 * 2
   Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
   Config Pind.2 = Input

   Set Pind.2
   Cls 'czyścisz ekran

   Do

   If Pind.2 = 1 Then
    Cls 'czyścisz ekran
    Lcd ; "OK"
   End If


   End
      Loop

[ Dodano: 07-08-2011, 18:57 ]

i nic tylko podczas włączania wyświetla się OK

Link to post
Share on other sites

Armir, wydaje mi się, że to nie ma znaczenia czy jest podpięty do masy, czy do zasilania. Stan wysoki to stan wysoki,stan niski to stan niski. klonyyy, dla pewności spróbuj tego co zaproponował Armir.

Poprawiony program:

$regfile = "M8def.DAT" 
$crystal = 8000000 
Config Lcd = 16 * 2 
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 
Config Pind.2 = Input 

Set Pind.2 
Cls 'czyścisz ekran 

Do 
Debounce Pind.2 , 1 , OK , Sub 'odkłócanie styków
Loop

OK:
Cls
Lcd "OK"

End

[ Dodano: 07-08-2011, 19:10 ]

Program jest bez sensu, bo napis po jednym kliknięciu będzie wyświetlał się cały czas, do ponownego naciśnięcia przycisku. Z racji tego proponuję ci coś takiego:

$regfile = "M8def.DAT" 
$crystal = 8000000 
Config Lcd = 16 * 2 
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 
Config Pind.2 = Input 

Set Pind.2 
Cls 'czyścisz ekran 

Do 
Debounce Pind.2 , 1 , OK , Sub 'odkłócanie styków
Loop

OK:
Cls
Lcd "OK"
Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie
Cls

End
Link to post
Share on other sites

W Twoim programie piotreks-89 po podłączeniu zasilania LCD wyświetla OK bez przyciskania switcha po czym znika one po 250 ms jak jest to napisane w programie.

Link to post
Share on other sites

W takim razie podłącz µSwitcha pod GND i zastosuj ten program:

$regfile = "M8def.DAT" 
$crystal = 8000000 
Config Lcd = 16 * 2 
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 
Config Pind.2 = Input 

Pind.2 = 1
Cls 'czyścisz ekran 

Do 
Debounce Pind.2 , 0 , OK , Sub 'odkłócanie styków 
Loop 

OK: 
Cls 
Lcd "OK" 
Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie 
Cls 

End

Jeżeli to nie działa to wymień µSwitch-a.

  • Pomogłeś! 1
Link to post
Share on other sites

Jest i to wielka różnica. Przy switchu do zasilania masz na pinie stan nieustalony kiedy przycisk jest nie wciśnięty. Przy masie i podciągnięciu tego problemu nie ma.

Link to post
Share on other sites

Sorry że znowy zawracam Wam głowę ale nie chce mi działać ten program:

              $regfile = "M8def.DAT"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Config Pind.2 = Input
Config Pind.3 = Input
Pind.2 = 1
Pind.3 = 1

Cls 'czyścisz ekran

Do
Debounce Pind.2 , 0 , Yes , Sub                             '
Loop

Yes:
Cls
Lcd "yes"
Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie
Cls

Do
Debounce Pind.3 , 0 , No , Sub                              '
Loop

No:
Cls
Lcd "no"
Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie
Cls

Ma on po kliknięciu pierwszym przyciskiem wyświetlić yes, po drugim no. I tu się zaczyna kłopot gdy po wciśnięiu przycisku 2 wyświetli się no wciskając przycisk 1 nic się nie dzieje. Macie może jakies pomysły jak to zrobić żeby można było wcisnąć po koleji przyciski 1,2,1 itd ?

Link to post
Share on other sites

Mógłbyś trochę dokładniej? 😉 Próbowałem to zrobić ale wtedy niezależnie od wciśniętego przycisku pokazuje się yes 😐 Jak można to poproszę o kawałek kodu

Link to post
Share on other sites

Spróbuj tak(nie wiem czy dobrze będzie):

              $regfile = "M8def.DAT"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Config Pind.2 = Input
Config Pind.3 = Input
Pind.2 = 1
Pind.3 = 1

Cls 'czyścisz ekran

Do
Debounce Pind.2 , 0 , Yes , Sub                             '
Debounce Pind.3 , 0 , No , Sub  
Loop

Yes:
Cls
Lcd "yes"
Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie
Cls

No:
Cls
Lcd "no"
Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie
Cls
Link to post
Share on other sites

powinno banglać

              $regfile = "M8def.DAT"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Config Pind.2 = Input
Config Pind.3 = Input
Pind.2 = 1
Pind.3 = 1

Cls 'czyścisz ekran

Do
Debounce Pind.2 , 0 , Yes , Sub                             '
Debounce Pind.3 , 0 , No , Sub 
Loop

Yes:
Cls
Lcd "yes"
Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie
Cls
return

No:
Cls
Lcd "no"
Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie
Cls
return

jak nie to będziemy kombinować dalej 😃

  • Lubię! 1
Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.