$lib "glcdks108.lbx"
$lib "double.lbx"
'$lib "i2c.LBX"
$crystal = 16000000
$regfile = "m32def.dat"
$include "font8x8.font"
Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 2 , Ce2 = 3 , Cd = 5 , Rd = 6 , Reset = 1 , Enable = 7
Disable Adc
Config Pinb.1 = Input 'wtryskiwacz
Config Pinb.2 = Input 'wtryskiwacz
Config Pinc.0 = Input 'key2
Config Pind.2 = Input 'key1
Config Pind.3 = Input 'imp_predkosci
Config Pind.5 = Input 'power down
Config Pinb.6 = Output 'buzzer
Config Pinb.3 = Output 'podswietlanie led
Config 1wire = Pind.7 'konfiguracja 1-wire
Config Timer1 = Timer , Prescale = 64 'timer mierzący czas otwarcia wtryskiwacza
Config Int2 = Falling
Config Int1 = Falling
Config Scl = Portd.0 'konfiguracja I2C
Config Sda = Portd.1 'konfiguracja I2C
Set Portb.1
Set Portb.2
Set Portc.0
Set Portd.2
Set Portd.3
Set Portd.5
Declare Sub Convallt 'deklaracja procedury do odczytu 1-wire
Declare Function Decigrades(byval Sc(9) As Byte) As Integer 'deklaracja funkcji okreslajacej ID czujników
Const Stala_drogi = 100000 'stala drogi 100km = 100 000m
Const Stala_wtrysku = 213 ' stala dla czasu 3ms 'stala wtrysku - wyznaczona doswiadczalnie
'Const Stala_wtrysku = 800 ' stala dla czasu 3,2 ms 'stala wtrysku - wyznaczona doswiadczalnie
'Const Stala_wtrysku = 1250 ' stala dla czasu 5ms 'stala wtrysku - wyznaczona doswiadczalnie
Const Stala_paliwowa = 6.1 'stala paliwawa - warunek wyznaczenia stalej wtrysku, podany przez producenta
Dim Przycisk As Byte ' zmienna licznikowa od przycisku
Dim Dsid1(8) As Byte 'tablica do ID ds18s20
Dim Dsid2(8) As Byte 'tablica do ID ds18s20
Dim Sc(9) As Byte 'tablica pomocnicza
Dim Dg As Integer 'wartosc temperatury
Dim Imp_predkosci As Byte 'zmienna licznikowa od czujnika predkosci
Dim Czas_otwarcia As Byte 'czas otwarcia wtryskiwacza
Dim Metr As Byte 'zmienna pomocnicza 0 - 100m
Dim Droga As Byte 'ulamkowa wartosc przebiegu 0.1 - 0.9 km
Dim Przebieg As Word 'calkowita wartosc przebiegu 1 - 99 999km
Dim Pkt_chwilowe As Byte 'zmienna pomocnicza do ustawienia kursora
Dim Pkt_srednie As Byte 'zmienna pomocnicza do ustawienia kursora
Dim Pkt_przebieg As Byte 'zmienna pomocnicza do ustawienia kursora
Dim Pkt_zasieg As Byte
Dim Pkt_ilosc As Byte
Dim Pkt_calkowite As Byte
Dim Chwilowe_spalanie As Single 'wartosc chwilowego zuzycia paliwa
Dim Chwilowe As Single 'zmienna pomocnicza
Dim Calkowite_spalanie As Single 'wartosc calkowitego zuzycia paliwa
Dim Calkowite As Single 'zmienna pomocnicza
Dim Chwilowe_spal_cz_ul_single As Single
Dim Chwilowe_spal_cz_cal As Byte
Dim Chwilowe_spal_cz_ul As Byte
Dim Licznik_chwilowe As Byte
Dim Srednie_spal_cz_ul_single As Single
Dim Srednie_spal_cz_cal As Byte
Dim Srednie_spal_cz_ul As Byte
Dim Srednie_spalanie As Single
Dim Calkowite_spal_cz_ul_single As Single
Dim Calkowite_spal_cz_cal As Byte
Dim Calkowite_spal_cz_ul As Byte
Dim Zasieg As Word
Dim Zasieg_single As Single
Dim Poziom_paliwa As Single
Dim Flaga_key_1 As Bit
Dim Kasowanie As Bit
Dim Juz_wyswietlone As Byte
Dim Flaga As Byte 'flaga opoznienia na konwersje temperatury
Dim Wyswietl As Bit 'opoznienie 1s , co 1s wyswietlenie
Dim Flaga_wtrysku As Bit 'flaga wtrysku, ustawiona jezeli jest wtrysk
Dim Flaga_predkosci As Bit
Dim Sekunda As Byte
Dim Minuta As Byte
Dim Godzina As Byte
Dim Dzien As Byte
Dim Miesiac As Byte
Dim Rok As Word
Dim Stara_sekunda As Byte
Dim Poziom As Byte
Dim Odczyt As Byte
Dim Ilosc_paliwa As Byte
Dim Zmienna As Byte
Enable Interrupts
Enable Timer1
'On Int1 Wtryskiwacz
On Int2 Pomiar_drogi
'-------------------------------------------------------------------------------
'deklaracja aliasow
'-------------------------------------------------------------------------------
Led Alias Portb.3
Key_1 Alias Pind.2
Key_2 Alias Pinc.0
We Alias Pinb.1
Power_down Alias Pind.5
Buzzer Alias Portb.6
We2 Alias Pind.3
'-------------------------------------------------------------------------------
'ustawianie zmiennych
'-------------------------------------------------------------------------------
Przebieg = 0
Flaga = 0
Wyswietl = 0
Droga = 0
Imp_predkosci = 0
Metr = 0
Przycisk = 1
Buzzer = 1
Led = 0
Juz_wyswietlone = 0
Flaga_key_1 = 0
Flaga_predkosci = 0
Pkt_przebieg = 96
Pkt_chwilowe = 20
Pkt_srednie = 20
Stara_sekunda = 61
'---------------------------------------ustawienie ukladow 1-wire---------------
Mcucr = &B00000010
Dsid1(1) = 1wsearchfirst() 'zapisanie ID pierwszego znalezionego ukladu
Do
Dsid2(1) = 1wsearchnext() 'zapisanie ID kolejnego znalezionego ukladu
Loop Until Err = 1
Poczatek:
'---------------------------------nastawienie zegarka---------------------------
Cls
If Key_2 = 0 Then
Waitms 50
Cls
Waitms 500
Gosub Ustaw_czas
Przycisk = 1
End If
Disable Interrupts
Showpic 0 , 0 , Ford_logo
Wait 1
Cls
Waitms 200
Enable Interrupts
'Enable Int1
Enable Int2
'-------------------------------------------------------------------------------
'program główny
'-------------------------------------------------------------------------------
Do
If Key_1 = 0 Then
Waitms 40
Do
If Key_2 = 0 Then Kasowanie = 1
Loop Until Key_1 = 1
Waitms 40
Incr Przycisk
If Przycisk = 5 Then Przycisk = 1
End If
Timer1 = 0
Start Timer1
Waitus 250
Do
If We2 = 1 Then Incr Czas_otwarcia 'caly czas jest 1
Loop Until Timer1 = 62500
Stop Timer1
Incr Zmienna
Setfont Font8x8
If Zmienna = 3 Then Lcdat 2 , 0 , Czas_otwarcia
If Zmienna = 4 Then Lcdat 3 , 0 , Czas_otwarcia
If Zmienna = 5 Then Lcdat 2 , 64 , Czas_otwarcia
If Zmienna = 6 Then Lcdat 3 , 64 , Czas_otwarcia
Gosub Odczytaj_czas
If Sekunda <> Stara_sekunda Then
Wyswietl = 1
Stara_sekunda = Sekunda
End If
'---------------------------------wyznaczenie stalej wtrysku--------------------
If Key_2 = 0 Then
Wait 1
Lcdat 3 , 0 , Czas_otwarcia
End If
'---------------------------------kasowanie-------------------------------------
If Kasowanie = 1 Then
Kasowanie = 0
Metr = 0
Droga = 0
Przebieg = 0
Calkowite_spalanie = 0
End If
'---------------------------------POWERDOWN-------------------------------------
'(
If Power_down = 0 Then
Led = 1
Portc.2 = 1
Glcdcmd &B00111110
Portc.7 = 1
Glcdcmd &B00111110
'zapisanie zmiennych do pamieci
Writeeeprom Metr , 1
Writeeeprom Droga , 3
Writeeeprom Przebieg , 4
Writeeeprom Calkowite_spalanie , 6
Powersave
'Odczytanie Zmiennych Z Pamieci
Readeeprom Metr , 1
Readeeprom Droga , 3
Readeeprom Przebieg , 4
Readeeprom Calkowite_spalanie , 6
Portc.2 = 1
Glcdcmd &B00111111
Portc.7 = 1
Glcdcmd &B00111111
Led = 0
Goto Poczatek
End If
') '
'--------------------------------POMIAR DROGI-----------------------------------
If Metr >= 100 Then
Incr Droga 'droga <- wartosc ulamkowa z przejechanego dystansu
Metr = 0 'metr <- ilosc przejechanych metrow
If Droga = 10 Then
Incr Przebieg 'przebieg <- przebieg auta
If Przebieg > 99999 Then Przebieg = 0
Droga = 0
End If
End If
'--------------------------------POMIAR CHWILOWEGO ZUZYCIA----------------------
Chwilowe_spalanie = Czas_otwarcia / Stala_wtrysku
Chwilowe_spalanie = Chwilowe_spalanie * Stala_paliwowa
Chwilowe_spal_cz_cal = Int(chwilowe_spalanie) 'wyznaczenie czesci calkowitej z chwilowego zuzycia paliwa
Chwilowe_spal_cz_ul_single = Frac(chwilowe_spalanie)
Chwilowe_spal_cz_ul_single = Chwilowe_spal_cz_ul_single * 10
Chwilowe_spal_cz_ul = Int(chwilowe_spal_cz_ul_single) 'wyznaczenie czesci ulamkowej z chwilowego zuzycia paliwa
'--------------------------------POMIAR CALKOWITEGO ZUZYCIA---------------------
'If Wyswietl = 1 Then
Calkowite = Chwilowe / Stala_drogi
Calkowite = Calkowite * Metr ' wartosc zuzytego paliwa w ciagu 1s
Calkowite_spalanie = Calkowite_spalanie + Calkowite 'calkowite_spalanie <- wartosc calkowitego zuzycia paliwa
Calkowite_spal_cz_cal = Int(calkowite_spalanie) 'wyznaczenie czesci calkowitej z calkowitego zuzycia paliwa
Calkowite_spal_cz_ul_single = Frac(calkowite_spalanie)
Calkowite_spal_cz_ul_single = Calkowite_spal_cz_ul_single * 10
Calkowite_spal_cz_ul = Int(calkowite_spal_cz_ul_single) 'wyznaczenie czesci ulamkowej z chwilowego zuzycia paliwa
'End If
'-------------------------------POMIAR SREDNIEGO ZUZYCIA------------------------
'If Wyswietl = 1 Then
Srednie_spalanie = Calkowite_spalanie / Przebieg
Srednie_spalanie = Srednie_spalanie * 100 'srednie_spalanie <- wartosc sredniego zuzycia paliwa
Srednie_spal_cz_cal = Int(srednie_spalanie) 'wyznaczenie czesci calkowitej z sredniego zuzycia paliwa
Srednie_spal_cz_ul_single = Frac(srednie_spalanie)
Srednie_spal_cz_ul_single = Srednie_spal_cz_ul_single * 10
Srednie_spal_cz_ul = Int(srednie_spal_cz_ul_single) 'wyznaczenie czesci ulamkowej z sredniego zuzycia paliwa
'End If
If Key_1 = 0 Then
Waitms 40
Do
If Key_2 = 0 Then Kasowanie = 1
Loop Until Key_1 = 1
Waitms 40
Incr Przycisk
If Przycisk = 5 Then Przycisk = 1
End If
'(
Select Case Przycisk 'wybor menu w zaleznosci od wartosci PRZYCISK
Case 1: 'menu1 - chwilowe zuzycie + przebieg
If Juz_wyswietlone <> 1 Then
Cls
Disable Interrupts
Showpic 0 , 17 , Lcd_zuzycie_chwilowe
Showpic 66 , 17 , Lcd_przebyta_droga
Enable Interrupts
Pset 27 , 30 , 255
Pset 27 , 29 , 255
Pset 26 , 30 , 255
Pset 26 , 29 , 255
Pset 102 , 30 , 255
Pset 102 , 29 , 255
Pset 103 , 30 , 255
Pset 103 , 29 , 255
Juz_wyswietlone = Przycisk
If Chwilowe_spal_cz_cal > 9 Then Pkt_chwilowe = 12
If Przebieg > 9 And Przebieg <= 99 Then Pkt_przebieg = 88
If Przebieg > 99 And Przebieg <= 999 Then Pkt_przebieg = 80
If Przebieg > 999 And Przebieg <= 9999 Then Pkt_przebieg = 72
If Przebieg > 9999 And Przebieg <= 99999 Then Pkt_przebieg = 64
If Chwilowe_spal_cz_cal > 99 Then Chwilowe_spal_cz_cal = 99
Setfont Font8x8
Lcdat 4 , 29 , Chwilowe_spal_cz_ul
Lcdat 4 , Pkt_chwilowe , Chwilowe_spal_cz_cal
Lcdat 4 , 105 , Droga
Lcdat 4 , Pkt_przebieg , Przebieg
Gosub Pokaz_czas
End If
If Wyswietl = 1 Then
If Chwilowe_spal_cz_cal > 9 Then Pkt_chwilowe = 12
If Przebieg > 9 And Przebieg <= 99 Then Pkt_przebieg = 88
If Przebieg > 99 And Przebieg <= 999 Then Pkt_przebieg = 80
If Przebieg > 999 And Przebieg <= 9999 Then Pkt_przebieg = 72
If Przebieg > 9999 And Przebieg <= 99999 Then Pkt_przebieg = 64
If Chwilowe_spal_cz_cal > 99 Then Chwilowe_spal_cz_cal = 99
Setfont Font8x8
Lcdat 4 , 29 , Chwilowe_spal_cz_ul
Lcdat 4 , Pkt_chwilowe , Chwilowe_spal_cz_cal
Lcdat 4 , 105 , Droga
Lcdat 4 , Pkt_przebieg , Przebieg
Gosub Pokaz_czas
Lcdat 1 , 41 , Sekunda
Wyswietl = 0
End If
Case 2: 'menu2 - temperatura wewnetrzna i zewnetrzna
If Juz_wyswietlone <> 2 Then
Cls
Disable Interrupts
Showpic 0 , 17 , Lcd_temp_wew
Showpic 66 , 17 , Lcd_temp_zew
Enable Interrupts
Juz_wyswietlone = Przycisk
Gosub Pokaz_czas
End If
If Wyswietl = 1 Then
Setfont Font8x8
Gosub Pokaz_czas
If Flaga = 0 Then
Call Convallt
End If
Incr Flaga
If Flaga = 2 Then
Flaga = 0
1wverify Dsid1(1)
If Err = 1 Then
Lcdat 1 , 1 , "DsId1 no"
Elseif Err = 0 Then
1wwrite &HBE
Sc(1) = 1wread(9)
If Sc(9) = Crc8(sc(1) , 8) Then
Dg = Decigrades(sc(9))
Dg = Dg / 10
Lcdat 4 , 23 , Dg
End If
End If
1wverify Dsid2(1)
If Err = 1 Then
Lcdat 1 , 65 , "DsId2 no"
Elseif Err = 0 Then
1wwrite &HBE
Sc(1) = 1wread(9)
If Sc(9) = Crc8(sc(1) , 8) Then
Dg = Decigrades(sc(9))
Dg = Dg / 10
Lcdat 4 , 89 , Dg
End If
End If
End If
Wyswietl = 0
End If
Case 3: 'menu3 - srednie i calkowite zuzycie paliwa
Pkt_calkowite = 86
If Juz_wyswietlone <> 3 Then
Cls
Disable Interrupts
Showpic 0 , 17 , Lcd_zuzycie_srednie
Showpic 66 , 17 , Lcd_zuzycie_calkowite
Enable Interrupts
If Srednie_spal_cz_cal > 9 Then Pkt_srednie = 12
Pset 27 , 30 , 255
Pset 27 , 29 , 255
Pset 26 , 30 , 255
Pset 26 , 29 , 255
Pset 93 , 30 , 255
Pset 93 , 29 , 255
Pset 92 , 30 , 255
Pset 92 , 29 , 255
Juz_wyswietlone = Przycisk
If Srednie_spal_cz_cal > 9 Then Pkt_srednie = 12
If Calkowite_spal_cz_cal > 9 And Calkowite_spal_cz_cal <= 99 Then Pkt_calkowite = 78
If Calkowite_spal_cz_cal > 99 Then Pkt_calkowite = 70
Setfont Font8x8
Lcdat 4 , 29 , Srednie_spal_cz_ul
Lcdat 4 , Pkt_srednie , Srednie_spal_cz_cal
Lcdat 4 , 95 , Calkowite_spal_cz_ul
Lcdat 4 , Pkt_calkowite , Calkowite_spal_cz_cal
Gosub Pokaz_czas
End If
If Wyswietl = 1 Then
If Srednie_spal_cz_cal > 9 Then Pkt_srednie = 12
If Calkowite_spal_cz_cal > 9 And Calkowite_spal_cz_cal <= 99 Then Pkt_calkowite = 78
If Calkowite_spal_cz_cal > 99 Then Pkt_calkowite = 70
Setfont Font8x8
Lcdat 4 , 29 , Srednie_spal_cz_ul
Lcdat 4 , Pkt_srednie , Srednie_spal_cz_cal
Lcdat 4 , 95 , Calkowite_spal_cz_ul
Lcdat 4 , Pkt_calkowite , Calkowite_spal_cz_cal
Gosub Pokaz_czas
Wyswietl = 0
End If
Case 4: 'poziom ilosci paliwa + szacowany mozlwy dystans do przejechania
Pkt_zasieg = 105
Pkt_ilosc = 35
If Juz_wyswietlone <> 4 Then
Cls
Disable Interrupts
Showpic 0 , 17 , Lcd_poziom_paliwa
Showpic 66 , 17 , Lcd_zasieg
Enable Interrupts
Juz_wyswietlone = Przycisk
Gosub Pokaz_czas
Gosub Odczyt_paliwa
Poziom_paliwa = Poziom_paliwa + Poziom
If Odczyt = 10 Then
' If Odczyt = 240 Then
Poziom_paliwa = Poziom_paliwa / Odczyt
Ilosc_paliwa = Int(poziom_paliwa)
End If
Zasieg_single = Srednie_spalanie / Ilosc_paliwa
Zasieg_single = 100 / Zasieg_single
Zasieg = Int(zasieg_single)
If Zasieg > 9 And Zasieg <= 99 Then Pkt_zasieg = 96
If Zasieg > 99 And Zasieg <= 999 Then Pkt_zasieg = 88
If Zasieg > 999 And Zasieg <= 9999 Then Pkt_zasieg = 80
If Zasieg > 9999 And Zasieg <= 99999 Then Pkt_zasieg = 72
If Ilosc_paliwa > 9 And Ilosc_paliwa <= 99 Then Pkt_ilosc = 26
Setfont Font8x8
Lcdat 4 , Pkt_ilosc , Ilosc_paliwa
Lcdat 4 , Pkt_zasieg , Zasieg
End If
If Wyswietl = 1 Then
Gosub Pokaz_czas
Gosub Odczyt_paliwa
Poziom_paliwa = Poziom_paliwa + Poziom
If Odczyt = 10 Then
' If Odczyt = 240 Then
Poziom_paliwa = Poziom_paliwa / Odczyt
Ilosc_paliwa = Int(poziom_paliwa)
End If
Zasieg_single = Srednie_spalanie / Ilosc_paliwa
Zasieg_single = 100 / Zasieg_single
Zasieg = Int(zasieg_single)
If Zasieg > 9 And Zasieg <= 99 Then Pkt_zasieg = 96
If Zasieg > 99 And Zasieg <= 999 Then Pkt_zasieg = 88
If Zasieg > 999 And Zasieg <= 9999 Then Pkt_zasieg = 80
If Zasieg > 9999 And Zasieg <= 99999 Then Pkt_zasieg = 72
If Ilosc_paliwa > 9 And Ilosc_paliwa <= 99 Then Pkt_ilosc = 26
Setfont Font8x8
Lcdat 4 , Pkt_ilosc , Ilosc_paliwa
Lcdat 4 , Pkt_zasieg , Zasieg
Wyswietl = 0
End If
End Select
')
Loop
End 'koniec programu
'-------------------------------------------------------------------------------
'odczyt temperatury
'-------------------------------------------------------------------------------
Sub Convallt
1wreset
1wwrite &HCC
1wwrite &H44
End Sub
Function Decigrades(byval Sc(9) As Byte)
Dim Tmp As Byte , T As Integer , T1 As Integer
Tmp = Sc(1) And 1
If Tmp = 1 Then Decr Sc(1)
T = Makeint(sc(1) , Sc(2))
T = T * 50
T = T - 25
T1 = Sc(8) - Sc(7)
T1 = T1 * 100
T1 = T1 / Sc(8)
T = T + T1
Decigrades = T / 10
End Function
'-------------------------------------------------------------------------------
'Pomiar drogi
'-------------------------------------------------------------------------------
Pomiar_drogi:
Disable Int2
Incr Imp_predkosci
If Imp_predkosci = 4 Then
Imp_predkosci = 0
Incr Metr
End If
Enable Int2
Return
'-------------------------------------------------------------------------------
'pomiar czasu otwarcia wtryskiwacza
'-------------------------------------------------------------------------------
Wtryskiwacz:
Disable Int1
Timer1 = 0
Start Timer1
Do
Lcdat 2 , 0 , Timer1
Loop Until We2 = 1
Czas_otwarcia = Timer1
Flaga_wtrysku = 1
Enable Int1
Return
'-------------------------------------------------------------------------------
'RTC
'-------------------------------------------------------------------------------
'---------------------------------pokaz czas------------------------------------
Pokaz_czas:
If Godzina < 10 Then
Lcdat 1 , 0 , "0"
Lcdat 1 , 8 , Godzina
Else
Lcdat 1 , 0 , Godzina
End If
Lcdat 1 , 16 , ":"
If Minuta < 10 Then
Lcdat 1 , 24 , "0"
Lcdat 1 , 32 , Minuta
Else
Lcdat 1 , 24 , Minuta
End If
If Dzien < 10 Then
Lcdat 1 , 64 , "0"
Lcdat 1 , 72 , Dzien
Else
Lcdat 1 , 64 , Dzien
End If
Lcdat 1 , 80 , "-"
If Miesiac < 10 Then
Lcdat 1 , 88 , "0"
Lcdat 1 , 96 , Miesiac
Else
Lcdat 1 , 88 , Miesiac
End If
Lcdat 1 , 104 , "-"
If Rok < 10 Then
Lcdat 1 , 112 , "0"
Lcdat 1 , 120 , Rok
Else
Lcdat 1 , 112 , Rok
End If
Return
'-------------------------------------odczytaj czas-----------------------------
Odczytaj_czas:
I2cstart
I2cwbyte 208
I2cwbyte 0
I2cstop
Waitms 10
I2cstart
I2cwbyte 209
I2crbyte Sekunda , Ack
I2crbyte Minuta , Ack
I2crbyte Godzina , Ack
I2crbyte Dzien , Ack
I2crbyte Dzien , Ack
I2crbyte Miesiac , Ack
I2crbyte Rok , Nack
I2cstop
Waitms 10
Rok = Makedec(rok)
Miesiac = Makedec(miesiac)
Dzien = Makedec(dzien)
Godzina = Makedec(godzina)
Minuta = Makedec(minuta)
Sekunda = Makedec(sekunda)
Return
'---------------------------------------ustaw czas------------------------------
Ustaw_czas:
Setfont Font8x8
Sekunda = 0
Minuta = 0
Godzina = 0
Dzien = 1
Miesiac = 1
Rok = 6
Gosub Pokaz_czas
Lcdat 3 , 0 , " "
Lcdat 3 , 0 , "ustaw godzine"
Wait 1
Do
If Key_2 = 0 Then
Waitms 250
Incr Godzina
End If
If Godzina > 24 Then Godzina = 0
If Godzina < 10 Then
Lcdat 1 , 0 , "0"
Lcdat 1 , 8 , Godzina
Else
Lcdat 1 , 0 , Godzina
End If
Loop Until Key_1 = 0
Waitms 50
Gosub Pokaz_czas
Lcdat 3 , 0 , " "
Lcdat 3 , 0 , "ustaw minuty"
Do
If Key_2 = 0 Then
Waitms 250
Incr Minuta
End If
If Minuta > 59 Then Minuta = 0
If Minuta < 10 Then
Lcdat 1 , 24 , "0"
Lcdat 1 , 32 , Minuta
Else
Lcdat 1 , 24 , Minuta
End If
Loop Until Key_1 = 0
Waitms 50
Gosub Pokaz_czas
Lcdat 3 , 0 , " "
Lcdat 3 , 0 , "ustaw dzien"
Do
If Key_2 = 0 Then
Waitms 250
Incr Dzien
End If
If Dzien > 31 Then Dzien = 0
If Dzien < 10 Then
Lcdat 1 , 64 , "0"
Lcdat 1 , 72 , Dzien
Else
Lcdat 1 , 64 , Dzien
End If
Loop Until Key_1 = 0
Waitms 50
Gosub Pokaz_czas
Lcdat 3 , 0 , " "
Lcdat 3 , 0 , "ustaw miesiac"
Do
If Key_2 = 0 Then
Waitms 250
Incr Miesiac
End If
If Miesiac > 12 Then Miesiac = 0
If Miesiac < 10 Then
Lcdat 1 , 88 , "0"
Lcdat 1 , 96 , Miesiac
Else
Lcdat 1 , 88 , Miesiac
End If
Loop Until Key_1 = 0
Waitms 50
Gosub Pokaz_czas
Lcdat 3 , 0 , " "
Lcdat 3 , 0 , "ustaw rok"
Do
If Key_2 = 0 Then
Waitms 250
Incr Rok
End If
If Rok > 99 Then Rok = 0
If Rok < 10 Then
Lcdat 1 , 112 , "0"
Lcdat 1 , 120 , Rok
Else
Lcdat 1 , 112 , Rok
End If
Loop Until Key_1 = 0
Waitms 50
Rok = Makebcd(rok)
Miesiac = Makebcd(miesiac)
Dzien = Makebcd(dzien)
Godzina = Makebcd(godzina)
Minuta = Makebcd(minuta)
Sekunda = Makebcd(sekunda)
I2cstart
I2cwbyte 208
I2cwbyte 0
I2cwbyte Sekunda
I2cwbyte Minuta
I2cwbyte Godzina
I2cwbyte 0
I2cwbyte Dzien
I2cwbyte Miesiac
I2cwbyte Rok
I2cwbyte &B00010000
I2cstop
Waitms 10
Return
'-----------------------------------oczytaj poziom paliwa-----------------------
Odczyt_paliwa:
I2cstart
I2cwbyte 144
I2cwbyte 0
I2cstart
I2cwbyte 145
I2crbyte Poziom , Ack
I2crbyte Poziom , Nack
I2cstop
Incr Odczyt
Waitms 10
Return
'-------------------------------------------------------------------------------
'logo
'-------------------------------------------------------------------------------
Ford_logo:
$bgf "ford_logo.bgf"
Lcd_temp_wew:
$bgf "lcd_temp_wew.bgf"
Lcd_temp_zew:
$bgf "lcd_temp_zew.bgf"
Lcd_poziom_paliwa:
$bgf "lcd_poziom_paliwa.bgf"
Lcd_przebyta_droga:
$bgf "lcd_przebyta_droga.bgf"
Lcd_zasieg:
$bgf "lcd_zasieg.bgf"
Lcd_zuzycie_calkowite:
$bgf "lcd_zuzycie_calkowite.bgf"
Lcd_zuzycie_chwilowe:
$bgf "lcd_zuzycie_chwilowe.bgf"
Lcd_zuzycie_srednie:
$bgf "lcd_zuzycie_srednie.bgf"