Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

AVT-868 Programowany zegar z wyświetlaczem LCD

Awatar użytkownika
sjzwojtek
-
-
Posty:15
Rejestracja:5 lis 2003, o 11:40
Lokalizacja:Śląsk
Kontaktowanie:
AVT-868 Programowany zegar z wyświetlaczem LCD

Postautor: sjzwojtek » 31 sty 2008, o 11:43

Witam.
Mam zamiar zrobić ten zegar.
Jest w nim również termometr tylko nigdzie nie mogę doczytać czy mierzy on temp. ujemne.
Czy ktoś z forumowiczów to składał?
proszę o pomoc.

pozdro Sjzwojtek

Awatar użytkownika
sjzwojtek
-
-
Posty:15
Rejestracja:5 lis 2003, o 11:40
Lokalizacja:Śląsk
Kontaktowanie:

Postautor: sjzwojtek » 23 lut 2008, o 16:14

Witam
Już wiem że termometr nie podaje temp. ujemnych.
Może ktoś z forumowiczów dopisze mi odczyt temp. ujemnych?
Załączam kod źródłowy
Będę bardzo wdzięczny za pomoc.

Kod: Zaznacz cały

$large Declare Sub Settime(s As Byte , M As Byte , H As Byte , D As Byte , Month As Byte) Declare Sub Gettime Declare Sub Displaytime Declare Sub Displaydata Declare Sub Zmgodz Declare Sub Zmmin Declare Sub Ustawdata Declare Sub Zmdzien Declare Sub Zmmies Declare Sub Ustawalarm Declare Sub Zmmal Declare Sub Zmgal Config 1wire = P1.1 Declare Sub Read1820 Dim Bd(9) As Byte Dim I As Byte , Tmp As Byte Dim T As Integer , T1 As Integer Dim X As Byte Config Sda = P3.1 Config Scl = P3.0 Config Lcd = 16 * 2 Cursor Off Dim S As Byte , M As Byte , H As Byte , D As Byte ', Month As Byte Dim Wm As Byte , Yd As Byte Dim Ma As Byte Dim Ha As Byte Dim Alarm As Bit Dim Al As Bit Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32 Cls S4 Alias P3.7 S3 Alias P1.0 S1 Alias P3.5 S2 Alias P3.4 Reset P3.3 Lcd "****AVT-XXXX****" Lowerline Lcd "*****Witamy!*****" Wait 3 Cls Home Lcd "***BASCOM CLUB***" Lowerline Lcd "*****DESIGN******" Wait 3 Sub Displaytime Cls Do 1wwrite &HCC : 1wwrite &H44 Call Read1820 Call Gettime If X <> S Then Home Lcd " Czas: " ; Bcd(h) ; ":" ; Bcd(m) ; ":" ; Bcd(s) End If Home If X = 255 Then Home Lowerline Lcd " Data: " ; Bcd(yd) ; " " ; Bcd(wm) ; " " Else If X <> 0.2 Then Home Lowerline Lcd " " ; Bcd(yd) ; " " ; Bcd(wm) ; " " ; T ; Chr(0) ; "C" Home Lowerline Locate 2 , 10 Lcd X ; "," End If End If Set S1 If S1 = 0 Then Call Ustawczas End If Set S2 If S2 = 0 Then Call Ustawdata End If X = S Set S4 If S4 = 0 Then Call Ustawalarm End If Set S3 If S3 = 0 Then Reset P3.3 End If Loop End Sub Sub Displaydata Call Gettime Cls Do Home Set S1 If S1 = 0 Then Call Displaytime End If Set S4 If S4 = 0 Then Call Ustawdata End If Loop End Sub Sub Gettime I2cstart 'generate start I2cwbyte &HA0 'write addres of PCF8583 I2cwbyte 2 'select second register I2cstart 'generate repeated start I2cwbyte &HA1 'write address for reading info I2crbyte S , Ack 'read seconds I2crbyte M , Ack 'read minuts I2crbyte H , Ack 'read hours I2crbyte Yd , Ack 'read year and days I2crbyte Wm , Nack 'read weekday and month I2cstop 'generate stop I2cstart 'generate start I2cwbyte &HA0 'write addres of PCF8583 I2cwbyte 100 'select second register I2cstart 'generate repeated start I2cwbyte &HA1 'write address for reading info I2crbyte Ha , Ack 'read seconds I2crbyte Ma , Nack 'read minuts I2cstop If Ha = H Then If Ma = M Then If Alarm = 1 Then If S = 0 Then Set P3.3 End If End If End If End If End Sub Sub Settime(s As Byte , M As Byte , H As Byte , Yd As Byte , Month Wm Byte) I2cstart 'generate start I2cwbyte &HA0 'write address I2cwbyte 0 'select control register I2cwbyte 8 'set year and day bit for masking I2cstop 'generate stop I2cstart 'generate start I2cwbyte &HA0 'write mode I2cwbyte 2 'select seconds Register I2cwbyte S 'write seconds I2cwbyte M 'write minuts I2cwbyte H 'Write Hours I2cwbyte Yd 'write days I2cwbyte Wm 'write months I2cstop I2cstart 'generate start I2cwbyte &HA0 'write mode I2cwbyte 100 'select seconds Register I2cwbyte Ha I2cwbyte Ma I2cstop End Sub Sub Ustawczas Cls Wait 1 Do Lcd "Set Time:" ; Bcd(h) ; " " ; Bcd(m) Home Set S1 If S1 = 0 Then Call Zmgodz Waitms 200 End If Set S2 If S2 = 0 Then Call Zmmin Waitms 200 End If Set S3 If S3 = 0 Then S = 0 Call Settime Call Displaytime Exit Do End If Loop End Sub Sub Zmdzien Yd = Makedec(yd) Incr Yd If Yd > 31 Then Yd = 1 End If Yd = Makebcd(yd) End Sub Sub Zmmies Wm = Makedec(wm) Incr Wm If Wm > 12 Then Wm = 1 End If Wm = Makebcd(wm) End Sub Sub Ustawdata Cls Wait 1 Do Lcd "Set Data:" ; Bcd(yd) ; " " ; Bcd(wm) Home Set S1 If S1 = 0 Then Call Zmdzien Waitms 200 End If Set S2 If S2 = 0 Then Call Zmmies Waitms 200 End If Set S3 If S3 = 0 Then Call Settime Call Displaytime Exit Do End If Loop End Sub Sub Zmgodz H = Makedec(h) Incr H If H > 23 Then H = 0 End If H = Makebcd(h) End Sub Sub Zmmin M = Makedec(m) Incr M If M > 59 Then M = 0 End If M = Makebcd(m) End Sub Sub Ustawalarm Cls Wait 1 Do Lcd "Set Alarm: " ; Bcd(ha) ; ":" ; Bcd(ma) Lowerline If Alarm = 1 Then Lcd " Alarm ON " Else Lcd " Alarm OFF" End If Home Set S1 If S1 = 0 Then Call Zmgal Waitms 200 End If Set S2 If S2 = 0 Then Call Zmmal Waitms 200 End If Set S3 If S3 = 0 Then Call Settime Call Displaytime Exit Do End If Set S4 If S4 = 0 Then Waitms 200 If Alarm = 1 Then Alarm = 0 Else Alarm = 1 End If End If Loop End Sub Sub Zmgal Ha = Makedec(ha) Incr Ha If Ha > 23 Then Ha = 0 End If Ha = Makebcd(ha) End Sub Sub Zmmal Ma = Makedec(ma) Incr Ma If Ma > 59 Then Ma = 0 End If Ma = Makebcd(ma) End Sub Sub Read1820 ' reads sensor ans calculate Waitms 250 Waitms 100 ' T for 0.1 C 1wreset ' reset the bus 1wwrite &HCC ' read internal RAM 1wwrite &HBE ' read 9 data bytest Bd(1) = 1wread(9) ' read bytes in array 1wreset ' reset the bus Tmp = Bd(1) And 1 ' 0.1C precision If Tmp = 1 Then Decr Bd(1) T = Makeint(bd(1) , Bd(2)) T = T * 50 : T = T - 25 : T1 = Bd(8) - Bd(7) : T1 = T1 * 100 T1 = T1 / Bd(8) : T = T + T1 : T = T / 10 X = T / 10 End Sub

Wróć do „Kity AVT”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 17 gości