一款高精度测温电路设计程序.txt

来自「一款高精度测温电路设计子程序」· 文本 代码 · 共 108 行

TXT
108
字号
18B20的复位时序及子程序:
init_1820:
	clr dq1820
	mov r7,#40				
	acall Delay15us	;(1)复位:低电平至少480 us,用15*40=600us可靠

	setb dq1820		;(2)释放,为了在15-60 us后接收存在脉冲

	mov r7,#1
	acall Delay15us;20us

	mov r2,#90       ;(3);最多等待(1+2)*90=270us
wait:
	mov c,dq1820
	jnc wait1
	djnz r2,wait      ;(4)在15-60 us后回发芯片一个存在脉冲,为了可靠,我们采用等到回发脉冲后在做下一步工作,存在脉冲是一个60-240us的低电平信号
wait1:
	mov DS18b20Status,c

	mov r7,#40
	acall Delay15us;15*40=600 us ;(5)得到存在脉冲并且稳定至少480 us,用600 us

	setb dq1820
	ret

5、数据处理子程序
TempToLedBuf:
	mov a,tempH
	jb acc.7,negtiv			;(1)tempH中的最高位若是1,说明是负数,为0,是正数
;----------------------------------------------
;正数的处理过程
;------------------------------------------------
	mov templ4,templ				;(2)templ中的低4位是小数部分
	mov a,templ
	swap a
	anl a,#0fh
	mov templ,a
	mov a,temph
	swap a
	anl a,#0f0h
	orl a,templ ;(3)取temph中的低4位和templ中的高4位合一起,是温度的整数部分
	mov b,#10
	div ab	                   ;(4)16进制的整数除10即变为10进制,用于显示
	mov Ledbuf1,b			   ;(5)显示个位
	mov b,#10
	div ab
	mov Ledbuf2,b			   ;(6)显示十位
	mov Ledbuf3,a			   ;(7)显示百位
;-------------------------------------------------------------------------
;正数小数部分的处理过程
;-------------------------------------------------------------------------
	mov a,templ4					
	anl a,#0fh                ;(8)屏蔽高4位
	mov b,#10
	mul ab
	mov b,#16
	div ab					;(9)16进制的小数部分除16,也就是乘以0.0625便是用于显示的温度值
	mov templ4,a
	jnb  b.3,dy5				;(10)4舍5入吗?
	inc templ4				;(11)5入
dy5:
	mov Ledbuf0,templ4

	ret
;------------------------------------------
;负数的处理过程
;-----------------------------------------
negtiv:
	mov a,temph
	cpl a
	mov temph,a
	mov a,templ
	cpl a
	add a,#1				;(1)取补加1,得到小数点部分的真值
	mov templ,a
	mov a,temph
	addc a,#0
	mov templ4,templ
	mov a,templ			;(2)以下的处理同正数的处理
	swap a
	anl a,#0fh
	mov templ,a
	mov a,temph
	swap a
	anl a,#0f0h
	orl a,templ
	mov b,#10
	div ab
	mov Ledbuf1,b
	mov b,#10
	div ab
	mov Ledbuf2,b
	mov Ledbuf3,#10     ;(3)显示负号 — 

	mov a,templ4
	anl a,#0fh
	mov b,#10
	mul ab
	mov b,#16
	div ab
	mov templ4,a
	jnb b.3,dy5_		     ; (4)4舍5入
	inc templ4
dy5_:
	mov Ledbuf0,templ4

	ret

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?