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][bascom] wyswietlanie informacji na lcd 16*2

krzysiekosw 25 Jun 2009 16:55 1952 2
  • #1
    krzysiekosw
    Level 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

    Code:
    $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]
    [28-30.06.2022, targi] PowerUP EXPO 2022 - zasilanie w elektronice. Zarejestruj się za darmo
  • #2
    janbernat
    Level 38  
    Np. tak:
    Code:

    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
    krzysiekosw
    Level 11  
    janbernat dzieki za podpowiedz , teraz dziala tak jak chcialem pozdrawiam