摘要: 论述了基于数字温度传感器的单片机温度测控系统。把PC机中实现减法运算的方法运用到MCU的汇编语言程序设计中,从而完成了AD7416的温度采样汇编语言程序设计。文章给出了温度测控系统简化电原理图以及符合MCS—51汇编语言特点的温度采样子程序及其流程框图。
关键词: 数字温度传感器;AD7416;单片机
1 程序设计思想
在应用数字温度传感器的单片机(简称MCU)温度测控系统中,数字温度传感器把被测温度转换为带符号位的二进制数据,MCU从传感器读入这些表示温度高低的二进制数据时,必须先经过数字滤波消除干扰的影响,而读入这些二进制数据后一般要按照预定的算法完成一些运算,最后得到控制信号从MCU的I/O囗输出。常用的半导体数字温度传感器有AD7416、DS18B20等,它们能把温度(-55℃~+125℃)转换为补码形式的二进制数。如图1所示,这是一个温度测控系统的部分电路原理图,图中AD7416是美国AD公司生产的半导体数字温度传感器,它具有I2C串行总线接囗。按照系统设计要求,MCU需要通过AD7416采样温度256次,每一次温度采样后求温度值的累加和,16bit的累加和存放在MCU的内存单元27H、28H中,当温度采样到256次时,求温度的算术平均值并将其转换为BCD码保存到MCU的内存单元4CH、4DH中。
从计算机原理可知,引入补码后,在PC机中减法是通过加法来实现的。可以证明y-x=y+[-x]补 ,在完成等式右边的加法运算时应舍弃可能产生的进位。根据这个道理,本系统温度采样后得到的8bit温度值(补码形式,已存放在累加器A中)累加到27H、28H单元的方法应该是:
⑴ 若A为正数,则完成下列运算
[(27H)(28H)]+A→[(27H)(28H)]
⑵ 若A为负数(已用补码表示),则应把8bit的负数转换为16bit的补码,然后将16bit的补码累加到27H、28H单元中。将8bit的负数转换为16bit的补码方法是,在8bit的负数前面添加0FFH作为高8位从而扩展成为16bit的补码。
2 温度采样子程序流程框图
温度采样子程序流程框图如图2所示,该子程序流程框图是结合MCS—51汇编语言的特点而绘制出来的,根据该流程框图,不难写出相应的MCS—51汇编语言温度采样子程序。
入囗参数:无
出囗参数:27H、28H是温度值累加和;4BH单元存放温度平均值的“+、-”符号的ASCII码;4CH、4DH单元存放温度平均值的十位、个位(BCD码)。
占用资源:累加器A;寄存器B;MCU的内存单元25H、26H、27H、28H、4CH、4DH。
3 温度采样子程序清单
SAMPLE: PUSH B
PUSH PSW
LCALL SAMPLEBY
MOV 25H,#0
JNB ACC.7,LOOP1
DEC 25H
LOOP1: ADD A,28H
MOV 28H,A
MOV A,27H
ADDC A,25H
MOV 27H,A
DJNZ 26H,LOOP5
MOV 26H,#8
LOOP2: MOV A,27H
RRC A
MOV 27H,A
MOV A,28H
RRC A
MOV 28H,A
DJNZ 26H,LOOP2
MOV 26H,#0
MOV A,28H
MOV 27H,#0
MOV 28H,#0
MOV B,#0AH
JB ACC.7,LOOP3
MOV 4BH,#02BH
SJMP LOOP4
LOOP3: CPL A
INC A
MOV 4BH,#02DH
LOOP4: DIV AB
MOV 4CH,A
MOV 4DH,B
LOOP5: POP PSW
POP B
RET
本文关键字:程序设计 接口电路,单元电路 - 接口电路