|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
LEDuser Član
Pridružen-a: Pon 31 Mar 2008 12:06 Prispevkov: 1104 Aktiv.: 5.65 Kraj: Ljubljana
|
Objavljeno: Tor Dec 16, 2008 2:20 am Naslov sporočila: |
|
|
No priklopil sem LCD. Sedaj pa eno resno vprašanje zanima me kaj je pri tej kodi narobe da mi na LCD prikaže dvojno število npr. namesto 1023 pokaže 10231023.
Koda: |
$regfile = "m8def.dat"
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Dim W As Word
Cls
Cursor Off
W = Getadc(1)
Lcd W |
_________________ Razsvetljujemo od leta 1920! |
|
Nazaj na vrh |
|
|
dkone Član
Pridružen-a: Sre 07 Mar 2007 18:53 Prispevkov: 2105 Aktiv.: 10.09 Kraj: Krško
|
Objavljeno: Tor Dec 16, 2008 9:04 am Naslov sporočila: |
|
|
Koda: |
$regfile = "m8def.dat"
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Dim W As Word
Cls
Cursor Off
do
W = Getadc(1)
locate 1,1
Lcd W
loop
|
Dodaj še tisti locate,pa do loop zanko,da uC poveš kam naj piše vrednost,sedaj piše kar vse povsod. _________________ Denis |
|
Nazaj na vrh |
|
|
mucek Član
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5335 Aktiv.: 24.72 Kraj: Domzale
|
Objavljeno: Tor Dec 16, 2008 9:11 am Naslov sporočila: |
|
|
Poskusi z
Locate 1 , 1
Lcd W
Nasplošno moraš vedno pri programiranju narediti neko zanko, tebi program na koncu ne ve kam naprej in možno da ti dvakrat zleti čez (od tu dva zapisa).
Svoj čas smo delali to s
Konec:
Goto konec
V Bascomu pa lahko uporabiš tudi ukaz End.
LP, Grega |
|
Nazaj na vrh |
|
|
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.03 Kraj: Dragomer
|
Objavljeno: Tor Dec 16, 2008 10:49 am Naslov sporočila: Ta tema |
|
|
Ta tema je postala že prevelika, nepregledna.
predlagam, da odprete za vsak problem, ki bi ga bilo potrebno sprogramirat v avr svojo temo _________________ Prepričan sem, da je inteligentnih bitij v vesolju veliko. A ker so inteligenta, se nam nočejo prikazati. |
|
Nazaj na vrh |
|
|
red_mamba Član
Pridružen-a: Ned 20 Feb 2005 17:56 Prispevkov: 1486 Aktiv.: 6.67 Kraj: Yogyakarta
|
Objavljeno: Tor Dec 16, 2008 3:36 pm Naslov sporočila: |
|
|
LEDuser je napisal/a: |
Ker sem pred kratkim obupal nad assemblerjem sem preklopil na Bascom. Naučil sem se prižigati LED ... zataknilo pa se mi je pri ADCju. Če napišem program ki mi bere z enega ADCja v spremenljivko W (P = W / 10) in z nekaj IF stavki preverjam ali je P > 5 (10,15,20) mi prižiga izhode 0,1,2,3 se mi ob spreminjanju napetosti na ADC (0-100%) v prvi četrtini prižgejo v zaporedju vse ledice, v drugi četrtini se ugasnejo in se spet prižgejo v zaporedju...
Po moji logiki bi bilo tako:
ADC prebere stanje in ob 100% bi vrgel ven 1023. če to deliš z 10 bi moralo biti potemtakem stanje od 0-102. Če bi to razdelil na 4 enake dele (npr 25) in imam na vhodu ADC 1/4 napetosti (AVCC) bi morala LEDica zasvetiti pri takem stavku:
If P > 25 Then
Portd.0 = 1
Else
Portd.0 = 0
End If
Ne vem kaj delam narobe ampak zdi se mi da me tale Atmega8 malo |
[cenzurirano] te to da imaš ADC kot 10 bitov nastavljen bereš pa samo spodnjih 8 bitov v byte spremeljivko namesto word _________________ Bad things happen to good people all the time for no reason!
Blog |
|
Nazaj na vrh |
|
|
TECHNIC Član
Pridružen-a: Tor 31 Okt 2006 11:18 Prispevkov: 582 Aktiv.: 2.74 Kraj: Senovo
|
Objavljeno: Tor Dec 16, 2008 3:47 pm Naslov sporočila: |
|
|
Zdravo!
Po priklopu 1×16 LCD je prišlo do problema:
Koda: |
Locate 1,6
LCD "TEST" |
LCD izpiše samo TES (torej do 8 črke),
medtem ko koda:
deluje brez problema.
LCD je 1×16 iz HTE, neosvetljen, DEM16101 če se ne motim.
Je že kdo doživel takšen problem? |
|
Nazaj na vrh |
|
|
red_mamba Član
Pridružen-a: Ned 20 Feb 2005 17:56 Prispevkov: 1486 Aktiv.: 6.67 Kraj: Yogyakarta
|
Objavljeno: Tor Dec 16, 2008 4:09 pm Naslov sporočila: |
|
|
lcd se verjetno obnaša kot 2x8 znakovni, kljub temu da je fizično 1x16.
sem že imel tak primer, poglej če je tudi pri tebi tako _________________ Bad things happen to good people all the time for no reason!
Blog |
|
Nazaj na vrh |
|
|
TECHNIC Član
Pridružen-a: Tor 31 Okt 2006 11:18 Prispevkov: 582 Aktiv.: 2.74 Kraj: Senovo
|
Objavljeno: Tor Dec 16, 2008 4:58 pm Naslov sporočila: |
|
|
Tako je, LCD se obnaša kot 2×8
Koda: |
Locate 1 , 4
Lcd "TEST"
Wait 2
Locate 2 , 4
Lcd "TEST"
Wait 2 |
LCD izpiše "____TEST____TEST"
Hvala za pomoč! |
|
Nazaj na vrh |
|
|
program_er Član
Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 11.07 Kraj: Maribor (Pohorje)
|
Objavljeno: Tor Dec 16, 2008 6:41 pm Naslov sporočila: |
|
|
Ko konfiguriraš LCD, morač napisati:
Koda: |
Config LDC = 16 * 1a
|
Tako bo Bascom vedel, da imaš LCD, ki se obnaša kot 2 * 8 in potem če boš napisal:
Koda: |
Locate 1 , 6
Lcd "TESTIRANJE"
Wait 2
Cls
Locate 1 , 6
Lcd "TEST"
|
Delovalo bo vse, ker bo bascom sam spisal kodo za 16 * 1a (2 * _________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
|
LEDuser Član
Pridružen-a: Pon 31 Mar 2008 12:06 Prispevkov: 1104 Aktiv.: 5.65 Kraj: Ljubljana
|
Objavljeno: Tor Dec 16, 2008 6:56 pm Naslov sporočila: |
|
|
red_mamba je napisal/a: |
[cenzurirano] te to da imaš ADC kot 10 bitov nastavljen bereš pa samo spodnjih 8 bitov v byte spremeljivko namesto word |
Joj niti pomislil nisem na to... No to se pa zgodi če imaš tako malo izkušenj. Bom naslednjič bolj pazljiv _________________ Razsvetljujemo od leta 1920! |
|
Nazaj na vrh |
|
|
TECHNIC Član
Pridružen-a: Tor 31 Okt 2006 11:18 Prispevkov: 582 Aktiv.: 2.74 Kraj: Senovo
|
Objavljeno: Tor Dec 16, 2008 7:11 pm Naslov sporočila: |
|
|
@ program_er
To je bilo sicer nastavljeno v nastavitvah (Bascom AVR sploh nima možnosti lcd 8×2).
Tudi če v kodo dodam
Koda: |
Config Lcd = 16 * 1a |
Se problem ponovi.
LCD očitno misli, da je 8×2. |
|
Nazaj na vrh |
|
|
dkone Član
Pridružen-a: Sre 07 Mar 2007 18:53 Prispevkov: 2105 Aktiv.: 10.09 Kraj: Krško
|
Objavljeno: Tor Dec 16, 2008 7:37 pm Naslov sporočila: |
|
|
Podobno krmiliš kot 2x16LCD, le da imaš tukaj 2x8,se pravi da moraš uporabiti ukaz "lowerline" ali "locate 1,1" oz. "locate 2,1", za drugi del besede/vsebine. _________________ Denis |
|
Nazaj na vrh |
|
|
Misko Član
Pridružen-a: Ned 16 Apr 2006 15:15 Prispevkov: 549 Aktiv.: 2.50 Kraj: MS
|
Objavljeno: Sob Dec 20, 2008 4:31 pm Naslov sporočila: |
|
|
Spet jaz
Imam program napisan da se mi z pritiskom na gumb povečuje ali zmanjšuje vrednost na LCD-ju. Problem pa je ko preštejem na več kot 10 in hočem vrednost zmanjšat mi potem za števila od 1-9 napiše 90, 80 itd Enako je če grem od 100 proti 0 vedno ima eno ničlo preveč.
Koda: |
Dim A As Byte
Config Pinb.0 = Input
Config Pind.7 = Input
Cls
Cursor Off
Locate 1 , 1 : Lcd "Stetje s tipko"
A = 0
Do
If Pinb.0 = 0 Then
Waitms 20
If Pinb.0 = 0 Then
Gosub Naprej
End If
End If
If Pind.7 = 0 Then
Waitms 20
If Pind.7 = 0 Then
Gosub Nazaj
End If
End If
Naprej:
Incr A
Locate 2 , 5 : Lcd A
Return
Nazaj:
Decr A
Locate 2 , 5 : Lcd A
Return
End |
hvala[/code] |
|
Nazaj na vrh |
|
|
mucek Član
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5335 Aktiv.: 24.72 Kraj: Domzale
|
Objavljeno: Sob Dec 20, 2008 5:22 pm Naslov sporočila: |
|
|
Tista nula ti ostane še od prej (ko si imel izpisano 10), saj pišeš vedno na isto mesto.
Enostavno zadevo rešiš, da pišeš
Lcd a ; Lcd " " (par presledkov)
Tako ti presledki pobrišejo morebitni ostanek.
Druga varianta je ukaz Cls po vsaki spremembi, a to za seboj potegne utripanje zaslona.
Še tretja možnost je if stavek, ki v primeru spremembe mest poskrbi za brisanje dotičnega mesta.
Lp, Grega |
|
Nazaj na vrh |
|
|
dkone Član
Pridružen-a: Sre 07 Mar 2007 18:53 Prispevkov: 2105 Aktiv.: 10.09 Kraj: Krško
|
Objavljeno: Sob Dec 20, 2008 8:19 pm Naslov sporočila: |
|
|
mucek je napisal/a: |
Tista nula ti ostane še od prej (ko si imel izpisano 10), saj pišeš vedno na isto mesto.
Enostavno zadevo rešiš, da pišeš
Lcd a ; Lcd " " (par presledkov)
Tako ti presledki pobrišejo morebitni ostanek.
Druga varianta je ukaz Cls po vsaki spremembi, a to za seboj potegne utripanje zaslona.
Še tretja možnost je if stavek, ki v primeru spremembe mest poskrbi za brisanje dotičnega mesta.
Lp, Grega |
Sam imam tudi problem in sem ga probal po vaših odgovorih,vendar brez uspeha.
Če dam LCD spremenljivka; LCD " " , mi kompajler javla napako zaradi ukaza LCD(drug). Probal sem tudi da bi za vsako spremenljivko uporabil LOCATE x,y,vendar je isti problem.
CLS in if stavek,bi se rad izgonil,sa potem mi vse ustripa. _________________ Denis |
|
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: 73 dni
Powered by phpBB © 2001, 2005 phpBB Group
|