Skocz do zawartości

Problem z programem do LCD 14*2


Pomocna odpowiedź

Napisano

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

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

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

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.

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

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.

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 ?

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

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

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.

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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...