基于DS18B20的51单片机控制恒温箱Word文档格式.docx
- 文档编号:19216442
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:10
- 大小:293.63KB
基于DS18B20的51单片机控制恒温箱Word文档格式.docx
《基于DS18B20的51单片机控制恒温箱Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的51单片机控制恒温箱Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
charkey_data=25;
chartemp_now;
//延时函数
voiddelay(unsignedinti)
{
while(i--);
}
//初始化函数
Init_DS18B20(void)
unsignedcharx=0;
DQ=1;
//DQ复位
delay(8);
//稍做延时
DQ=0;
//单片机将DQ拉低
delay(80);
//精确延时大于480us
//拉高总线
delay(14);
x=DQ;
//稍做延时后如果x=0则初始化成功x=1则初始化失败delay(20);
//读一个字节
ReadOneChar(void)
unsignedchari=0;
unsignedchardat=0;
for(i=8;
i>
0;
i--)
//给脉冲信号
dat>
>
=1;
if(DQ)
dat|=0x80;
delay(4);
return(dat);
//写一个字节
WriteOneChar(unsignedchardat)
i>
i--)
DQ=dat&
0x01;
delay(5);
//读取温度
ReadTemperature(void)
unsignedchara=0;
unsignedcharb=0;
unsignedintt=0;
floattt=0.0;
Init_DS18B20();
WriteOneChar(0xCC);
//跳过读序号列号的操作
WriteOneChar(0x44);
//启动温度转换
//跳过读序号列号的操作
WriteOneChar(0xBE);
//读取温度寄存器等(共可读9个寄存器)前两个就是温度a=ReadOneChar();
b=ReadOneChar();
t=b;
t<
<
=8;
t=t|a;
tt=t*0.0625;
//t=tt*10+0.5;
//放大10倍输出并四舍五入---此行没用
return(t);
voidint_it0(void)interrupt0
delay(1500);
light_ctrl=0;
key_data++;
if(key_data>
125)
key_data=125;
led_key=1;
inrup=0xff;
voidint_it1(void)interrupt2
key_data--;
if(key_data<
-50)
key_data=-50;
voiddisplay(void)
unsignedcharn;
unsignedcharm;
m=0x10;
for(n=0;
n<
4;
n++)
P3=P3&
0x0f;
P3=P3|m;
delay
(1);
P2=table[dis[n]];
m=m<
1;
delay(500);
voidmain()
unsignedinta;
inttemp0;
EX0=1;
//允许外部中断0中断IT0=1;
EX1=1;
IT1=1;
EA=1;
//开总中断
led_key=0;
add_le=0;
data_le=0;
while
(1)
temp0=ReadTemperature();
//读温度temp_now=temp0*0.0625;
if(temp_now<
=key_data)
light_ctrl=1;
else
if(temp_now>
=0)
dis[0]=14;
dis[1]=temp_now/100%10;
dis[2]=(temp_now/10)%10;
dis[3]=temp_now%10;
}
//dis[0]=15;
dis[1]=15;
dis[3]=(0-temp_now)%10;
dis[2]=(0-temp_now)/10%10;
for(a=0;
a<
10;
a++)
display();
if(led_key==1)
a=0;
for(;
200;
)
inrup=0x00;
if(key_data>
=0)
dis[1]=key_data/100%10;
dis[2]=(key_data/10)%10;
dis[3]=key_data%10;
dis[3]=(0-key_data)%10;
dis[2]=(0-key_data)/10%10;
(inrup!
=0xff)&
&
(a<
200);
}总体描述:
数码管显示当前温度和设定温度
当按键按下时,触犯中断。
进行设定温度的加减,同时断开继电器的触发。
此时数码管上显示的温度为设定温度。
发光二极管D4亮,指示当前显示的为设定温度。
一段时间不按键时,程序自动跳转回去(否则一直显示当前温度),显示当前温度,指示发光二极管D4灭,并开始控制。
由于51驱动能力有限,故用两个三极管驱动继电器。
具体描述:
温度传感器DS18B20仿真方式:
打开:
显示当前温度。
如下DS18B20显示温度为24度
按键设置要稳定的温度
当按键按下后,指示灯亮,表示现在显示的是设置温度,假设将温度设置为30度
因为30度大于当前温度所以在延时一定时间后继电器打开
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DS18B20 51 单片机 控制 恒温箱