Dołączył: 06 Maj 2007 Posty: 240 Miasto: Janów Lubelski
26 Kwi 2008 11:13
Re: 4x DS18b20 +LCD = Termometr
A jak przerobić do atmegi8 na wyświetlacz 2*16znaki mam z tym małe problemy, bo nie cofa mi stopnia celciusza i strzałek. Dam 15pkt za pomoc. Dziękuję.
'*******************Odczyt numerów ID czujników temperatury*********************
If Dsid1(8) = Crc8(dsid1(1) , 7) Then
Locate 1 , 1
Lcd "CRC OK Czujnik 1 ID"
Wait 1
Locate 1 , 1
For B = 1 To 8
Lcd Hex(dsid1(b))
Next
End If
Wait 2
If Dsid2(8) = Crc8(dsid2(1) , 7) Then
Locate 2 , 1
Lcd "CRC OK Czujnik 2 ID"
Wait 1
Locate 2 , 1
For B = 1 To 8
Lcd Hex(dsid2(b))
Next
End If
Wait 2
If Dsid3(8) = Crc8(dsid3(1) , 7) Then
Locate 1 , 1
Lcd "CRC OK Czujnik 3 ID"
Wait 1
Locate 1 , 1
For B = 1 To 8
Lcd Hex(dsid3(b))
Next
End If
Wait 2
If Dsid4(8) = Crc8(dsid4(1) , 7) Then
Locate 2 , 1
Lcd "CRC OK Czujnik 4 ID"
Wait 1
Locate 2 , 1
For B = 1 To 8
Lcd Hex(dsid4(b))
Next
End If
Wait 2
Cls
'*******************koniec odczytu ID czujników temperatury*********************
I1 = I1 * 10
I1 = I1 / 16
'If I1 > 0 Then Cls
Ss = Str(i1)
Ss = Format(ss , " 0.0")
Locate 1 , 1
Lcd "Wew" ; Ss ; Chr(0) ;
I2 = I2 * 10
I2 = I2 / 16
'If I2 > 0 Then Cls
Ss = Str(i2)
Ss = Format(ss , " 0.0")
Locate 2 , 1
Lcd "Zew" ; Ss ; Chr(0) ;
I3 = I3 * 10
I3 = I3 / 16
'If I3 > 0 Then Cls
Ss = Str(i3)
Ss = Format(ss , " 0.0")
Locate 1 , 11
Lcd "Chlo" ; Ss ; Chr(0) ;
I4 = I4 * 10
I4 = I4 / 16
'If I4 > 0 Then Cls
Ss = Str(i4)
Ss = Format(ss , " 0.0")
Locate 2 , 11
Lcd "Gaz" ; Ss ; Chr(0) ;
Loop
I mam bube jeszcze, stabilizator 78l05 nie daje napięcia 5V, podłączam procek do niego czyli w 78l05 środkową i lewy pin, i pod atmelka8. Twój kod działa bez problemowo. Ale muszę zasilać z ładowarki od nokii aby miec jako tako te 4,5v.
Czy każdy wyświetlacz LCD podjedzie pod ten schemat który podał Duch? Chodzi mi oczywiście o wyświetlacz 2x20 lub 2x16, bo byłem się dzisiaj pytać o taki w sklepie elektronicznym i gościu spojrzał na ten schemat i mi dał LCD za 38zł...to jest trochę za drogo bo chciałbym się zamknąć w 20zł za LCD a duchu mówił coś o 9zł :)
Chciałbym się was jeszcze zapytać o te piny na LCD, nie są one opisane i za bardzo nie wiem które są które
Może dał Ci taki z dodatkowym podświetleniem i jakimiś bajerami ;). W dodatku często się niestety naciągacze zdarzają. Ja ostatnio zapłaciłem z 2 przełączniki hebelkowe małe i 5 oporników w sumie 5,30 zł :D. LCD Duch'a to najprostszy z dostępnych. Rozpiska pinów pewnie jest z tyłu na PCB, albo w internecie. To popularne LCD'ki.
Pozdrawiam
Holcer
P.S. Wysyłam Ci na PW linki do allegro... Wystarczyło poszukać ;).
Czyli z tego wynika że jakikolwiek kupie wyświetlacz 2x20 to będzie pasował?
bo tak w zasadzie nie wiem czy te oznaczenia pinów są znormalizowane i nie chce mieć takiej przygody że kupie wyświetlacz na którym będą zupełnie inne oznaczenia...
skoro każdy lcd pasuje to koło niedzieli wrzuce zdjęcią swojego termometru...
Będzie pasował nawet 1x 8; np. po przerobieniu programu - przełączanie ekranów przyciskiem; wtedy czujników ile chcesz.
W tym projekcie zależy ile tych czujników chcesz podpiąć i jakie informacje dodatkowe chcesz wyświetlić.
Jak widać na pierwszym zdjęciu (wyświetlacz 2x 20) na początku postu, nazwy się nie mieszczą - gdy pojawi się temperatura ujemna w ogól nie będzie czytelne; od tego zależy jaki wyświetlacz kupić.
Organizacja pinów (podłączenie) jest taka sama dla wszystkich; chyba że kupisz jakiegoś dziwoląga - głównie allegro; z jakieś kas, urządzeń przemysłowych - wtedy piny mogą być inaczej.
Taki efekt (częściowe świecenie punktów matrycy) da uszkodzenie mechaniczne (pęknięcia wyświetlacza w miejscu wyprowadzeń pod metalową ramką) lub szkodzenie gumek przewodzących (zmiana siły docisku, zużycie się, zabrudzenia).
Rzadziej uszkodzenia samego sterownika wyświetlacza LCD.
jacekhe Takie wyświetlanie to znaczy, że mikrokontroler nie pracuje "martwy" jest. Przyczyna może być w złym zaprogramowaniu uC lub złe ustawienie fusów. Pozdrawiam :)
oj Też miałem kiedyś taki pasek w górnej linii LCD. U mnie była to przyczyna zapomnienia ustawienia fusów. Układ wymaga ustawienia zewnętrznego lub wewnętrznego zegara.
Dołączył: 15 Sie 2004 Posty: 1609 Miasto: Konstancin-Jeziorna
09 Maj 2008 17:08
Re: 4x DS18b20 +LCD = Termometr
Mariuszek czytaj dokładnie. Jacekhe ma wyświetlacz taki jak na zdjęciu a nie ten ze zdjęcia. I u niego "świecą się" segmenty obu linii, ale tylko po prawej stronie.
i to rzeczywiście może wskazywać na uszkodzenie wyświetlacza.
:arrow: Jacekhe
Spróbuj odlutować przewody od głównej płytki i do lcd doprowadź tylko zasilanie, masę i napięcie kontrastu. Jeśli pojawi się pełna linia w górnym wierszu i brak linii w drugim rzędzie (oczywiście po regulacji kontrastu), to lcd raczej sprawny.
Tak, ale warto wspomnieć o takim problemie. Możliwe, że LCD jest uszkodzony, ale nasuwa mi się także złe podpięcie wyświetlacza LCD. Niech autor sprawdzi poprawność montażu.
Dajcie spokój . Włączcie google . Znajdziecie wzorcowe wykonanie tego oklepanego tematy . Bawią mnie określenia "Obecnie pracuje nad czymś podobnym " :-). Sorry . Jak ktoś musi nad czymś takim pracować to elektronika nie jest jego mocną stroną . Ogólnie oklepane ... Wykonanie koszmarne . Jak można publicznie pokazywać takiego gniota. Przecież jak to zobaczy ktoś z innej branży to powie że elektronicy to takie dziwaki . Co robią coś na łapu capu i próbują zainteresować tym innych . Panowie dbajmy o nasz wizerunek . PR to dzisiaj ważna sprawa :-)
Dołączył: 06 Maj 2007 Posty: 240 Miasto: Janów Lubelski
10 Maj 2008 16:54
Re: 4x DS18b20 +LCD = Termometr
Nom LCD pokazał 1 linię tak jak powinien, myślę ze jest sprawny. Dziś kolega też sprawdził poprawność podłączenia i znalazł błąd. Błąd niewielki ale wyświetlacz nie ruszył. Potem opiszę co i jak... Pozdrawiam
'*******************Odczyt numerów ID czujników temperatury*********************
If Dsid1(8) = Crc8(dsid1(1) , 7) Then
Locate 1 , 1
Lcd "CRC OK Czujnik 1 ID"
Waitms 50
Locate 1 , 1
For B = 1 To 8
Lcd Hex(dsid1(b))
Next
End If
Waitms 50
If Dsid2(8) = Crc8(dsid2(1) , 7) Then
Locate 2 , 1
Lcd "CRC OK Czujnik 2 ID"
Waitms 50
Locate 2 , 1
For B = 1 To 8
Lcd Hex(dsid2(b))
Next
End If
Waitms 50
Cls
'*******************koniec odczytu ID czujników temperatury*********************
Dołączył: 06 Maj 2007 Posty: 240 Miasto: Janów Lubelski
12 Maj 2008 12:53
Re: 4x DS18b20 +LCD = Termometr
Stwierdzam że termometru nie udało mi się uruchomić, i chyba już nie uda. Projekt u mnie u mnie ląduje do lamusa pierwsze co nie udało mi się uruchomić, nie wiem co z tym fantem zrobie. Schemat podłączenia lcd mam taki R/W=>podłączam do masy.
Pin KTR podpiąłeś do masy, lub przez potencjometr? Może nie działało bo Ci sie nic na wyświetlaczu nie pojawiło :]
Napisz program wyświetlający na LCD dowolny tekst lub podłącz się nim do kompa (Smartie -> Odsyłam do konkretnego tematu dotyczącego podłączenia LCD do kompa) by sprawidzić czy działa wyświetlacz.
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
Dim Dsid3(8) As Byte
Dim Dsid4(8) As Byte
Dim I1(9) As Byte
Dim I2(9) As Byte
Dim I3(9) As Byte
Dim I4(9) As Byte
Dim I As Byte , Tmp As Byte
Dim Crc As Byte
Dim T As Integer , T1 As Integer
Dim X As Integer
Dim Ia As String * 4
Dim Ib As String * 4
Dim Ic As String * 4
Dim Id As String * 4
Dim W As Byte
If I1(8) = Crc8(i1(1) , 7) Then
Crc = 0
End If
If Crc = 0 Then
Tmp = I1(1) And 1
If Tmp = 1 Then Decr I1(1)
T = Makeint(i1(1) , I1(2))
T = T * 50 : T = T - 25 : T1 = I1(8) - I1(7) : T1 = T1 * 100
T1 = T1 / I1(8) : T = T + T1 : T = T / 10
End If
If Crc = 1 Then
Locate 1 , 1 : Lcd "-- "
Else
If Crc = 0 Then
Locate 1 , 1
Ia = Str(t)
Lcd Left(ia , 2) : Lcd "."
Lcd Mid(ia , 3 , 1)
Else
Locate 1 , 1 : Lcd "** "
End If
End If
If I2(8) = Crc8(i2(1) , 7) Then
Crc = 0
End If
If Crc = 0 Then
Tmp = I2(1) And 1
If Tmp = 1 Then Decr I2(1)
T = Makeint(i2(1) , I2(2))
T = T * 50 : T = T - 25 : T1 = I2(8) - I2(7) : T1 = T1 * 100
T1 = T1 / I2(8) : T = T + T1 : T = T / 10
End If
If Err = 1 Then
Locate 2 , 1 : Lcd "-- "
Else
If Crc = 0 Then
Locate 2 , 1
Ib = Str(t)
Lcd Left(ib , 2) : Lcd "."
Lcd Mid(ib , 3 , 1)
Else
Locate 2 , 1 : Lcd "** "
End If
End If
If I3(8) = Crc8(i3(1) , 7) Then
Crc = 0
End If
If Crc = 0 Then
Tmp = I3(1) And 1
If Tmp = 1 Then Decr I3(1)
T = Makeint(i3(1) , I3(2))
T = T * 50 : T = T - 25 : T1 = I3(8) - I3(7) : T1 = T1 * 100
T1 = T1 / I3(8) : T = T + T1 : T = T / 10
End If
If Err = 1 Then
Locate 1 , 11 : Lcd "-- "
Else
If Crc = 0 Then
Locate 1 , 11
Ic = Str(t)
Lcd Left(ic , 2) : Lcd "."
Lcd Mid(ic , 3 , 1)
Else
Locate 1 , 11 : Lcd "** "
End If
End If
If I4(8) = Crc8(i4(1) , 7) Then
Crc = 0
End If
If Crc = 0 Then
Tmp = I4(1) And 1
If Tmp = 1 Then Decr I4(1)
T = Makeint(i4(1) , I4(2))
T = T * 50 : T = T - 25 : T1 = I4(8) - I4(7) : T1 = T1 * 100
T1 = T1 / I4(8) : T = T + T1 : T = T / 10
End If
If Err = 1 Then
Locate 2 , 11 : Lcd "-- "
Else
If Crc = 0 Then
Locate 2 , 11
Id = Str(t)
Lcd Left(id , 2) : Lcd "."
Lcd Mid(id , 3 , 1)
Else
Locate 1 , 1 : Lcd "** "
End If
End If
X = X + 1
Else
Cls
Gosub Vypis1
Gosub Vypis2
Gosub Vypis3
Gosub Vypis4
X = 0
Cls
Gosub Stupne
End If
Loop
End