www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Prosim za pomoč kako izvesti prižig LCD Bascom

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
alesing
Neznanec
Neznanec



Pridružen-a: Tor 24 Jul 2012 14:05
Prispevkov: 7
Aktiv.: 0.04

PrispevekObjavljeno: Tor Jul 24, 2012 2:13 pm    Naslov sporočila:  Prosim za pomoč kako izvesti prižig LCD Bascom Odgovori s citatom

Pozdravljeni!
program je kot ga vidite spodaj 2 senzorja LM35 itd
sedaj me muči sledeče, kot vidite se mi na začetku prižge LCD nato ugasne kar je pravilno, kako bi pa naredil da bi se mi pri vsakem prehodu ko napiše na LCD vklop releja ter izklop releja prižgal LCD za 3 sek. Ko dam podprogram notri mi utripa LCD javascript:emoticon('Laughing')

Koda:
$regfile = "ATtiny2313.dat"
$crystal = 4000000


Dim A As Byte , Temp As Byte , T1 As Byte , T2 As Byte
Dim Raz As Byte , Dif1 As Byte , Dif2 As Byte
Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , _
E = Portd.1 , Rs = Portd.0
'-------------------------------------
'Standard LCD 2x16; type:CMC216x01 or sim.; www.cct.com.my
'pin1:  Ground(-)
'pin2:  Supply(+)
'pin3:  Supply(0V-5V DC) for LCD Contrast Level
'pin4:  RS Signal
'pin5:  R/W Selection
'pin6:  Enable Signal
'pin7:  Db0 (Data Bus Line)
'pin8:  Db1 (Data Bus Line)
'pin9:  Db2 (Data Bus Line)
'pin10: Db3 (Data Bus Line)
'pin11: Db4 (Data Bus Line)
'pin12: Db5 (Data Bus Line)
'pin13: Db6 (Data Bus Line)
'pin14: Db7 (Data Bus Line)
'pin15: Backlight Ground(-)
'pin16: Backlight Supply(+)
'-------------------------------------


     Config Portd = &B11111111
Config Portb = &B00011110

Tran1 Alias Portb.4
Tran2 Alias Portb.3
Clk Alias Portd.6
Adcout Alias Pinb.0
Cs1 Alias Portb.2
Cs2 Alias Portb.1

Set Portb.0
Set Portb.5
Set Portb.6
Set Portb.7
Set Cs1
Set Cs2


Set Tran2

     'izklopi kurzor
   Cursor Off

   'zbrisi cel LCD in nastavi kurzor na zacetek
   Cls


   'izpisi tekst
   Lcd "*ALES-ELEKTRO*"

   'nastavi spodnjo vrstico
   Lowerline

   'izpisi tekst
   Lcd "*TEMP.V.CLIO*"
     Wait 5
     Reset Tran2

Cls



'Nastavi diferenco - Histerezo !
Dif1 = 1
Dif2 = 2



Do
'beremo senzor No.1
Reset Cs1
Gosub Pulse
Gosub Pulse
A = 0
T1 = 0
For Temp = 1 To 8
T1 = T1 * 2
Gosub Pulse
T1 = T1 + A
If Adcout = 1 Then
   A = 1
   Else
   A = 0
End If
Next Temp
Set Cs1
Waitms 100
'beremo senzor No.2
Reset Cs2
Gosub Pulse
Gosub Pulse
A = 0
T2 = 0
For Temp = 1 To 8
T2 = T2 * 2
Gosub Pulse
T2 = T2 + A
If Adcout = 1 Then
   A = 1
   Else
   A = 0
End If
Next Temp
Set Cs2
Waitms 100
'pogoji za vklop relejev
'
'V hex verziji je tukaj podprogram MENU, za vnos temperature T1 in T2.
'Temperaturo T1 in T2 pri kateri vklopi rele, vnesemo s pomoejo tipk 5,6,in 7.
'
Raz = T2 - T1
If T2 < T1 Then Raz = 1

If Raz >= Dif1 Then
   Set Tran1
   End If

If Raz <= Dif2 Then
   Reset Tran1
   End If


'izpisemo na LCD display prvo in drugo temperaturo, ter stanje izhodov
Locate 1 , 1
Lcd "T1:"
If T1 < 10 Then Lcd " "
Lcd T1 ; Chr(0) ; "C"
Locate 1 , 10
Lcd "Rele=>"
Locate 2 , 1
Lcd "T2:"
If T2 < 10 Then Lcd " "
Lcd T2 ; Chr(0) ; "C"
Locate 2 , 10
If Tran1 = 1 Then Lcd "Vklop "
If Tran1 = 0 Then Lcd "Izklop"
Wait 1


Loop




Pulse:
Set Clk
Waitus 10
Reset Clk

Return
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1234
Aktiv.: 5.67
Kraj: KOPER

