Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Atmega8-termometr, Bascom, na LCD czarne kwadraciki.

piotrek198o 21 Feb 2009 19:03 3274 5
  • #1
    piotrek198o
    Level 13  
    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:

    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:
    Atmega8-termometr, Bascom, na LCD czarne kwadraciki.
    Prosiłbym bardziej doświadczonych forumowiczów o jakieś wskazówki gdzie popełniam błąd.
  • #3
    piotrek198o
    Level 13  
    Połączenia sprawdzałem miernikiem i są raczej ok.
  • #5
    piotrek198o
    Level 13  
    Dzisiaj jeszcze raz wszystko sprawdziłem, poprawiłem luty i zaprogramowałem. Po włączeniu nie ma już tych kwadracików ale lcd wyświetla tylko jakieś krzaczki które na początku się przełączają i po ok. 20sek. zatrzymują się.
    RW podpięte pod mase.
  • #6
    Vol2
    Level 11  
    Troszkę stary ten post piotrek198o, ale użyłem programu na swojej PCB (zmieniłem konfigurację LCD i 1wire) i program działa.