搜索
bottom↓
回复: 18

定时煮沸锅

[复制链接]

出0入0汤圆

发表于 2013-4-18 10:33:38 | 显示全部楼层 |阅读模式
本帖最后由 huq2012 于 2013-4-18 10:36 编辑

我刚学单片机,想用个电饭锅做个定时煮沸锅,我电路图设想如下,感应器用电压力锅的感应器,把感应器装在电饭锅锅底,加水加热。我测量到在常温下是约80K电阻,在水开时约7.5K电阻。根据这特性,我设想利用2051内的比较器输出,水开后开始按设定好的时间倒计时煮汤,到时停止工作。我回来就可以有汤喝了。
失业在家终于把这做好了,感觉不是很理想,程序还是修改坛友的定时器。想做个工作模式还不懂怎样编程,只好把这端口暂用来做温度检测输出。这程序我用关闭总中断后几分钟,总是显示乱码,但输出不影响。只好把TR0中断关了才显示正常。请各位帮我分析下是什么原因。


煮沸定时器
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define leddata P3 //共阳p3口,P3.0=a......P3.7=h
sbit enshifen=P1^6; //定义十分位数码管阳极
sbit engefen=P1^7; //定义个分位数码管阳极
sbit typesw=P1^5;    //定义功能键
sbit upkey=P1^4;    //定义加键
sbit runkey=P1^3;   //定义运行倒计时键
sbit run=P1^2;      //定义控制用电器的继电器控制脚
sbit ttsacn=P3^6;  //温度检测口
uchar code table[]={
0xc0,0xf9,0x64,0x30,
0x59,0x52,0x42,0xf8,
0x40,0x50,};     //共阳数码管字符表0-9
uchar fen;
uchar count=0;     //定义100ms计数次数变量,count=20即到1S

uchar miao=60;     //定义秒初值,减到0分就减1
uchar tt;          //定义检测常数

void delay1ms(uint z)   
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}        //延时子程序,延时Z个ms

void display (uchar shifen,uchar gefen,uchar cishu)  //数码管动态扫描程序
{    uchar x;
  for(x=cishu;x>0;x--)
  {
   
if(shifen!=0)
    {
enshifen=0;
     leddata=table[shifen];
delay1ms(2);
enshifen=1;    //显示十位1ms左右  
     }
else
   enshifen=0;
     leddata=0x4e;
   delay1ms(2);
   enshifen=1;



engefen=0;
    leddata=table[gefen];
delay1ms(2);
engefen=1;      //显示个位1ms左右

  }
  
   
}

void init()   //定时器设置打开,暂未开总中断,当EA=1时候就会产生定时器中断。
{
TMOD=0x01;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256; //预装初值定时50MS
ET0=1;       //开定时器T0
}

void timer0() interrupt 1
{
TH0=(65536-46080)/256;
TL0=(65536-46080)%256; //重装初值
   count++;    //用于100MS定时的计数单元加1
    if(count==10)   //1s定时到,秒减1
       {
      count=0;  // 用于50MS定时的计数单元归零
      miao--;
        
       if(miao==0)  //一分钟到
        {
              miao=60; //秒重置60
         fen--;  //分减1
        }
         
      }
   

   

}
void main()
{
init();
fen=1;  //上电先显示F1分钟
run=1;//先关闭用电器继电器
tt=200;

while(1)
      {
        display((fen/10),(fen%10),1); //显示
  
      if(upkey==0) //加1
       {
       delay1ms(10);  //按键防抖 ,再检测
     if(upkey==0)
     fen++;
     if(fen==16)
       fen=1;
     
      
        display((fen/10),(fen%10),50); //调用显示程序,用于延时
     
    }
      if(ttsacn==0)
             {
              tt--;
                       }
       if(tt==0)
              {
          EA=1; //开总中断
         typesw=0;
           }
    if(runkey==0)  //启动倒计时
       {
       delay1ms(10);  //按键防抖 ,再检测
    if(runkey==0)
         {
      
               run=0;     //开用电器继电器
         TR0=1;       //开定时器T0中断
          tt=200;
         ttsacn=1;  //复位温度检测口
          }
     display((fen/10),(fen%10),100); //调用显示程序,用于延时,这样可以消除闪烁,还能自减
     
       }
   
    if(fen==0){EA=0;TR0=0;run=1;}  //时间到0,输出控制,关闭总中断,,关闭用电器继电器      

      }


}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-4-18 11:09:22 | 显示全部楼层
fen--;  //分减1
改为:
if(fen>0)fen--;  //分减1

出0入0汤圆

 楼主| 发表于 2013-4-18 12:11:37 | 显示全部楼层
