Napisałem program i nie działa;/
na symulatorze pokazuje 0:0:0 0.0 C, nie wiem czemu nie odmierza mi sekund;/ a jak wgram do procka to już w ogóle nic nie pokazuje
Proszę o pomoc, Proszę o podpowiedź
$regfile = "m16def.dat"
$crystal = 8000000
Config Pinb.1 = Input
Config Pinb.2 = Input
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.0
Config 1wire = Portd.7
Config Timer1 = Timer , Prescale = 256
On Timer1 1sekunda
S1 Alias Portd.5
S2 Alias Portd.6
Dim Sekundy As Byte
Dim Minuty As Byte
Dim Godziny As Byte
Dim Nowa_w As Bit
Dim Odczyt(2) As Byte
Dim T As Integer
Dim T1 As Single
Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
Declare Sub Wyswietl
Enable Interrupts
Enable Timer1
Counter1 = 34286
Set Nowa_w
Set Portd.5
Set Portd.6
Cls
Do
Call Wyswietl
If S1 = 0 Then
Waitms 25
If S1 = 0 Then
Incr Minuty
If Minuty = 60 Then
Minuty = 0
End If
Set Nowa_w
Call Wyswietl
Waitms 200
End If
End If
If S2 = 0 Then
Waitms 25
If S2 = 0 Then
Incr Godziny
If Godziny = 24 Then
Godziny = 0
End If
Set Nowa_w
Call Wyswietl
Waitms 200
End If
End If
Loop
End
Sub Wyswietl
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wwrite &HCC
1wwrite &HBE
Odczyt(1) = 1wread(2)
T = Odczyt(2)
Shift T , Left , 8
T = T + Odczyt(1)
T1 = T * 0.0625
If Nowa_w = 1 Then
Cls
Lcd "" ; Godziny ; ":" ; Minuty ; ":" ; Sekundy ; " " ; T1 ; "" ; Chr(0) ; "C"
Reset Nowa_w
End If
1sekunda:
Set Nowa_w
Counter1 = Counter1 + 34286
Incr Sekundy
Set Nowa_w
If Sekundy = 60 Then
Sekundy = 0
Incr Minuty
If Minuty = 60 Then
Minuty = 0
Incr Godziny
If Godziny = 24 Then
Godziny = 0
End If
End If
End Sub
End If
Return
Re: Program Zegar
Po pierwsze na samym początku dobrze jest przypisać konfiguracje i stan początkowy wszystkich pinów procesora, wpisana częstotliwość i typ procesora muszą się zgadzać z rzeczywistością ale to myślę że wiesz. Nie rozumiem co chcesz uzyskać linijką:
bo jesli wpisac do timera wartość początkową to użyj Timer1 = ....
Ponadto nie warto dawać przerwania timera co 1s, wypadało by aby program działał synchronicznie a nie żeby wszystko było nawalone na kupę w pętli głównej programu. Popatrz na moje programy, timera przeważnie używam z przerwaniem co 4ms i w obsłudze przrwania ustawiam odpowiednie zmienne bitowe( tak zwane flagi). W pętli główne j zajmuje się sprawdzanie kiedy flaga jest 1 i wtedy wykonuje jakieś czynności. Nadaje to rytm pracy układowi. Instrukcje Wait nie są dobrym pomysłem i używa się ich naprawdę rzadko, poniewasz zatrzymują program na jakiś czas.
Pooględaj moje programy i zacznij pisać od początku, nie uruchamiaj symulatora w bascomie bo sam nie wiem co on pokazuje. Najpier używając wait spróbuj migać diodą co jakiś czas, jeśli zadziała to znaczy że procesor działa poprawnie i można zacząć coś działać. Potem to samo miganie z różnymi częstotliwościami zrealizuj na timerze, potem dołuż sam licznik i wyświetlaj go na LCD itd. W końcu dojdziesz do tego co chcesz napisać bo na raz się nie da, to wymaga trochę czasu. Przede wszystkim poczytaj moje kody źródłowe i zapoznaj się z działaniem flag bitowych w programie.
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.
Problem
Witam. Widzę ze "temat" jest dość stary... Mój problem polega na tym że chce zrobić Zegarek + Temp na LCD ale nie wiem jak się za to zabrać. Wprawdzie kolega podał Jakiś tam Kod ale czy on chodzi naprawdę. Czy można prosić o pewny kod źródłowy ?
Re: Projekt
Możesz rozpocząć zabawę od mojego kodu prostego sterownika domowego, tam jest zrobiony zegarek na PCF + temperatura + wiele innych i jest LCD 16x2
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.
Jestem początkujący i Pańskie
Jestem początkujący i Pańskie kody są dla mnie za trudne, wiedz będzie mi ciężko wychaczyć elementy przydatne dla mnie.
Najważniejsze są te
Najważniejsze są te procedury, zapisują i odczutują czas z pcf'a
Stwórz sobie szablon programu, skonfiguruj LCD na odpowiednie piny, i skonfiguruj timer na przerwanie, co np 25ms albo 4ms lub coś podobnego. W pętli głównej bedzie na poczatku obsługa flagi co 500ms, którą musisz ustawiać w timerze (jak przerwanie będzie np co 4ms to dasz licznik do 125 i ustawisz flagę co 500ms). Na samym końcu wklej procedury co wyżej. nie zapomnij zadeklarować zmiennej godziny, minuty i sekundy oraz godziny_bcd itd... potrzebne w tych procedurach. Wszystkie te zmienne są byte.
Jak zrobisz to co mówię to wklej to tu.
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.
gdzie popełniłem błąd
Witam.
Jako początkujący, a już trochę wiekowy (46)proszę o wyrozumiałość.
Na schemacie nie ma tranzystorów PNP w anodach, rezystorów w segmentach - celowo , bo to oczywiste.
nie masz petli do-loop,nie
nie masz petli do-loop,nie masz skonfigurowanego timera,tu brakuje jednej 1 ;Portd = &B1111111.To tak z grubsza.Pooglądaj sobie kody Mirka.Zobaczysz co masz nie tak.Ogólnie sporo do poprawienia.
nie dodałem,ze wogole nie
nie dodałem,ze wogole nie masz obsługi pcf 77
zegar i termometr
Poszedłem za poradą Mirka .
Przerobiłem jego kod do swoich potrzeb, ogarniając temat blokami.
Kod, który wkleiłem teraz jest juz działający, ale znowu zonk.
Jak dodać obsługę DCF77. Nie wiem jak to ugryźć, bo wszystko co znalazłem w sieci to na LCD lub w języku C.
No i później na przemian wyświetlanie.
Schemat jest aktualny.
Nigdy nie robiłem nic z
Nigdy nie robiłem nic z dcf77.Jednak to jest układ ,który daje tylko sygnał dla zegarka.Jak sie nie mylę to jest na stronie mcs elektronics program w bascom z obsługą dcf77.Prostszym sposobem jest dołożenie zewnętrzna zegara.Np PCF8583.Dokładnie obsługa tego zegarka jest opisana tutaj na stronie
DCF77
Tak, ale to co znalazłem jest na LCD.
Przecież masz juz napisana
Przecież masz juz napisana funkcje wyświetlania temperatury.Jeżeli to działa to dla zegara zrobisz analogicznie
zamiast LCD wyświetlisz na Ledach.
dcf
tak, ale jak odebrac tylko bity odpowiedzialne za czas, pomijając datę.
Jeszcze trzeba bity parzystości sprawdzać.
Nie wiem jak się za to zabrać, no i jeszcze wyświetlanie na przemian.
W książkach, które kupiłem nie ma nic na ten temat.
nie wiem jak odbiera sie kod
nie wiem jak odbiera sie kod dcf'a ale najpierw dla testów zostaw w spokoju termometr i zacznij pisać obsługę dcf jak to ci sie uda to później dodasz obsługę termometru.
dcf
Po co zostawiać termometr jeżeli już działa ?
Teraz trzeba dodać obsługę DCF77.
Ale jak widzę nikt się nie zna na tym ( czyżby ? ),
albo nie chce pomóc.
Napisałeś wcześniej ze nie
Napisałeś wcześniej ze nie wiesz jak połączyć dwie funkcje.Temperaturę masz opanowana to teraz baw sie z dcf.Z tego co widziałem jest sporo projektów w sieci.Chyba nawet w samplach bascoma jest.Trzeba tam tylko zmienić wyświetlanie.Jeżeli umiesz wyświetlić temperaturę to nie widzę problemu żebyś w analogiczny sposobi wyświetlał czas.Do testów spróbuj użyć gotowca,a później sobie przerabiaj. Ewentualnie użyj zewnętrznego zegara. Ds3231 jest bardzo dokładny.A obsługa prosta.Ja korzystam,tylko z takich zegarków i mi dokładność wystarczy.