PrispevekObjavljeno: Tor Jul 24, 2012 8:32 pm    Naslov sporočila:   Odgovori s citatom

Daj piši pregledno. Tako napisanemu programu je teško slediti tebi še bolj pa nam.

Nekako tako za začetek-:

Koda:
Do
  If A > B Then
     C = A
    If Led = 0 Then
        Set Led
       Else
        Reset Led
     End
     ' ali pa še bolj pregledno
     If Led = 0 Then Set Led  Else  Reset Led
  End If

Loop

_________________
Lep pozdrav iz Kopra Rudi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
6dan8
Član
Član



Pridružen-a: Tor 18 Jan 2011 10:53
Prispevkov: 1053
Aktiv.: 6.00
Kraj: Goriška

PrispevekObjavljeno: Sre Jul 25, 2012 10:45 am    Naslov sporočila:  Re: Prosim za pomoč kako izvesti prižig LCD Bascom Odgovori s citatom

Citiram:
Ko dam podprogram notri mi utripa LCD
Čakaj, ti govoriš o podprogramu MENU, za vnos temperature T1 in T2? Ki je v zanki "Do-Loop"? Ti slučajno podprogram MENU briše (ali kaj piše na) LCD?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 42.79
Kraj: Mengeš

PrispevekObjavljeno: Sre Jul 25, 2012 11:55 am    Naslov sporočila:   Odgovori s citatom

tole je meni malce oblačno... namreč, LM35 je analogni senzor, tiny2313 pa sploh nima ADC konverterja...? raje uporabi drug kontroler kot da kompliciraš s tem okoli branja...
Pa povej, kako bi rad sploh imel: LCD naj bi ti stalno prikazoval temperaturo, zunaj, notri. kaj naj bi delal rele?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
alesing
Neznanec
Neznanec



Pridružen-a: Tor 24 Jul 2012 14:05
Prispevkov: 7
Aktiv.: 0.04

PrispevekObjavljeno: Sre Jul 25, 2012 2:17 pm    Naslov sporočila:   Odgovori s citatom

Ta program dela čisto OK glede na diferenco se mi prižiga rele. Za LM35 imam ADC.
Imam pa sledeč problem prižig osvetljitve v programu imam napisano da se mi na začetku za 5sek prižge nato ugasne OK sedaj bi pa rad da se mi pri vsaki spremembi releja 1-0 ali 0-1 prižge za 5sek osvetlitev ter mi osvetli rezultat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
alesing
Neznanec
Neznanec



Pridružen-a: Tor 24 Jul 2012 14:05
Prispevkov: 7
Aktiv.: 0.04

PrispevekObjavljeno: Sre Jul 25, 2012 2:33 pm    Naslov sporočila:   Odgovori s citatom

$regfile = "ATtiny2313.dat"
$crystal = 4000000


Dim A As Byte , Temp As Byte , T1 As Byte , T2 As Byte
Dim Raz As Byte , Dif1 As Byte , Dif2 As Byte
Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , _
E = Portd.1 , Rs = Portd.0
'-------------------------------------
'Standard LCD 2x16; type:CMC216x01 or sim.; www.cct.com.my
'pin1: Ground(-)
'pin2: Supply(+)
'pin3: Supply(0V-5V DC) for LCD Contrast Level
'pin4: RS Signal
'pin5: R/W Selection
'pin6: Enable Signal
'pin7: Db0 (Data Bus Line)
'pin8: Db1 (Data Bus Line)
'pin9: Db2 (Data Bus Line)
'pin10: Db3 (Data Bus Line)
'pin11: Db4 (Data Bus Line)
'pin12: Db5 (Data Bus Line)
'pin13: Db6 (Data Bus Line)
'pin14: Db7 (Data Bus Line)
'pin15: Backlight Ground(-)
'pin16: Backlight Supply(+)
'-------------------------------------

Config Portd = &B11111111
Config Portb = &B00011110

Tran1 Alias Portb.4
Tran2 Alias Portb.3
Clk Alias Portd.6
Adcout Alias Pinb.0
Cs1 Alias Portb.2
Cs2 Alias Portb.1

Set Portb.0
Set Portb.5
Set Portb.6
Set Portb.7
Set Cs1
Set Cs2


Set Tran2

'izklopi kurzor
Cursor Off

'zbrisi cel LCD in nastavi kurzor na zacetek
Cls


'izpisi tekst
Lcd "*ALES-ELEKTRO*"

'nastavi spodnjo vrstico
Lowerline

'izpisi tekst
Lcd "*031 660 292*"
Wait 2
Reset Tran2

Cls



'Nastavi diferenco - Histerezo !
Dif1 = 1
Dif2 = 2



