Strona 1 z 2
Zegar LCD Bascom
: 02 lut 2021, 14:14
autor: Domin
Witam serdecznie, zwracam się do Was z ogromną prośbą. Potrzebuje jako zadanie zrobić zegar LCD, który mniej więcej będzie podobny do tych zegarów w samochodach.
00: 00 : 00
gdzie pierwsze 2 cyfry możemy ustawić na 24 godziny, kolejne 2 na 59 minut i kolejne dwie na 59 sekund.
Po przyciśnięciu guzika będzie nam przeskakiwać z godzin na minuty i z minut na sekundy.
a po dłuższym przyciśnięciu pozostanie zapisane.
Totalnie się w tym gubię i nie daję sobie rady. Bardzo prosiłbym o pomoc
Re: Zegar LCD Bascom
: 02 lut 2021, 17:01
autor: niveasoft
Domin .. no nic nie wiesz to widać.
Jaki procesor , jaki wyswietlacz..
-Proszę forumowiczów którzy chcieliby tu błysnąć o powstrzymanie się od odpowiedzi (może to wkręt).
Re: Zegar LCD Bascom
: 02 lut 2021, 18:36
autor: Pikczu
No właśnie jako zadanie!!
Więc słuchamy co proponujesz ?
Re: Zegar LCD Bascom
: 03 lut 2021, 2:58
autor: Domin
nie to nie jest wkręt, profesor powiedział zrobić i ma działać obojętnie jak, a na zajęciach nie używamy tego programu w ogóle, dlatego przyszedłem na to forum z prośbą o pomoc
Re: Zegar LCD Bascom
: 03 lut 2021, 14:18
autor: niveasoft
Pomoc tu uzyskasz jak pokażesz, że cokolwiek próbowałeś robić... nie licz na gotowca. Możemy poprawić Tobie jakiś kod...ale musisz dodać dwa do dwóch
Re: Zegar LCD Bascom
: 04 lut 2021, 17:05
autor: Domin
$sim
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 16
$framesize = 32
Dim Liczh As Byte
Dim Liczm As Byte
Dim Liczs As Byte
Dim Liczba As Byte
Cursor Off
Config Porta = Output
Porta = 255
Funkcja_przel Alias Pina.5
Liczba = 0
Deflcdchar 0,32,32,15,17,17,15,1,14' g
Cls
Locate 1, 6
Lcd "Witam"
Cls
Gosub Disp
Do
Debounce funkcja_przel , 0 , Funkcja , Sub
Liczba = Encoder(pina.7 , Pina.6 , Lewo , Prawo , 0)
Waitus 150
Loop
End
Lewo:
If Liczba = 0 Then
If Liczh > 0 Then Liczh = Liczh - 1
If Liczh < 0 Then Liczh = 24
Gosub Disp
End If
If Liczba = 1 Then
If Liczm > 0 Then Liczm = Liczm - 1
If Liczm < 0 Then Liczm = 59
Gosub Disp
End If
If Liczba = 2 Then
If Liczs > 0 Then Liczs = Liczs - 1
If Liczs < 0 Then Liczs = 59
Gosub Disp
End If
Return
Prawo:
If Liczba = 0 Then
If Liczh < 25 Then Liczh = Liczh + 1
If Liczh = 25 Then Liczh = 0
Gosub Disp
End If
If Liczba = 1 Then
If Liczm < 60 Then Liczm = Liczm - 1
If Liczm = 60 Then Liczm = 0
Gosub Disp
End If
If Liczba = 2 Then
If Liczs < 60 Then Liczs = Liczs - 1
If Liczs = 60 Then Liczs = 0
Gosub Disp
End If
Return
Disp:
Cls
Locate 1, 6
Lcd "Ze"; Chr(0) ;"ar"
Locate 2, 5
Lcd Liczh ; ":" ; Liczm ; ":" ; Liczs
Return
Funkcja:
If Liczba = 0 Then
Locate 2, 5
Cursor Blink
End If
If Liczba = 1 Then
Locate 2, 8
Cursor Blink
End If
If Liczba = 2 Then
Locate 2, 10
Cursor Blink
End If
If Liczba = 3 Then Gosub Zegar
If Liczba = 4 Then Liczba = 0
Return
Zegar:
If Liczh < 25 Then
If Liczm < 60 Then
If Liczs < 60 Then
Liczs = Liczs + 1
Gosub Disp
Wait 1
Else
Liczm = Liczm + 1
Liczs = 0
End If
Else
Liczm = 0
Liczh = Liczh + 1
End If
Else
Liczh = 0
End If
Return
aktualnie mój kod wygląda tak, coś jednak zrobiłem nie tak bo wyskakują mi liczby 255 a godziny blokują się po 4. Mam też problem z rekacją na switcha, po kliknięciu nie przeszkakuję na kolejną faze z godzin na minuty, i próbowałem na różne sposoby i nic nie działa . Czy mogę liczyć na Waszą pomoc ?
Re: Zegar LCD Bascom
: 04 lut 2021, 17:07
autor: Jacek
Kolego umieść ten kod tak jak powinien być umieszczony w poście.
pozdrawiam Jacek.
Re: Zegar LCD Bascom
: 04 lut 2021, 17:10
autor: Domin
$sim
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 16
$framesize = 32
Dim Liczh As Byte
Dim Liczm As Byte
Dim Liczs As Byte
Dim Liczba As Byte
Cursor Off
Config Porta = Output
Porta = 255
Funkcja_przel Alias Pina.5
Liczba = 0
Deflcdchar 0,32,32,15,17,17,15,1,14' g
Cls
Locate 1, 6
Lcd "Witam"
Cls
Gosub Disp
Do
Debounce funkcja_przel , 0 , Funkcja , Sub
Liczba = Encoder(pina.7 , Pina.6 , Lewo , Prawo , 0)
Waitus 150
Loop
End
Lewo:
If Liczba = 0 Then
If Liczh > 0 Then Liczh = Liczh - 1
If Liczh < 0 Then Liczh = 24
Gosub Disp
End If
If Liczba = 1 Then
If Liczm > 0 Then Liczm = Liczm - 1
If Liczm < 0 Then Liczm = 59
Gosub Disp
End If
If Liczba = 2 Then
If Liczs > 0 Then Liczs = Liczs - 1
If Liczs < 0 Then Liczs = 59
Gosub Disp
End If
Return
Prawo:
If Liczba = 0 Then
If Liczh < 25 Then Liczh = Liczh + 1
If Liczh = 25 Then Liczh = 0
Gosub Disp
End If
If Liczba = 1 Then
If Liczm < 60 Then Liczm = Liczm - 1
If Liczm = 60 Then Liczm = 0
Gosub Disp
End If
If Liczba = 2 Then
If Liczs < 60 Then Liczs = Liczs - 1
If Liczs = 60 Then Liczs = 0
Gosub Disp
End If
Return
Disp:
Cls
Locate 1, 6
Lcd "Ze"; Chr(0) ;"ar"
Locate 2, 5
Lcd Liczh ; ":" ; Liczm ; ":" ; Liczs
Return
Funkcja:
If Liczba = 0 Then
Locate 2, 5
Cursor Blink
End If
If Liczba = 1 Then
Locate 2, 8
Cursor Blink
End If
If Liczba = 2 Then
Locate 2, 10
Cursor Blink
End If
If Liczba = 3 Then Gosub Zegar
If Liczba = 4 Then Liczba = 0
Return
Zegar:
If Liczh < 25 Then
If Liczm < 60 Then
If Liczs < 60 Then
Liczs = Liczs + 1
Gosub Disp
Wait 1
Else
Liczm = Liczm + 1
Liczs = 0
End If
Else
Liczm = 0
Liczh = Liczh + 1
End If
Else
Liczh = 0
End If
Return
Re: Zegar LCD Bascom
: 04 lut 2021, 17:19
autor: niveasoft
Poprawiłem te posty, ale na przyszłość proszę zastosuj tę instrukcje
viewtopic.php?f=3&t=107
Trudno jest zasymulować enkoder w symulatorze a Ty masz wpisane u góry
$sim. To testujesz to na procesorze czy w symulatorze?
Jak na prawdziwym uC to usuń lub zakomentuj na początek te
$sim
Re: Zegar LCD Bascom
: 04 lut 2021, 17:22
autor: Domin
testuje to na symulatorze niestety, dopiero gotowy kod sprawdza profesor z urządzeniami :/ właśnie mi sprawdził i wytknął mi te błedy o których napisałem, ze nie przeskakuje między liczbami, i po kręceniu wyskakuje max godzina 4 a sekundy i minuty pokazuja 255