基于51单片机及DS18B20温度传感器的数字温度计设计(包含实物程序,proteus仿真,元件清单,原理图以及设计说明)
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- /********************************************************************
- * 程序名; 基于DS18B20的测温系统
- * 功 能: 实时测量温度,超过上下限报警,报警温度可手动调整。K1是用来
- * 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限
- * 调节模式。在正常模式下,按一下K2进入查看上限温度模式,显示1s左右自动
- * 退出;按一下K3进入查看下限温度模式,显示1s左右自动退出;按一下K4消除
- * 按键音,再按一下启动按键音。在调节上下限温度模式下,K2是实现加1功能,
- * K1是实现减1功能,K3是用来设定上下限温度正负的。
- * 编程时间:
- *********************************************************************/
- #include<AT89X52.h> //将AT89X52.h头文件包含到主程序
- #include<intrins.h> //将intrins.h头文件包含到主程序(调用其中的_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()函数(display.h头文件中的函数,ds18b20.h要用应先声明)
- #include"ds18b20.h" //将ds18b20.h头文件包含到主程序
- #include"keyscan.h" //将keyscan.h头文件包含到主程序
- #include"display.h" //将display.h头文件包含到主程序
- /***********************主函数************************/
- 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*0.625);//显示函数
- alarm(); //报警函数
- keyscan(); //按键扫面函数
- }
- }
复制代码
所有资料51hei提供下载:
基于51单片机及DS18B20温度传感器的数字温度计设计.rar
(704.05 KB, 下载次数: 908)
|