Stránka 2 z 3
Napsal: 07 bře 2009, 18:58
od jirka89
Tak po nějakých úpravách mě vyšlo, že mám jak v bajtu1/2 stejné číslo a to A0
Napsal: 07 bře 2009, 19:02
od Andrea
jirka89 píše:Blbý dotaz, ale to číslo musím rozbít, abych ho mohl zobrazit že? nejde nějak udělat, abych ho poslal najednou! (Celý "bajt")??? Aby mi zobrazil rovnou třeba "5D", že??
Umí to ten displej? Neumí, tak nepůjde. Ono to "rozbíjení" je děsně složitý.
Kód: Vybrat vše
mov B,A
swap A
anl A,#0Fh
add A,#30h
cjne A,#3Ah,loc_1
loc_1: jc loc_2
add A,#07h
loc_2: ----- zobraz A
mov A,B
anl A,#0Fh
add A,#30h
cjne A,#3Ah,loc_3
loc_3: jc loc_4
add A,#07h
loc_4: ----- zobraz A
Napsal: 07 bře 2009, 19:07
od Mendor
Z obsahu dvou byte které dostaneš z čidla vypočteš teplotu na jedno desetinné místo, tu následně rozdělíš na stovky, desítky, jednotky a ke každé přičteš 48 (30H). Na displej pak pošleš stovky, desítky, desetinou čárku a nakonec jednotky.
Např. 21,4°C
Napsal: 07 bře 2009, 19:12
od jirka89
Dobře při pokojové teplotě mi posílá bajt1 (LS Byte) 0A0H, a bajt2 (MS Byte) také 0A0H. Tak kolik to je potom stupňů?? Kdybys mohl mi napsat kolik to je stupňů, abych věděl, jestli ten převod co mám v programu je blbě.
Napsal: 07 bře 2009, 19:13
od Andrea
Mendor píše:Z obsahu dvou byte které dostaneš z čidla vypočteš teplotu na jedno desetinné místo, tu následně rozdělíš na stovky, desítky, jednotky a ke každé přičteš 48 (30H). Na displej pak pošleš stovky, desítky, desetinou čárku a nakonec jednotky.
Např. 21,4°C
To je sice krásná rada, ale jemu to nejspíš vůbec neměří.
Napsal: 07 bře 2009, 19:16
od jirka89
No neměří! Já nevím! Když to vyhřívám zapalovačel (ne kontaktně) jen abych ho ohřál, tak se mi ty dva bajty mění. I ta teplota. Ale jsou to čísla mimo mísu.
Napsal: 07 bře 2009, 19:35
od Andrea
jirka89 píše:No neměří! Já nevím! Když to vyhřívám zapalovačel (ne kontaktně) jen abych ho ohřál, tak se mi ty dva bajty mění. I ta teplota. Ale jsou to čísla mimo mísu.
A ta funkce na zobrazování hexa čísel ti funguje správně? Zkusil jsi jí podstrčit nějaká čísla, jestli je to zobrazí správně? Třeba 1F, FF, A5, 01, 88...
Napsal: 07 bře 2009, 19:53
od jirka89
no ot jsem nezkoušel. hned to zkusím! to mě nenapadlo!
Napsal: 07 bře 2009, 20:07
od Mendor
jirka89 píše:Dobře při pokojové teplotě mi posílá bajt1 (LS Byte) 0A0H, a bajt2 (MS Byte) také 0A0H. Tak kolik to je potom stupňů?? Kdybys mohl mi napsat kolik to je stupňů, abych věděl, jestli ten převod co mám v programu je blbě.
Udělej si jednoduchý test.
Po zapnutí napájení k DS18B20 je v registrech teploty LSB a MSB hodnota 85.0°C.
Proto v celém programu zruš funkci 44H tj. převod teploty.
Při správné komunikaci s čidlem a správném výpočtu teploty ti musí na displeji po zapnutí napájení ukazovat hodnotu teploty 85.0°C. Pokud ukazuje něco jiného máš chybu v programu nebo je špatná komunikace nebo inicializace čidla.
Napsal: 07 bře 2009, 20:22
od jirka89
Tak! Už jsem si na 100% jistý, že mám v těch dvou bajtech FF
Napsal: 07 bře 2009, 20:25
od jirka89
tak jsem vyrušil 044H, a v bajtech mám stále FF. Takže bude chyba někde v komunikaci! Nejspíš.
Napsal: 07 bře 2009, 20:27
od Andrea
jirka89 píše:Tak! Už jsem si na 100% jistý, že mám v těch dvou bajtech FF
To já vím od začátku, proto jsem ti psala ať si je zobrazíš, ale pak jsi psal že se ti to s teplotou mění, tak mění nebo nemění?
Napsal: 07 bře 2009, 20:29
od jirka89
No právě. Ale ta teplota musí vzrůst tak o 20 stupňů, aby se něco změnilo! Zkusím to ještě jednou, když ty bajty mám teda funkční.
Napsal: 07 bře 2009, 20:30
od jirka89
Jo tak se mění! Ale potom zase ty bajty spadnou na FFH
Napsal: 07 bře 2009, 20:32
od jirka89
A je ta komunikace s tím čidlem
RESET > 0ccH > 044 > prodleva (cca 0,5s) > RESET >0ccH > 0BEH> 2x cteni