Imam jedno pitanje u vezi projekta mjerača temperature s mikrokontrolerom 89c2051 i dallasovim senzorima ds1820 kojeg sam izabrao za maturalni rad. Tiskana pločica, tj sklop je izveden prema električnoj shemi sa slike. Imam dva senzora ds1820 ali prvo moram saznati ID kodove pojedinih senzora i to tako da spojim samo jedan senzor i onda pročitam sadržaj njegova ROM-a pa ga onda odspojim i spojim drugi senzor pa čitam njegov ROM. Problem je u tome što kad uključim sklop u napajanje (9V, ali nakon stabilizatora 78L05 je napon 5V) na LCD-u bi se trebali prikazivati bajt po bajt ROM-a priključenog senzora, a umjesto toga na LCD-u su prikazani neki kvadratići (svi segmenti pojedinog znaka su uključeni). Ne pomaže ni resetiranje mikrokontrolera. Tip LCD displaya je PC1602AR (2 reda po 16 znakova). Na LCD je priključen potenciometar od 25k za podešavanje svjetline na LCD-u. Da li je to previše? U uputama za rad sa senzorom koje sam našao na internetu sam vidio da kad se koristi parazitno napajanje senzora da se treba spojiti još jedan MOSFET tranzistor na sabirnicu kao dodatni pullup (slika je priložena), ali meni je profesor rekao da taj tranzistor ne treba, treba li? Napajanje sklopa je provjereno i u redu. Ne znam zašto ne ispisuje ništa na LCD-u. Drugi red LCD-a se dosta slabije vidi. U prilogu su još i slike upaljenog i ugašenog LCD-a tj onog što on prikazuje. U mikrokontroleru at89c2051 je ovaj program kojim se ispisuje ID kod senzora na LCD:
Declare Sub Keyboard
Declare Sub Display
Declare Sub Address
Dim Id(8) As Byte
Dim I As Byte
Config Lcd = 16 * 2
Config 1wire = P3.0
Cursor Off Noblink
Cls
Do
Address
Display
Waitms 250
Loop
End
'//////////////////////////////////////////////////////////////////////////////
Sub Address
1wreset
1wwrite &H33
For I = 1 To 8
Id(i) = 1wread(i)
Next
1wreset
End Sub
'//////////////////////////////////////////////////////////////////////////////
Sub Display
Cls
For I = 1 To 8
Lcd " ID(" ; I ; ") = " ; Id(i)
Lowerline
Lcd " Byte " ; I
Wait 1
Keyboard
Cls
Next
End Sub
'//////////////////////////////////////////////////////////////////////////////
Sub Keyboard
Debounce P3.3 , 0 , Mode1 , Sub
End Sub
'//////////////////////////////////////////////////////////////////////////////
Mode1:
Wait 2
Do
Loop Until P3.3 = 0
Return
Možete li nekako pomoći?! Bilo kako. Unaprijed zahvaljujem!
Declare Sub Keyboard
Declare Sub Display
Declare Sub Address
Dim Id(8) As Byte
Dim I As Byte
Config Lcd = 16 * 2
Config 1wire = P3.0
Cursor Off Noblink
Cls
Do
Address
Display
Waitms 250
Loop
End
'//////////////////////////////////////////////////////////////////////////////
Sub Address
1wreset
1wwrite &H33
For I = 1 To 8
Id(i) = 1wread(i)
Next
1wreset
End Sub
'//////////////////////////////////////////////////////////////////////////////
Sub Display
Cls
For I = 1 To 8
Lcd " ID(" ; I ; ") = " ; Id(i)
Lowerline
Lcd " Byte " ; I
Wait 1
Keyboard
Cls
Next
End Sub
'//////////////////////////////////////////////////////////////////////////////
Sub Keyboard
Debounce P3.3 , 0 , Mode1 , Sub
End Sub
'//////////////////////////////////////////////////////////////////////////////
Mode1:
Wait 2
Do
Loop Until P3.3 = 0
Return
Možete li nekako pomoći?! Bilo kako. Unaprijed zahvaljujem!