Zegar LCD Bascom

Pytania, kody i porady dotyczące nie tylko Bascom.
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Zegar LCD Bascom

Post autor: niveasoft » 04 lut 2021, 17:44

Pilnowanie zakresów dla godzin, minut i sekund jest proste. Wystarczy napisać "If Godzina > 23 Then Godzina = 0" "If Minuta > 59 Then Minuta = 0". Analogicznie z sekundami.
Trzeba inaczej to zapisać kiedy jedziesz w dół bo poniżej zera wskakuje 255 więc piszesz "If Godzina > 23 Then Godzina = 23" "If Minuta > 59 Then Minuta = 59" ;)

Dla enkodera powinieneś użyć osobnej zmiennej np. Dim Enc As Byte i potem Enc = Encoder...
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Zegar LCD Bascom

Post autor: niveasoft » 04 lut 2021, 18:41

Łap. Gotowałem kapuśniak i w międzyczasie jak czekałem żeby mi się otworzył szybkowar machnąłem ten programik przy kawie ;)
Nawet działa. Liczy czas, ustawia i miga kursorem :D

Pozdrowienia dla profesora ahahahaha :D
  1. $sim
  2. $regfile = "m32def.dat"
  3. $crystal = 16000000
  4. $hwstack = 40
  5. $swstack = 16
  6. $framesize = 32
  7.  
  8. Dim Liczh As Byte
  9. Dim Liczm As Byte
  10. Dim Liczs As Byte
  11. Dim Godziny As String * 2
  12. Dim Minuty As String * 2
  13. Dim Sekundy As String * 2
  14.  
  15. Dim Ustaw As Byte
  16. Dim Enc As Byte
  17. Dim 250ms As Byte , 1s As Byte , Mig As Byte
  18.  
  19. Cursor Off
  20.  
  21. Porta = 255                                                 'podciąganie wejśc
  22.  
  23. Funkcja_przel Alias Pina.5
  24.  
  25. Do
  26.    Debounce funkcja_przel , 0 , Funkcja , Sub
  27.    Enc = Encoder(pina.7 , Pina.6 , Lewo , Prawo , 0)
  28.  
  29.    Waitms 10
  30.    If 250ms < 24 Then
  31.     Incr 250ms
  32.    Else
  33.     250ms = 0
  34.     If Mig = 0 Then Mig = 1 Else Mig = 0
  35.     If Ustaw > 0 Then Gosub Pokaz_czas
  36.  
  37.     If 1s < 3 Then
  38.      Incr 1s
  39.     Else
  40.      1s = 0
  41.       Gosub Licz_czas
  42.       Gosub Pokaz_czas
  43.     End If
  44.  
  45.    End If
  46. Loop
  47. End
  48.  
  49. Licz_czas:
  50.  Incr Liczs
  51.  If Liczs > 59 Then
  52.   Liczs = 0
  53.   Incr Liczm
  54.   If Liczm > 59 Then
  55.    Liczm = 0
  56.    Incr Liczh
  57.    If Liczh > 23 Then Liczh = 0
  58.   End If
  59.  End If
  60. Return
  61.  
  62. Pokaz_czas:
  63.  Godziny = Str(liczh)
  64.  Godziny = Format(godziny , "00")
  65.  Minuty = Str(liczm)
  66.  Minuty = Format(minuty , "00")
  67.  Sekundy = Str(liczs)
  68.  Sekundy = Format(sekundy , "00")
  69.  If Mig = 1 Then
  70.   Select Case Ustaw
  71.    Case 1
  72.     Godziny = "__"
  73.    Case 2
  74.     Minuty = "__"
  75.    Case 3
  76.     Sekundy = "__"
  77.   End Select
  78.  End If
  79.  
  80.  Locate 2 , 2 : Lcd Godziny ; ":" ; Minuty ; ":" ; Sekundy
  81. Return
  82.  
  83. Lewo:
  84.  Select Case Ustaw
  85.   Case 1
  86.    Decr Liczh
  87.    If Liczh > 23 Then Liczh = 23
  88.   Case 2
  89.    Decr Liczm
  90.    If Liczm > 59 Then Liczm = 59
  91.   Case 3
  92.    Decr Liczs
  93.    If Liczs > 59 Then Liczs = 59
  94.  End Select
  95.  Mig = 0
  96.  Gosub Pokaz_czas
  97. Return
  98.  
  99. Prawo:
  100.  Select Case Ustaw
  101.   Case 1
  102.    Incr Liczh
  103.    If Liczh > 23 Then Liczh = 0
  104.   Case 2
  105.    Incr Liczm
  106.    If Liczm > 59 Then Liczm = 0
  107.   Case 3
  108.    Incr Liczs
  109.    If Liczs > 59 Then Liczs = 0
  110.  End Select
  111.  Mig = 0
  112.  Gosub Pokaz_czas
  113. Return
  114.  
  115.  
  116. Funkcja:
  117.    Incr Ustaw
  118.    If Ustaw > 3 Then Ustaw = 0
  119. Return
  120.  
  121.  
Domin
Posty: 9
Rejestracja: 02 lut 2021, 14:05

Re: Zegar LCD Bascom

Post autor: Domin » 04 lut 2021, 19:19

dziękuje bardzo! wszystko pięknie działa <3
jeszcze chciałbym zapytać w którym momencie kodu jest to że czas automatycznie sie odlicza? przepraszam za głupie pytania
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Zegar LCD Bascom

Post autor: niveasoft » 04 lut 2021, 19:26

W kodzie jest wstawione opóźnienie 10ms. Normalnie robi się to Timerem. Niżej odlicza 250ms które jest potrzebne do migania. 25 x 10ms = 250ms dlatego tam dodaje do 24..
Dalej liczy 4 x te 250ms i to jest sekunda. Co sekunde wywołuje podprogram Licz_czas.
Domin
Posty: 9
Rejestracja: 02 lut 2021, 14:05

Re: Zegar LCD Bascom

Post autor: Domin » 04 lut 2021, 19:52

super dziękuje bardzo za pomoc!!!! zaliczone dzięki Tobie
ODPOWIEDZ