新闻热点事件,关键词排名优化易下拉教程,网站上传教程,违法人员都是怎么建设网站的资料下载地址#xff1a;单片机DS18B20温度控制程序仿真与原理图PCB文件 可设上下限
目录
1、项目介绍
2、实物图
3、电路原理图
4、仿真原理图
5、部分代码
1、项目介绍
基于51单片机温度控制#xff0c;使用18b20来做温度传感器#xff0c;四位共阳数码管显…资料下载地址单片机DS18B20温度控制程序仿真与原理图PCB文件 可设上下限
目录
1、项目介绍
2、实物图
3、电路原理图
4、仿真原理图
5、部分代码
1、项目介绍
基于51单片机温度控制使用18b20来做温度传感器四位共阳数码管显示。功能说明书系统启动后默认温度下限28℃、上限30℃。当温度低于设定下限温度时继电器开启、加热指示灯亮起当温度达到设定上限温度时蜂鸣器响起、保温指示灯亮起当温度高于设定下限温度低于上限温度时蜂鸣器关闭保温指示灯继续亮起温度低于下限温度时切换继电器开启加热指示灯亮起。假设设置烧水温度下限设置在90℃、上限设置100℃就行 2、实物图 3、电路原理图 4、仿真原理图 5、部分代码 void scan()
{int j;for(j0;j4;j){switch(j){case 0:dmtable_dm[display[0]];;w00; //打开数码管显示小数数字的数码管位选端delay(50);w01; //关闭数码管显示小数数字的数码管位选端case 1:dmtable_dm1[display[1]];w10; //打开数码管显示个位数字的数码管位选端delay(50);w11; //关闭数码管显示个位数字的数码管位选端case 2:dmtable_dm[display[2]];w20; //打开数码管显示十位数字的数码管位选端delay(50);w21; //关闭数码管显示十位数字的数码管位选端case 3:dmtable_dm[display[3]];w30; //打开数码管显示百位数字的数码管位选端delay(50);w31; //关闭数码管显示百位数字的数码管位选端}}
}
/****温度传感器采用的是DS18b20,此传感器采用的
是“单总线”来传输数据。****/
/**************DS18B20初始化**************/
ow_reset(void) //初始化
{char presence1;while(presence){while(presence){DQ1;_nop_();_nop_(); //将数据线拉高并延时DQ0; //将DQP1.0引脚拉低。请注意这里的DQ不是变量而是单片机的引脚 delay(50); //延时DQ1; //将DS拉高delay(6);presenceDQ;}delay(45);presence~DQ;}DQ1; return presence;
}
/****************写命令函数*****************/
void write_byte(uchar val)
{uchar i;for(i8;i0;i--){DQ1;_nop_();_nop_(); //将数据线拉高并延时DQ0;_nop_();_nop_();_nop_();_nop_(); //将数据线拉低并延时DQval0x01;delay(6);valval1; }DQ1;delay(1);
}
/****************读一个字节函数*******************/
uchar read_byte(void)
{uchar i;uchar value0;for(i8;i0;i--) //采用for 循环读取原始温度数据{DQ1;_nop_();_nop_();value1;DQ0;_nop_();_nop_();_nop_();_nop_();DQ1;_nop_();_nop_();_nop_();_nop_();if(DQ)value|0x80;delay(6);}DQ1; return value;
}
/***************读取温度函数***************/
read_temp() //读取18b20传感器函数
{ow_reset();delay(200);write_byte(0xcc);write_byte(0x44);ow_reset();delay(1);write_byte(0xcc);write_byte(0xbe);temp_data[0]read_byte();temp_data[1]read_byte();temptemp_data[1];temp8;temptemp|temp_data[0];return temp;
}