1、个人收集整理资料, 仅供交流学习, 勿作商业用途 1 / 15 基于数字温度传感器的数字温度计 1. 设计目的与要求 以AT89C51单片机为核心,利用数字温度传感器DS18B20制作一 个LED显示的数字温度计: (1 利用数字温度传感器DS18B20测量温度信号。 (2 以P3.5口串口传送数据。 (3 温度测量范围为099,精确到1。 (4 2位共阳极LED数码管上显示相应的温度值。 2. 工作原理 温度传感器DS18B20美国Dallas公司生产的单线数字温度传感器 ,可以把温度模拟信号直接转换成串行数字信号供微机处理,是模/ 数转换器件,而且读DS18B20信息或写信息仅需单线接口,
2、使用非常 方便,新型的单线数字温度传感器体积小,精度高,使用更灵活。D S18B20有三个引脚,GND接地;DQ为数字信号输入输出端;Udd为外 接电源输入端。DS18B20内结构主要由4部分组成:64位光刻ROM、温 度传感器、非挥发的温度报警触发器TH、TL和配置寄存器。 3. 参考电路 RE00: MOV R2,#8 RE01: CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ 个人收集整理资料, 仅供交流学习, 勿作商业用途 10 / 15 MOV R3,#23 DJNZ R3,$
3、 RRC A DJNZ R2,RE01 MOV R1,A DEC R1 DJNZ R4,RE00 RET 。* 。将从DS18B20中读出的温度数据进行转换 。* TEMPER_COV: MOV A,#0F0H ANL A,TEMPER_L 。 舍去温度低位中小数点后的四位温度数值 SWAP A MOV TEMPER_NUM,A 。得到低四位 MOV A,TEMPER_L JNB ACC.3,TEMPER_COV1 。 四舍五入去温度值 INC TEMPER_NUM TEMPER_COV1: MOV A,TEMPER_H ANL A,#07H 个人收集整理资料, 仅供交流学习, 勿作商业用途
4、11 / 15 SWAP A ORL A,TEMPER_NUM 。得到高四位,再与低四位相或得到值 MOV TEMPER_NUM,A 。 保存变换后的温度数据 LCALL BIN_BCD RET 。* 。将16进制的温度数据转换成压缩BCD码 。* BIN_BCD: MOV A,TEMPER_NUM MOV B,#10 DIV AB MOV TEMPER_SHI,A MOV TEMPER_GE,B RET 。* 。DS18B20初始化程序 。* INIT_1820: SETB DQ NOP CLR DQ 个人收集整理资料, 仅供交流学习, 勿作商业用途 12 / 15 MOV R0,#250
5、TSR1: DJNZ R0,TSR1 。 延时520us SETB DQ MOV R0,#25H 。96US-25H TSR2: DJNZ R0,TSR2 JNB DQ,TSR3。如D0为低则复位成功,DS18B20存在 LJMP TSR4 。 延时 TSR3: SETB FLAG1 。 置标志位,表示DS1820存在 LJMP TSR5 TSR4: CLR FLAG1 。 清标志位,表示DS1820不存在 LJMP TSR7 TSR5: MOV R0,#06BH 。200US TSR6: DJNZ R0,TSR6 。 延时 TSR7: SETB DQ 。拉高总线 RET 个人收集整理资料,
6、仅供交流学习, 勿作商业用途 13 / 15 。* 。数码显示程序 。* LEDDISP: MOV DPTR,#TAB MOV A,TEMPER_GE MOVC A,A+DPTR MOV P1,A SETB P2.1 ACALL YSH2S CLR P2.1 MOV A,TEMPER_SHI MOVC A,A+DPTR MOV P1,A SETB P2.0 ACALL YSH2S CLR P2.0 RET TAB:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H 。* 。延时子程序 。* 个人收集整理资料, 仅供交流学习, 勿作商业用途 14 / 15 YSH2S: MOV R3,#01H LOOP1:MOV R4,#028H LOOP2:MOV R5,#05AH XHD3:DJNZ R5,XHD3 DJNZ R4,LOOP2 DJNZ R3,LOOP1 RET D500us: MOV R6,#250。延时500us DJNZ R6,$ RET DELAY1:MOV R7,#20H DJNZ R7,$ RET END 个人收集整理资料, 仅供交流学习, 勿作商业用途 15 / 15