Do
'beremo senzor No.1
Reset Cs1
Gosub Pulse
Gosub Pulse
A = 0
T1 = 0
For Temp = 1 To 8
T1 = T1 * 2
Gosub Pulse
T1 = T1 + A
If Adcout = 1 Then
A = 1
Else
A = 0
End If
Next Temp
Set Cs1
Waitms 100
'beremo senzor No.2
Reset Cs2
Gosub Pulse
Gosub Pulse
A = 0
T2 = 0
For Temp = 1 To 8
T2 = T2 * 2
Gosub Pulse
T2 = T2 + A
If Adcout = 1 Then
A = 1
Else
A = 0
End If
Next Temp
Set Cs2
Waitms 100
'pogoji za vklop relejev
'
'V hex verziji je tukaj podprogram MENU, za vnos temperature T1 in T2.
'Temperaturo T1 in T2 pri kateri vklopi rele, vnesemo s pomoejo tipk 5,6,in 7.
'
Raz = T2 - T1
If T2 < T1 Then Raz = 1

If Raz >= Dif1 Then Set Tran1
If Raz <= Dif2 Then Reset Tran1

'izpisemo na LCD display prvo in drugo temperaturo, ter stanje izhodov
Locate 1 , 1
Lcd "T1:"
If T1 < 10 Then Lcd " "
Lcd T1 ; Chr(0) ; "C"
Locate 1 , 10
Lcd "Rele=>"
Locate 2 , 1
Lcd "T2:"
If T2 < 10 Then Lcd " "
Lcd T2 ; Chr(0) ; "C"

Locate 2 , 10

If Tran1 = 0 Then
Set Tran2 'če ga takole setiram ter resetiram mi LCD osvetlitev utripa kar pa nočem'
Wait 3
Reset Tran2
Lcd "Izklop"
End If

If Tran1 = 1 Then
Set Tran2 'če ga takole setiram ter resetiram mi LCD osvetlitev utripa kar pa nočem'
Wait 3
Reset Tran2
Lcd "Vklop "
End If

Wait 1

Loop





Pulse:
Set Clk
Waitus 10
Reset Clk
Return
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
6dan8
Član
Član



Pridružen-a: Tor 18 Jan 2011 10:53
Prispevkov: 1053
Aktiv.: 6.00
Kraj: Goriška

PrispevekObjavljeno: Čet Jul 26, 2012 10:34 am    Naslov sporočila:   Odgovori s citatom

Ah, torej te moti, da osvetlitev LCDja utripa. Glede na to, da sem malo počasen, bi te prosil, če mi lahko malce natančneje razložiš, kako deluje naslednji del kode v neskončni "Do-Loop" zanki:
Koda:
If Tran1 = 0 Then
Set Tran2 'če ga takole setiram ter resetiram mi LCD osvetlitev utripa kar pa nočem'
Wait 3
Reset Tran2
Lcd "Izklop"
End If

If Tran1 = 1 Then
Set Tran2 'če ga takole setiram ter resetiram mi LCD osvetlitev utripa kar pa nočem'
Wait 3
Reset Tran2
Lcd "Vklop "
End If

Wait 1

Loop

Mislim, jaz si predstavljam tako: ne glede na to, ali ima "Tran1" vrednost 0 ali 1, ti za določen čas prižge osvetlitev LCDja. Prav? Ampak ti dve pogojni odločitvi imaš v neskončni zanki (Do-Loop). Kaj se dogaja, ko se zanka odvrti drugič, tretjič, ... ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
alesing
Neznanec
Neznanec



Pridružen-a: Tor 24 Jul 2012 14:05
Prispevkov: 7
Aktiv.: 0.04

PrispevekObjavljeno: Čet Jul 26, 2012 11:02 am    Naslov sporočila:   Odgovori s citatom

Pozdravljeni!
Pravilno razmišljate, vendar jaz ne znam narditi drugače, rad bi da bi se mi osvetli LCD samo pri prehodu iz 0-1 ali iz 1-0 po domače takrat ko vklopi rele se naj osvetli rele za 2s tako da se vidi tudi po temi rezultat in seveda tudi takrat ko se mi izklopi tele naj LCD sveti 2s
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
6dan8
Član
Član



Pridružen-a: Tor 18 Jan 2011 10:53
Prispevkov: 1053
Aktiv.: 6.00
Kraj: Goriška

PrispevekObjavljeno: Čet Jul 26, 2012 11:16 am    Naslov sporočila:   Odgovori s citatom

Kot si opazil, o Bascomu nimam pojma Shhh . Jaz bi razmišljal v tej smeri: uvedel bi novo spremenljivko, dajmo ji ime "RelePreklopil". Ob preklopu releja bi jo postavil na 1. Potem bi preverjal stanje te spremenljivke. Če ima vrednost 1, prižgeš za določen čas osvetlitev LCDja in postaviš spremenljivko "RelePreklopil" na 0.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group