Proč to ukazuje "7<" ????
Moderátor: Moderátoři
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
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ěří.
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...
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.