基于 51 单片机及 DS18B20 温度传感器的数字温度计程序(详细注释)电路实物图如下图所示:C 语言程序如下所示:/********************************************************************zicreate----------------------------- Copyright (C) --------------------------* 程序名; 基于 DS18B20 的测温系统* 功 能: 实时测量温度,超过上下限报警,报警温度可手动调整。K1 是用来* 进入上下限调节模式的,当按一下 K1 进入上限调节模式,再按一下进入下限* 调节模式。在正常模式下,按一下 K2 进入查看上限温度模式,显示 1s 左右自动* 退出;按一下 K3 进入查看下限温度模式,显示 1s 左右自动退出;按一下 K4 消除* 按键音,再按一下启动按键音。在调节上下限温度模式下,K2 是实现加 1 功能,* K1 是实现减 1 功能,K3 是用来设定上下限温度正负的。* 编程者:Jason* 编程时间:2009/10/2*********************************************************************/#include<> //将 头文件包含到主程序#include<> //将 头文件包含到主程序(调用其中的_nop_()空操作函数延时)#define uint unsigned int //变量类型宏定义,用 uint 表示无符号整形(16 位)#define uchar unsigned char //变量类型宏定义,用 uchar 表示无符号字符型(8 位)uchar max=0x00,min=0x00; //max 是上限报警温度,min 是下限报警温度bit s=0; //s 是调整上下限温度时温度闪烁的标志位,s=0 不显示 200ms,s=1 显示 1s 左右bit s1=0; //s1 标志位用于上下限查看时的显示void display1(uint z); //声明 display1()函数#include"" //将 头文件包含到主程序#include"" //将 头文件包含到主程序#include"" //将 头文件包含到主程序/***********************主函数************************/void main(){beer=1; //关闭蜂鸣器led=1; //关闭 LED 灯timer1_init(0); //初始化定时器 1(未启动定时器 1)get_temperature(1); //首次启动 DS18B20 获取温度(DS18B20 上点后自动将 EEPROM 中的上下限温度复制到 TH 和 TL 寄存器)while(1) //主循环{keyscan(); //按键扫面函数get_temperature(0); //获取温度函数keyscan(); //按键扫面函数display(temp,temp_d*);//显示函数alarm(); //报警函数keyscan(); //按键扫面函数}}/********************************************************************* 程序名; __ds18b20_h__* 功 能: DS18B20 的 c51 编程头文件* 编程者:ZPZ* 编程时间:2009/10/2* 说 明:用到的全局变量是:无符号字符型变量 temp(测得的温度整数部分),temp_d* (测得的温度小数部分),标志位 f(测量温度的标志位‘0’表示“正温度”‘1’表* 示“负温度”),标志位 f_max(上限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位 f_min(下限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位 w(报警标志位‘1’启动报警‘0’关闭报警)。*********************************************************************/#ifndef __ds18b20_h__ //定义头文件#define __ds18b20_h__#define uint unsigned int //变量类型宏定义,用 uint 表示无符号整形(16 位)#define uchar u
基于51单片机及DS18B20温度传感器的数字温度计程序及详细注释 来自淘豆网www.taodocs.com转载请标明出处.