Skocz do zawartości
klonyyy

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

Udostępnij ten post


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

Udostępnij ten post


Link to post
Share on other sites

Źle masz podpięty uswitch. Podepnij go do masy i włącz wewnętrzny pull up (stan wysoki na wejście).

Udostępnij ten post


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

Udostępnij ten post


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

Udostępnij ten post


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.

Udostępnij ten post


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

Udostępnij ten post


Link to post
Share on other sites

Dzięki bardzo to była wina (chyba) switcha teraz już wszystko działa programy też się przydadzą.

Udostępnij ten post


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.

Udostępnij ten post


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 ?

Udostępnij ten post


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

Udostępnij ten post


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

Udostępnij ten post


Link to post
Share on other sites

Już tak próbowałem 😉 Niestety wtedy po wciśnięciu przycisku 1 wyświetla się yes a następnie no (bez przyciskania 2 przycisku) 2 działa dobrze.

Udostępnij ten post


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

Udostępnij ten post


Link to post
Share on other sites

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...