 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
alesing Neznanec

Pridružen-a: Tor 24 Jul 2012 14:05 Prispevkov: 7 Aktiv.: 0.04
|
Objavljeno: Tor Jul 24, 2012 2:13 pm Naslov sporočila: Prosim za pomoč kako izvesti prižig LCD Bascom |
|
|
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(' ')
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 |
|
 |
rudiP Član

Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1234 Aktiv.: 5.67 Kraj: KOPER
|
Objavljeno: Tor Jul 24, 2012 8:32 pm Naslov sporočila: |
|
|
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 |
|
 |
6dan8 Član

Pridružen-a: Tor 18 Jan 2011 10:53 Prispevkov: 1053 Aktiv.: 6.00 Kraj: Goriška
|
Objavljeno: Sre Jul 25, 2012 10:45 am Naslov sporočila: Re: Prosim za pomoč kako izvesti prižig LCD Bascom |
|
|
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 |
|
 |
protoncek Član

Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 42.79 Kraj: Mengeš
|
Objavljeno: Sre Jul 25, 2012 11:55 am Naslov sporočila: |
|
|
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 |
|
 |
alesing Neznanec

Pridružen-a: Tor 24 Jul 2012 14:05 Prispevkov: 7 Aktiv.: 0.04
|
Objavljeno: Sre Jul 25, 2012 2:17 pm Naslov sporočila: |
|
|
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 |
|
 |
alesing Neznanec

Pridružen-a: Tor 24 Jul 2012 14:05 Prispevkov: 7 Aktiv.: 0.04
|
Objavljeno: Sre Jul 25, 2012 2:33 pm Naslov sporočila: |
|
|
$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 |
|
 |
6dan8 Član

Pridružen-a: Tor 18 Jan 2011 10:53 Prispevkov: 1053 Aktiv.: 6.00 Kraj: Goriška
|
Objavljeno: Čet Jul 26, 2012 10:34 am Naslov sporočila: |
|
|
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 |
|
 |
alesing Neznanec

Pridružen-a: Tor 24 Jul 2012 14:05 Prispevkov: 7 Aktiv.: 0.04
|
Objavljeno: Čet Jul 26, 2012 11:02 am Naslov sporočila: |
|
|
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 |
|
 |
6dan8 Član

Pridružen-a: Tor 18 Jan 2011 10:53 Prispevkov: 1053 Aktiv.: 6.00 Kraj: Goriška
|
Objavljeno: Čet Jul 26, 2012 11:16 am Naslov sporočila: |
|
|
Kot si opazil, o Bascomu nimam pojma . 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 |
|
 |
|
|
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
|