logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[atmega8][bascom] wyswietlanie informacji na lcd 16*2

krzysiekosw 25 Cze 2009 16:55 2033 2
REKLAMA
  • #1 6702278
    krzysiekosw
    Poziom 11  
    Witam. Napisałem prosty programik na atmege8 i lcd 16*2 do pomiaru temperatury silnika i prędkości obrotowej , wszystko działa ok ale chciałbym dodać jeszcze parę rzeczy w postaci ze jeśli obroty silnika przekroczyłyby np: 3000 rpm to wyświetliłby się komunika "zbyt wysokie obroty" lub coś w tym stylu bądz temp. przekroczy 110 st.C to "wysoka temp silnika" . Zapewne chodzi o zastosowanie jakiegoś warunku , próbowałem różnie ale jakoś mi to niezbyt wychodzi . Moja prośba to czy któryś z kolegów mógłby mi pokazać jakiś przykład (proszę o wyrozumiałość uC bawię się dopiero od tyg.) pozdrawiam

    $regfile "m8def.dat"
    $crystal = 8000000
    
    Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
    Config Lcd = 16 * 2
    
    Dim Wynik As Long
    Dim Odczyt(2) As Byte , A As Byte , Licznik As Byte , T As Integer , T1 As Single , Napis As String * 5
    
    Config 1wire = Portd.4
    Config Timer1 = Counter , Edge = Rising
    
    Cursor Off
    Cls
    
    Lcd "  Obrotomierz  "
    Locate 2 , 2
    Lcd "  Termometr  "
    Wait 2
    Cls
    
    Lcd "  Zapnij pasy  "
    Locate 2 , 1
    Lcd " Wlacz swiatla "
    Wait 2
    
    Deflcdchar 1 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32        ' replace ? with number (0-7)
    Do
    
    Timer1 = 0
    Start Timer1
    Waitms 500
    Stop Timer1
    
    Wynik = Timer1 * 120
    
    
      1wreset
      1wwrite &HCC
      1wwrite &H44
      Waitms 750
      1wreset
      1wwrite &HCC
      1wwrite &HBE
      Odczyt(1) = 1wread(2)
      T = Odczyt(2)
    
      Shift T , Left , 8
      T = T + Odczyt(1)
    
      T1 = T * 0.0625
    
      Napis = Fusing(t1 , "#.#")
    
    Cursor Off
    Cls
    Locate 1 , 1
    Lcd "Vdo " ; Wynik ; " obr/min"
    
    Locate 2 , 1
    Lcd "Temp " ; Napis ; " " ; Chr(1) ; "C"
    
    Loop
    End


    Kod umieszczamy w tagach [code] , a nie [b] - poprawiłem.
    [zumek]
  • REKLAMA
  • #2 6702983
    janbernat
    Poziom 38  
    Np. tak:
    
    Locate 1 , 1
    Lcd "Vdo " ; Wynik ; " obr/min" 
        if Wynik>2147483000 then
         cls
         lcd"chyba masz za duze obroty"
         end if

    Dla temperatury podobnie.
  • #3 6705947
    krzysiekosw
    Poziom 11  
    janbernat dzieki za podpowiedz , teraz dziala tak jak chcialem pozdrawiam
REKLAMA