Witam. $regfile = "m8def.dat" $crystal = 8000000 '----------------------------------------------------------- '--------------LCD------------------------------------------ Config Lcdbus = 4 Config Lcd = 16 * 2 : Cursor Off : Cls Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.5 , Db7 = Portc.4 , E = Portc.1 , Rs = Portc.0 '----------------------------------------------------------- '--------------Timer2 Odmierzanie 1s------------------------ Config Timer2 = Timer , Prescale = 256 On Timer2 Interwal Enable Timer2 Enable Interrupts Timer2 = 0 '--------------Podświetlenie-------------------------------- Config Portb.5 = Output Reset Portb.5 Led Alias Portb.5 '----------------------------------------------------------- '----------------------------------------------------------- Config Portb = &B011100 : Portb = &B011100 Sw_port Alias Pinb '----------------------------------------------------------- Dim Dzielnik As Word Dim Flaga_1s As Bit Dim Flaga_4ms As Bit Dim Stan_sw As Byte Dim Sw As Byte Dim Licznik_sw As Byte Dim Wyswietlanie As Byte Dim Poz_ekran As Byte Dim Wyswietlono As Bit Dim Ustawienia As Byte Dim Poz_ustaw As Byte 'Dim Ustawiono As Bit Wyswietlono = 1 Wyswietlanie = 1 '--------------PROGRAM START-------------------------------- Do Set Led If Flaga_4ms = 1 Then Flaga_4ms = 0 Gosub Przyciski If Wyswietlono = 1 Then Gosub Wysw_ekran Else Gosub Wysw_ustaw End If End If If Flaga_1s = 1 Then Flaga_1s = 0 Gosub Obliczenia End If Loop '----------------------------------------------------------- '--------------Program Koniec------------------------------- End '----------------------------------------------------------- '--------------Interwał 1s: dla Timer2---------------------- Interwal: Timer2 = 131 'odlicza 0.004s Set Flaga_4ms Incr Dzielnik If Dzielnik = 250 Then '0.004s *250=1s Set Flaga_1s End If Return '----------------------------------------------------------- '--------------Obliczenia----------------------------------- Obliczenia: Return '----------------------------------------------------------- '--------------Przyciski------------------------------------ Przyciski: Sw = Sw_port And &B011100 If Sw <> &B011100 And Stan_sw = Sw Then Incr Licznik_sw If Licznik_sw = 100 Then Licznik_sw = 0 Select Case Stan_sw '----------------------------------------------------------- Case &B001100: 'Góra plus If Wyswietlono = 1 Then Wyswietlanie = Poz_ekran + 1 If Wyswietlanie = 6 Then Wyswietlanie = 1 Else Ustawienia = Poz_ustaw + 1 If Ustawienia = 10 Then Ustawienia = 1 End If '----------------------------------------------------------- Case &B011000: 'OK 'zapisanie ustawień i wyjśćie do ekarnu 1 'oraz gdy jest na ekranie 1 wyświetla date (ale to później) '----------------------------------------------------------- Case &B010100: 'Dół minus If Wyswietlono = 1 Then Wyswietlanie = Poz_ekran - 1 If Wyswietlanie < 1 Then Wyswietlanie = 5 Else Ustawienia = Poz_ustaw - 1 If Ustawienia < 1 Then Ustawienia = 9 End If '----------------------------------------------------------- Case &B000100: 'Plus + minus = Ustawienia If Wyswietlono = 1 Then Wyswietlono = 0 Ustawienia = 1 Else Wyswietlono = 1 Wyswietlanie = 1 End If '----------------------------------------------------------- End Select End If Else Stan_sw = Sw Licznik_sw = 80 End If Return '----------------------------------------------------------- '--------------Ekran----------------------------------------- Wysw_ekran: 'If Wyswietlanie <> 0 Then 'Wyswietlono = 0 Select Case Wyswietlanie '--------------Ekran 1-------------------------------------- Case 1: If Poz_ekran <> 1 Then Cls Locate 1 , 1 Lcd "11 aaaaaa" End If '--------------Ekran 5-------------------------------------- Case 5: If Poz_ekran <> 5 Then Cls Locate 1 , 1 Lcd "55 eeeeee" End If '----------------------------------------------------------- End Select Poz_ekran = Wyswietlanie 'Wyswietlanie = 0 'Wyswietlono = 1 'End If Return '----------------------------------------------------------- '--------------Ustawienia----------------------------------- Wysw_ustaw: 'If Ustawienia <> 0 Then 'Ustawiono = 0 Select Case Ustawienia '--------------Ustawienia 1--------------------------------- Case 1: If Poz_ustaw <> 1 Then Cls Locate 1 , 1 Lcd "atmvyo74" End If '--------------Ustawienia 9--------------------------------- Case 9: If Poz_ustaw <> 9 Then Cls Locate 1 , 1 Lcd "125zvh7k" End If '----------------------------------------------------------- End Select Poz_ustaw = Ustawienia 'Ustawienia = 0 'Ustawiono = 1 'End If Return '----------------------------------------------------------- '----------------------------------------------------------- A wszystko co znajduje się w programie powyżej jest napisane dzięki projektom umieszczonym na tej stronie.
|
|||
Re: LCD
Po pierwsze wszystkie polecenia które leżą luzem poza do loop nigdy się nie wykonają... rozumiem że wstawiając komentarz na końcu zapomniałeś sobie o kilku linijkach
Używasz timera żeby zrobić porządne taktowanie na flagach ale nigdy tego nie używasz. Wstaw przyciski i LCD pod ifa z flagą 4ms z tym że do LCD musisz dodać jeszcze sprawdzanie warunku czy Wyświetlono = 1 i czy Wyswietlanie różne od zero. Jak będziesz chciał w którymkolwiek miejscu w programie wyświetlić jakiś ekran z procedury LCD to poprostu ustawisz np Wyswietlanie = 2 itp.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Zapomniałem Podziękować :),
Zapomniałem Podziękować :), Dziękuje
Wczoraj wieczorem udało mi się przystosować jakiś stary projekt do obsługi przycisków i przetestować, niestety nie działało wiec trochę pozmieniałem.
Teraz chciałem się zapytać co zrobić ze jak wcisnę OK to wyświetli mi się DATA i będzie widniała na wyświetlaczu przez 3s ale bez użycia Wait.
Re: LCD
Zrób zmienną licznik, która będzie sprawdzana i zmniejszana w procedurze obsługi wyświetlacza i jak doliczy do zera to dasz lcd "" a w przeciwnym wypadku lcd "data" tak jak jest. Jak procedura wyświetlania wywołuje się co 4ms to trzeba będzie liczyć w dół od 500. Zatem jak będziesz chciał wyświetlić napis na 1s przypiszesz do zmiennej licz_data wartość 250, jak na 10 sekund to przypiszesz wartość 2500 itd. Zmienna licz_data musi byc word
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.