lcw_swust 发表于 2013-4-18 11:09
fen--;  //分减1
改为:
if(fen>0)fen--;  //分减1

多谢,要这样,我这程序是不是一直在后台做减数。

出0入0汤圆

发表于 2013-4-18 12:48:19 | 显示全部楼层

一般的電壓力鍋都有煮粥檔,費事弄,搞出來的效果可能還很不如意

出0入0汤圆

发表于 2013-4-18 12:54:22 | 显示全部楼层
这个可以关注下美国最新的爆炸案,说不定就有思路了!哈

出70入0汤圆

发表于 2013-4-18 14:00:28 | 显示全部楼层
kyughanum 发表于 2013-4-18 12:54
这个可以关注下美国最新的爆炸案,说不定就有思路了!哈

真有才!!那时候单片机都灰飞烟灭了,可惜了了!

出0入0汤圆

发表于 2013-4-18 14:10:55 | 显示全部楼层
很快这种锅要实名制

出0入12汤圆

发表于 2013-4-18 14:15:14 | 显示全部楼层
kyughanum 发表于 2013-4-18 12:54
这个可以关注下美国最新的爆炸案,说不定就有思路了!哈

这个就是 逆向思维啊,哈哈哈

出0入8汤圆

发表于 2013-4-18 18:45:49 | 显示全部楼层
支持一下!

出0入0汤圆

 楼主| 发表于 2013-4-19 12:11:30 | 显示全部楼层
本帖最后由 huq2012 于 2013-4-19 12:15 编辑
devcang 发表于 2013-4-18 12:48
一般的電壓力鍋都有煮粥檔,費事弄,搞出來的效果可能還很不如意 ...


我做这东西主要是用来煮汤的,把锅盖的压力锅密封圈拿下,放好料和水,设定好煮沸的时间,下班回来就可有美味的汤了。我想做个模式是煮沸几分钟后再半煮,是加热三四秒再停三四秒,到设定时间后才停止。这模式不会怎样编写程序?压力锅煮的粥太烂了,像婴儿食品了,大人不好吃吧。

出0入0汤圆

发表于 2013-4-19 13:35:57 | 显示全部楼层
huq2012 发表于 2013-4-19 12:11
我做这东西主要是用来煮汤的,把锅盖的压力锅密封圈拿下,放好料和水,设定好煮沸的时间,下班回来就可有 ...

你怎么判断水已经烧开



烧一小会、停一小会,这很容易。

出0入0汤圆

 楼主| 发表于 2013-4-19 23:15:16 | 显示全部楼层
devcang 发表于 2013-4-19 13:35
你怎么判断水已经烧开

看电路图那温变电阻,就是压力锅的中间温度感应器,利用2051的比较器就可调得出水开的电平输出。

出0入0汤圆

发表于 2013-4-23 11:06:10 | 显示全部楼层
sbit enshifen=P1^6; //定义十分位数码管阳极
sbit engefen=P1^7; //定义个分位数码管阳极


这个是不是和图不一样啊。。。。

出0入0汤圆

 楼主| 发表于 2013-4-26 10:06:58 | 显示全部楼层
juncheng88 发表于 2013-4-23 11:06
sbit enshifen=P1^6; //定义十分位数码管阳极
sbit engefen=P1^7; //定义个分位数码管阳极

我实际做出试验板和这电路图是不一致,画图方便才这接法,程序才是试验板接法。

出0入4汤圆

发表于 2013-4-26 10:50:04 | 显示全部楼层
除非把测温探头放锅里,否者靠外部温度来准确判断沸点是很难的!另外水的沸点和气压有关,楼主做粥加不同的东西其沸点就不一样了!本人认为还是测试蒸汽靠谱!

出0入0汤圆

发表于 2013-4-27 12:09:31 | 显示全部楼层
最难的就是检测水是否烧开,单靠外面的温度不靠谱,探头放里面也不是百分之百准确, 如果做到像人眼那样准确是个难题。 其他的都 SO  EASY

出0入0汤圆

发表于 2013-4-27 12:15:59 | 显示全部楼层
我家买了一个美的智能电饭煲,就有这样的功能.可以yu 约的.

出0入0汤圆

发表于 2013-4-27 12:16:06 | 显示全部楼层
支持一下,

出0入0汤圆

 楼主| 发表于 2013-4-29 18:50:28 | 显示全部楼层
yk28981 发表于 2013-4-26 10:50
除非把测温探头放锅里,否者靠外部温度来准确判断沸点是很难的!另外水的沸点和气压有关,楼主做粥加不同的 ...

我现想买到带AD功能的单片机,在锅里放半水就检测这温变电阻的曲线图,就可以根据温度控制了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表