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


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1714 Aktiv.: 7.24 Kraj: Ig
|
Objavljeno: Pet Jun 10, 2011 7:43 pm Naslov sporočila: |
|
|
Za knjižice za ta senzor pobrskaj po netu (avrfreaks), sigurno so že kje spisane. Če pa želiš 2 ali več takih senzorjev na istem vodilu, boš pa moral prebrati njihov signature (ser. št) - to se bere programsko in potem jih klicati s pomočjo te številke.
LP G
_________________ .
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._| |
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Ned Jan 29, 2012 1:47 pm Naslov sporočila: |
|
|
tudi sam si pomagam s tem pdf-om, vendar me vseeno nekaj zanima, kako sedaj izpisati temperaturo na lcd?
Kot kaže, je vrednost temperature shranjena v spremenljivki buffer, jaz sem poiskušal z svojo knjižnico za LCD, ki je delujoča, vendar mi stvar ne deluje?
|
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Pon Jan 30, 2012 8:18 pm Naslov sporočila: |
|
|
zna mogoče kdo pomagati, mi nekako ne uspe s prikazom oz. pretvorbo znakov na zaslon
|
|
Nazaj na vrh |
|
 |
juref Član


Pridružen-a: Tor 15 Dec 2009 11:45 Prispevkov: 226 Aktiv.: 1.20 Kraj: Črnomelj
|
Objavljeno: Pon Feb 13, 2012 10:35 pm Naslov sporočila: |
|
|
davide je napisal/a: |
zna mogoče kdo pomagati, mi nekako ne uspe s prikazom oz. pretvorbo znakov na zaslon |
Prilagam knjižnico za LCD katera je zelo preprosta za uporabo. Problem je samo v tem ker morajo biti "data" pini povezani na prve štiri pine porta.
Ukaze, ter nastavitev pinov najdeš v lcd.h
Frekvenco tudi tam nastaviš na željeno ter se mi zdi da #define CPU_F 11059200UL lahko izpustiš
koda za zagon je
Koda: |
#include <avr/io.h>
#include "lcd.h"
#define CPU_F 11059200UL
int main(void)
{
LCDInit();
LCDClear();
LCDCursorOFF();
LCDWriteStringXY(2,0,":"); //napišeš besedilo katero se ne spreminja in ga
LCDWriteStringXY(5,0,":"); //ne posodablja
while(1)
{
LCDWriteIntXY(0,0,ura,2); //izpis števil (x,y,število,število znakov)
LCDWriteStringXY(0,0,"Hello World"); //izpis besedila(x,y,"besedilo")
}
}
|
Opis: |
|
 Download |
Ime datoteke: |
Superca LCD.zip |
Velikost datoteke: |
2.93 KB |
Downloadano: |
19 krat |
|
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Pet Feb 17, 2012 1:46 pm Naslov sporočila: |
|
|
Hvala za pomoč, zadevo sem seveda že rešil, malenkostno napako pri pretvorbi sem imel, sicer pa knjižnico za LCD imam napisano, tako, da s tem nimam težav, imel sem samo problem z izpisom temperature s pomočjo kode, ki je na zgornjem PDF-ju!
|
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Ned Mar 04, 2012 5:35 pm Naslov sporočila: |
|
|
Koda: |
void therm_write_bit(uint8_t bit){
//Pull line low for 1uS
THERM_LOW();
THERM_OUTPUT_MODE();
therm_delay(us(1));
//If we want to write 1, release the line (if not will keep low)
if(bit) THERM_INPUT_MODE();
//Wait for 60uS and release the line
therm_delay(us(60));
THERM_INPUT_MODE();
} |
Če pogledam zgornjo kodo, me nekaj zanima in sicer pri vpisu podatka moramo na začetku linijo sprostiti (pull line low), torej, če je pin definiran kot izhod, potem tok steče preko pull up upora na maso ali kako, če je na vodilu senzorja vrednost 0, ko pa je definiran kot vhod, pa je vsa napetost na pinu DQ??
|
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Pon Mar 05, 2012 12:51 pm Naslov sporočila: |
|
|
kaj se torej zgodi na pinu ob spremembi registra DDR, z uporabo pull up upora med napajanjem in 1 wire vodilom?
|
|
Nazaj na vrh |
|
 |
jani18 Član

