一.硬件方案
根据恒温箱控制器的功能要求,并结合对51系列单片机软件编程自由度大,可用编程实现各种控制算法和逻辑控制。所以采用AT89C52作为电路系统的控制核心。按键将设置好的温度值传给单片机,通过温度显示模块显示出来。初始温度设置好后,单片机开启输出控制模块,使电热器开始加热,同时将从数字温度传感器DS18B20测量到的温度值实时的显示出来,当加热到设定温度值时,单片机控制声光报警模块,发出声光报警,同时关闭加热器。当自然冷却到设定温度50摄氏度以下时,单片机再次启动加热器,如此循环反复,以达到恒温控制的目的。
主要由51单片机+最小系统+数码管显示模块+数码管驱动模块+温度采集模块+蜂鸣器模块+LED指示灯模块+继电器驱动模块+按键模块;
二.设计功能
(1)采用DS18B20温度传感器测温,测量范围0到99.9摄氏度,精度为0.1摄氏度。
(2)按键可以设置报警值,当温度超过设定的上或下限时,相应的指示灯亮,同时相应的继电器吸合,继电器可以驱动负载(风扇、制冷片、加热管等)。
(3)按键为设置按键、加键和减键。可设置上下限温度控制范围。
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)Protues仿真图如下:
四.软件设计
主程序源码
/*****主函数*****/
void main(void)
{uint z;InitTimer(); //初始化定时器EA=1; //全局中断开关TR0=1;ET0=1; //开启定时器0IT0=1; IT1=1;check_wendu();
// check_wendu();for(z=0;z<300;z++){Disp_init(); }while(1){// P3=0xff;if(SET==0){Delay(2000);do{}while(SET==0);set_st++;x=0;shanshuo_st=1;if(set_st>2)set_st=0;}if(set_st==0){EX0=0; //关闭外部中断0EX1=0; //关闭外部中断1check_wendu();Disp_Temperature();Alarm(); //报警检测}else if(set_st==1){BEEP=1; //关闭蜂鸣器ALAM=1;ALAM1=1;EX0=1; //开启外部中断0EX1=1; //开启外部中断1if(x>=10){shanshuo_st=~shanshuo_st;x=0;}if(shanshuo_st) {Disp_alarm(shangxian);}}else if(set_st==2){BEEP=1; //关闭蜂鸣器ALAM=1;ALAM1=1;EX0=1; //开启外部中断0EX1=1; //开启外部中断1if(x>=10){shanshuo_st=~shanshuo_st;x=0;}if(shanshuo_st) {Disp_alarm(xiaxian);}}}
}/*****定时器0中断服务程序*****/
void timer0(void) interrupt 1
{TH0=0x3c;TL0=0xb0;x++;
}
/*****外部中断0服务程序*****/
void int0(void) interrupt 0
{EX0=0; //关外部中断0if(DEC==0&&set_st==1){do{Disp_alarm(shangxian);}while(DEC==0);shangxian--;if(shangxian<xiaxian)shangxian=xiaxian;}else if(DEC==0&&set_st==2){do{Disp_alarm(xiaxian);}while(DEC==0);xiaxian--;if(xiaxian<0)xiaxian=0;}
}
资料链接:https://pan.baidu.com/s/1QOlFVxuYY0Bg1AeAyDpR7w?pwd=ki22