基于c51的微波炉控制系统

news/2024/10/23 3:12:44/

   

本次完成了一个由c51主控的 简易的微波炉控制系统。

本次要求大致为:

        1.可以设置低温20°,中温30°和高温50°。

        2.可设置最长十分钟定时。

        3.用DS18B20感知温度,当温度达到设置温度值时,并持续设定时间长度时,蜂鸣器提示,LED灯闪烁,同时时间归零。

如图:

数码管前俩位,是DS18B20实时监测的温度(28℃),中间俩位是预定的温度(高温挡50℃),后俩位是定时的时间(5min)。

其中使用DS18B20最初始的代码,就不多说了。并没有太多改动,只是讲DS18B20输出的温度设了一个temp1输出到函数中。

void datapros(int temp) 	 
{float tp;  if(temp< 0)				//当温度值为负数{
//		DisplayData[0] = 0x40; 	  //   -//因为读取的温度是实际温度的补码,所以减1,再取反求出原码temp=temp-1;temp=~temp;tp=temp;temp=tp*0.0625*100+0.5;	//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就//算加上0.5,还是在小数点后面。}else{			
//		DisplayData[0] = 0x00;tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量//如果温度是正的那么,那么正数的原码就是补码它本身temp=tp*0.0625*100+0.5;	//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就//算加上0.5,还是在小数点后面。}temp1=temp;DisplayData[1] = smgduan[temp / 10000];DisplayData[2] = smgduan[temp % 10000 / 1000];DisplayData[3] = smgduan[temp % 1000 / 100] | 0x80;DisplayData[4] = smgduan[temp % 100 / 10];DisplayData[5] = smgduan[temp % 10];
}

 下面是数码管显示的系统/

void display()    //扫描显示动态数码管
{LSA=0; LSB=0; LSC=0; P0=DisplayData[2];delay(70); P0=0x00;  LSA=1; LSB=0; LSC=0; P0=DisplayData[3];delay(70); P0=0x00; 
//	 LSA=0; LSB=1; LSC=0; P0=smgduan[];delay(5); P0=0x00; LSA=1; LSB=1; LSC=0; P0=smgduan[ydz];delay(70); P0=0x00; LSA=0; LSB=0; LSC=1; P0=smgduan[0];delay(70); P0=0x00; 
//    LSA=1; LSB=0; LSC=1; P0=smgduan[10];delay(5); P0=0x00; LSA=0; LSB=1; LSC=1; P0=smgduan[F/10];delay(70); P0=0x00; LSA=1; LSB=1; LSC=1; P0=smgduan[F%10];delay(70); P0=0x00; 
}

然后就是对温度选择的控制,我的想法是15-25℃为低温挡 、25-45℃为中温挡 、45-55℃为高温挡 。有很多不足,但仅对于DS18B20而言,没有加热的装置,所以范围是最简的选择。附上其中中档的定时及到点后的提示与报警。

	if(25<temp1<45 && ydz==3)   //中挡 25-45℃ 预定值为30{if(k2==0)		  //定时 开始{	delay(1000);   if(k2==0)	 {ET0=~ET0;TR0=~TR0;}while(!k2);	 }if(F==0){ET0=0;TR0=0;led=~led;beep=~beep;}		}

 对定时时间的控制,我才用定时器0控制。但其中有很多来延误时间,所以只能给一个大致到一分钟的时间。

void Timer0() interrupt 1
{static u16 i;TH0=0XFC;	//给定时器赋初值,定时1msTL0=0X18;i++;if(i==590000)  //60s  不准确{i=0;F--;}	
}

 

 然后就是对档位的控制,因为档位并没有太高要求,我只用了 2 3 5 三个数字代替。

if(k1==0)		  //调节低温 中温 高温{	delay(1000);   if(k1==0)	 {flat++;if(flat==1)ydz=3;else if(flat==2)ydz=5;else{flat=0;ydz=2;}}while(!k1);	 //检测按键是否松开}

最后就是主函数了