Pridružen-a: Sob 18 Sep 2010 10:22 Prispevkov: 133 Aktiv.: 0.74 Kraj: Ojstri Vrh
|
Objavljeno: Pon Mar 05, 2012 6:32 pm Naslov sporočila: |
|
|
1-wire vodilo je vedno ko je nedejaven v visokem stanju, logični enici za to skrbi pull-up upor, če potem hočemo karkoli poslati na vodilo ga potegnemo proti masi,
logični ničli za določen čas in nato sprostimo pull-up upor vodilo potegne nazaj na
logično enico.
Med spremembo registra DDR se na vodilu ne zgodi nič saj pull-up upor vodilo
drži oz. potegne na logično enico.
|
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Pon Mar 05, 2012 7:27 pm Naslov sporočila: |
|
|
hvala, to razumem, mene je samo zanimalo, kaj konkretno se zgodi na pinu mikrokontrolerja, ker iz zgornje kode je razvidno (if(bit) THERM_INPUT_MODE()
da če hočemo zapisati bit 1, potem je ddr register postavljen na 1, v nasprotnem primeru na 0, torej, ko linijo sprostimo, pomeni DDR na pinu 1 in pin je definiran kot vhodni pin mikrokontrolerja...
|
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Ned Mar 11, 2012 5:46 pm Naslov sporočila: |
|
|
juref je napisal/a: |
davide je napisal/a: |
zna mogoče kdo pomagati, mi nekako ne uspe s prikazom oz. pretvorbo znakov na zaslon |
Prilagam knjižnico za LCD katera je zelo preprosta za uporabo. Problem je samo v tem ker morajo biti "data" pini povezani na prve štiri pine porta.
Ukaze, ter nastavitev pinov najdeš v lcd.h
Frekvenco tudi tam nastaviš na željeno ter se mi zdi da #define CPU_F 11059200UL lahko izpustiš
koda za zagon je
Koda: |
#include <avr/io.h>
#include "lcd.h"
#define CPU_F 11059200UL
int main(void)
{
LCDInit();
LCDClear();
LCDCursorOFF();
LCDWriteStringXY(2,0,":"); //napišeš besedilo katero se ne spreminja in ga
LCDWriteStringXY(5,0,":"); //ne posodablja
while(1)
{
LCDWriteIntXY(0,0,ura,2); //izpis števil (x,y,število,število znakov)
LCDWriteStringXY(0,0,"Hello World"); //izpis besedila(x,y,"besedilo")
}
}
|
|
Vidim, da uporabljaš enako knjižnjico, mogoče veš, kako izpisati znak za stopinje??....167 je vrednost v ascii tabeli ampak mi ne uspe?
|
|
Nazaj na vrh |
|
 |
Krampus Član



Pridružen-a: Pon 08 Sep 2008 13:07 Prispevkov: 1853 Aktiv.: 9.08
|
Objavljeno: Ned Mar 11, 2012 9:02 pm Naslov sporočila: |
|
|
Lcd_Chr_cp(178) 'Znak za stopinje 223 ali 178 odvisno od LCD
_________________ Nisem ravno najbolj pameten na svetu, tu in tam pa imam kakšno idejo. |
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Ned Mar 11, 2012 9:11 pm Naslov sporočila: |
|
|
že že, vendar z uporabo moje knjižnice za lcd mi ni izpisalo znaka....bom že rešil!
|
|
Nazaj na vrh |
|
 |
juref Član


Pridružen-a: Tor 15 Dec 2009 11:45 Prispevkov: 226 Aktiv.: 1.20 Kraj: Črnomelj
|
Objavljeno: Ned Mar 11, 2012 10:56 pm Naslov sporočila: |
|
|
davide je napisal/a: |
juref je napisal/a: |
davide je napisal/a: |
zna mogoče kdo pomagati, mi nekako ne uspe s prikazom oz. pretvorbo znakov na zaslon |
Prilagam knjižnico za LCD katera je zelo preprosta za uporabo. Problem je samo v tem ker morajo biti "data" pini povezani na prve štiri pine porta.
Ukaze, ter nastavitev pinov najdeš v lcd.h
Frekvenco tudi tam nastaviš na željeno ter se mi zdi da #define CPU_F 11059200UL lahko izpustiš
koda za zagon je
Koda: |
#include <avr/io.h>
#include "lcd.h"
#define CPU_F 11059200UL
int main(void)
{
LCDInit();
LCDClear();
LCDCursorOFF();
LCDWriteStringXY(2,0,":"); //napišeš besedilo katero se ne spreminja in ga
LCDWriteStringXY(5,0,":"); //ne posodablja
while(1)
{
LCDWriteIntXY(0,0,ura,2); //izpis števil (x,y,število,število znakov)
LCDWriteStringXY(0,0,"Hello World"); //izpis besedila(x,y,"besedilo")
}
}
|
|
Vidim, da uporabljaš enako knjižnjico, mogoče veš, kako izpisati znak za stopinje??....167 je vrednost v ascii tabeli ampak mi ne uspe? |
z tem sem se nekaj igral vendar mi ni ratalo hehe bom pa probal pa povem
|
|
Nazaj na vrh |
|
 |
davide Član


Pridružen-a: Pet 10 Sep 2010 16:45 Prispevkov: 149 Aktiv.: 0.83 Kraj: Savinjska
|
Objavljeno: Sob Mar 17, 2012 6:50 pm Naslov sporočila: |
|
|
jani18 je napisal/a: |
1-wire vodilo je vedno ko je nedejaven v visokem stanju, logični enici za to skrbi pull-up upor, če potem hočemo karkoli poslati na vodilo ga potegnemo proti masi,
logični ničli za določen čas in nato sprostimo pull-up upor vodilo potegne nazaj na
logično enico.
Med spremembo registra DDR se na vodilu ne zgodi nič saj pull-up upor vodilo
drži oz. potegne na logično enico. |
no, to že drži, vendar v zgornji kodi je razvdno, da je najprej port nastavljen kot izhod (therm output mode), če pa želimo poslati bit 1 pa sprostimo linijo, tako, da sprostimo linijijo, torej, če je port nastavljen, kot izhod, je na liniji enica, drugače pa ničla.
|
|
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
|