Witam. W dziedzinie mikrokontrolerów jestem początkujący więc proszę o wyrozumiałość. Mam problem zaprogramowaniem Atmega8. Programator zrobilem sobie według schematu z tego posta [url=https://www.elektroda.pl/rtvforum/topic1209412.html .
Problem w tym że jak zaprogramuję na LCD wyświetlają się tylko czarne kwadraciki w pierwszej lini.
Programuję w Bascomie.
Mój kod:
W Bascomie w zakładce : "Lock and Fuse Bits" mam:
Prosiłbym bardziej doświadczonych forumowiczów o jakieś wskazówki gdzie popełniam błąd.
Problem w tym że jak zaprogramuję na LCD wyświetlają się tylko czarne kwadraciki w pierwszej lini.
Programuję w Bascomie.
Mój kod:
Code:
'Termometr 4 punktowy DS18b20
$regfile = "m8def.DAT"
$crystal = 1000000
'Deklaracja portów od wys'wietlacza LCD
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
Config Lcd = 16 * 2
'*************************************WAZ.NE**********************************************
Config 1wire = Portd.5 'deklaracja portu na którym beda podpiete DS18b20
Dim I1 As Integer , Ss As String * 6
Dim I2 As Integer
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
Dim B As Byte 'deklaracja zmiennej do odczytu kodów ID
Dim W As Byte $prog &HFF , &HE1 , &HD9 , &H00 ' generated. Take care that the chip supports all fuse bytes. 'deklaracja zmiennej do odczytu ilosc czujników
Deflcdchar 0 , 8 , 20 , 11 , 4 , 4 , 4 , 3 , 32
Cursor Off
Cls
Lcd "Termometr" ;
Lowerline
Lcd " 2009 "
Wait 5
Cls
W = 1wirecount()
Lcd "Ilosc czujnikow:"
Waitms 500
Lcd W
Wait 3
Cls
Dsid1(1) = 1wsearchfirst()
Dsid2(1) = 1wsearchnext()
'*******************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
Cls
'*******************koniec odczytu ID czujników temperatury*********************
Do
1wreset
1wwrite &H55
1wverify Dsid1(1)
1wwrite &HBE
I1 = 1wread(2)
'---------------------------------
1wreset
1wwrite &H55
1wverify Dsid2(1)
1wwrite &HBE
I2 = 1wread(2)
'--------konwersja temp dla wszystkich dsow
1wreset
1wwrite &HCC
1wwrite &H44
Wait 1
I1 = I1 * 10
I1 = I1 / 16
'If I1 > 0 Then Cls
Ss = Str(i1)
Ss = Format(ss , " 0.0")
Locate 1 , 1
Lcd "Kol" ; 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 "Keg" ; Ss ; Chr(0) ;
Loop
W Bascomie w zakładce : "Lock and Fuse Bits" mam:

Prosiłbym bardziej doświadczonych forumowiczów o jakieś wskazówki gdzie popełniam błąd.