void main()
{Timer0Init();  //定时器1初始化beep=1;led=1;while(1){datapros(Ds18b20ReadTemp());	 //数据处理函数  keypros();display();Time();}		
}

 总结:

        本次专业课程设计并不是太难,只花了一下午和一晚上的时间,但对我而言 足够勉强混过这个课程了。当然,其中有很多不足,我也有很多想法:比如 再加湿度传感器、重力传感器、微波炉门有没有开关、以及加热时,加一个小风扇来使微波炉里面的热更加均匀。(再加云端、加入互联网,远程控制,更加智能化。但这些还要考虑如何将东西放入微波炉,就太复杂了)。但课程紧张,我想就这样吧,到此为止。谢谢观看


http://www.ppmy.cn/news/118514.html

相关文章

微波炉烤鸡翅的做法

想知道如何用微波炉烤鸡翅吗&#xff1f;其实很简单&#xff0c;下面就来介绍微波炉烤鸡翅的几种做法&#xff0c;供大家参考选择。 微波炉烤鸡翅的做法一 烤翅原料&#xff1a;  鸡翅&#xff0c;酱油&#xff0c;葱花&#xff0c;姜丝&#xff0c;孜然&#xff0c;辣椒块&a…

为什么微波炉加热某些食物会爆炸?

很多人买来微波炉后不会非常仔细地看说明书&#xff0c;这也不怪大家&#xff0c;因为说明书的字一般都很细&#xff0c;内容更枯燥乏味。然而&#xff0c;微波炉若使用不当&#xff0c;会带来危险。 那么&#xff0c;哪些食物不能使用微波炉加热呢? 说起来很多很多&#xf…

强烈不建议买松下微波炉

拔剑按&#xff1a; 我家的微波炉情况和下面差不多&#xff0c;七八百块钱买的&#xff0c;用了一年多&#xff0c;一次着火。 最近干脆不工作了&#xff0c;每次工作20秒就停止工作&#xff0c;不管你设置多少时间。 强烈不建议买这个烂货啊. http://tieba.baidu.com/f?z2143…

微波炉的工作原理

微波炉简介 微波炉的工作原理 1. 什么是“微波” 微波是一种频率为300MHZ~300GHZ的电磁波。它的波长很短&#xff0c;具有可见光的性质&#xff0c;沿直线传播。 2. 微波的特性 ○1微波一碰到金属就发生反射&#xff0c;且金属根本不能吸收或传导它&#xff1b; ○2微波可…

拆个微波炉,分析一下电路

微波炉是用2450MHz的超高频电磁波来加热食品&#xff0c;它能无损穿越塑料&#xff0c;陶瓷&#xff0c;不能穿越金属&#xff0c;碰到金属会反射&#xff0c;但穿过含水食物&#xff0c;食物内的分子会高速摩擦&#xff0c;产生热量&#xff0c;使食物变熟。在厨房电器中&…

微波炉控制板

这个项目的目的是用一个新的微波炉控制板取代有缺陷的控制板&#xff0c;不论品牌和能力。由于微波炉控制板损坏&#xff0c;微波炉被当作电子废物倾倒。磁控管、高压变压器、高压二极管、驱动机构等零部件&#xff0c;除控制板外&#xff0c;市场上随处可见。微波炉的框图如图…

微波炉怎么用(微波炉是如何加热食物的?)

1、微波炉是如何加热食物的&#xff1f; 微波炉是“20世纪改变世界的十大发明”之一&#xff0c;它使我们的生活变得非常方便&#xff0c;但它是如何加热食物的呢&#xff1f; 微波炉是如何加热食物的&#xff1f;微波炉的电磁辐射和使用好习惯 微波炉改变生活 微波炉是通过…

基于PHP|JAVA|C#的多语言1688API接口的接入示例

PHP&#xff1a;是一门广泛应用于Web开发的编程语言&#xff0c;它的特点是易学易用&#xff0c;支持面向对象编程&#xff0c;以及与多种数据库互动能力。 PHPSdk&#xff1a;是一组用于PHP开发者的SDK工具&#xff0c;提供了跨多个平台的调用接口和功能类库。 Java&#xf…