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 

Programiranje v bascom avr
Pojdi na stran Prejšnja  1, 2, 3 ... 11, 12, 13 ... 36, 37, 38  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Bascom sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
LEDuser
Član
Član



Pridružen-a: Pon 31 Mar 2008 12:06
Prispevkov: 1104
Aktiv.: 5.65
Kraj: Ljubljana

PrispevekObjavljeno: Tor Dec 16, 2008 2:20 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
dkone
Član
Član



Pridružen-a: Sre 07 Mar 2007 18:53
Prispevkov: 2104
Aktiv.: 10.09
Kraj: Krško

PrispevekObjavljeno: Tor Dec 16, 2008 9:04 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5334
Aktiv.: 24.73
Kraj: Domzale

PrispevekObjavljeno: Tor Dec 16, 2008 9:11 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3351
Aktiv.: 15.04
Kraj: Dragomer

PrispevekObjavljeno: Tor Dec 16, 2008 10:49 am    Naslov sporočila:  Ta tema Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.67
Kraj: Yogyakarta

PrispevekObjavljeno: Tor Dec 16, 2008 3:36 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
TECHNIC
Član
Član



Pridružen-a: Tor 31 Okt 2006 11:18
Prispevkov: 582
Aktiv.: 2.74
Kraj: Senovo

PrispevekObjavljeno: Tor Dec 16, 2008 3:47 pm    Naslov sporočila:   Odgovori s citatom

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:
Koda:
LCD "TESTIRANJE"

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.67
Kraj: Yogyakarta

PrispevekObjavljeno: Tor Dec 16, 2008 4:09 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
TECHNIC
Član
Član



Pridružen-a: Tor 31 Okt 2006 11:18
Prispevkov: 582
Aktiv.: 2.74
Kraj: Senovo

PrispevekObjavljeno: Tor Dec 16, 2008 4:58 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
program_er
Član
Član



Pridružen-a: Sob 08 Mar 2008 13:47
Prispevkov: 2173
Aktiv.: 11.08
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Tor Dec 16, 2008 6:41 pm    Naslov sporočila:   Odgovori s citatom

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 * Cool

_________________
Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
LEDuser
Član
Član



Pridružen-a: Pon 31 Mar 2008 12:06
Prispevkov: 1104
Aktiv.: 5.65
Kraj: Ljubljana

PrispevekObjavljeno: Tor Dec 16, 2008 6:56 pm    Naslov sporočila:   Odgovori s citatom

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 Very Happy

_________________
Razsvetljujemo od leta 1920!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
TECHNIC
Član
Član



Pridružen-a: Tor 31 Okt 2006 11:18
Prispevkov: 582
Aktiv.: 2.74
Kraj: Senovo

PrispevekObjavljeno: Tor Dec 16, 2008 7:11 pm    Naslov sporočila:   Odgovori s citatom

@ 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. Confused
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
dkone
Član
Član



Pridružen-a: Sre 07 Mar 2007 18:53
Prispevkov: 2104
Aktiv.: 10.09
Kraj: Krško

PrispevekObjavljeno: Tor Dec 16, 2008 7:37 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Misko
Član
Član



Pridružen-a: Ned 16 Apr 2006 15:15
Prispevkov: 549
Aktiv.: 2.50
Kraj: MS

PrispevekObjavljeno: Sob Dec 20, 2008 4:31 pm    Naslov sporočila:   Odgovori s citatom

Spet jaz Laughing


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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5334
Aktiv.: 24.73
Kraj: Domzale

PrispevekObjavljeno: Sob Dec 20, 2008 5:22 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
dkone
Član
Član



Pridružen-a: Sre 07 Mar 2007 18:53
Prispevkov: 2104
Aktiv.: 10.09
Kraj: Krško

PrispevekObjavljeno: Sob Dec 20, 2008 8:19 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Bascom sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3 ... 11, 12, 13 ... 36, 37, 38  Naslednja
Stran 12 od 38

 
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: 69 dni


Powered by phpBB © 2001, 2005 phpBB Group