作业帮 > 综合 > 作业

关于18B20温度转换问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/24 16:27:30
关于18B20温度转换问题
首先是分辨率是12.
一、请问18B20里面两个寄存器是怎么存温度的,就是整数小数都在哪几位?
二、读出数据后,当然读出的是16进制数,这个数怎么变成正确的表示实际温度的十进制数呢?
比如我从18B20获得整数部分是1FH,他表示31D,但这个不是正确温度,怎么把他变成31*0.625=19.475,能不能给个汇编程序,并详细解释下,谢谢各位了,我初学51单片机.
你说的10进制是BCD码吧?
转换得到的应该是2个字节的值,低字节的低4位是小数部分,高4位与另一个字节的低4位合起来是8位整数(好像是有符号的补码).
取出整数部分,编程转换成10进制BCD码,小数部分我用的是查表转换,这样速度很快,下面是我曾经用过的程序片段,仅供参考:
mov a,r7 ;将温度值的小数部分查表转成2位BCD,放在a中
anl a,#0Fh
mov dptr,#tab
movc a,@a+dptr ;现在,a中就是2位BCD小数
;-------------------------------
tab:db 00h,06h,13h,19h,25h,31h,38h,44h ;两位小数转换表
db 50h,56h,63h,69h,75h,81h,88h,94h