您当前的位置:五五电子网电子知识单片机-工控设备51单片机51单片机快热式热水器程序 正文
51单片机快热式热水器程序

51单片机快热式热水器程序

点击数:7894 次   录入时间:03-04 11:56:25   整理:http://www.55dianzi.com   51单片机
  delay(4);                     //延时2ms
  a=_crol_(a,1);                //改变位选字
  P0=0xff;                      //消影
  }
}

/*----------------------------------------------------------
  按键扫描处理函数 unsigned char keyscan(void)
  无参数,返回值:无符号字符型,无键按下为0,有键按下为其它
  影响全局变量:heatpower
----------------------------------------------------------*/
unsigned char keyscan(void)
{
unsigned char i,ch;
if (upkey==0)                   //“+”键
  {
  buzz=0;                       //打开蜂鸣器(发出按键音)
  for (i=0;i<5;i++) display();  //延时消抖
  buzz=1;                       //关闭蜂鸣器
  if (heatpower<9) heatpower++; //档位加一
  dispram[0]=0;
  dispram[1]=heatpower;         //显示当前档位
  while (upkey==0) display();   //等待键释放
  return (1);                   //返回有键按下
  }
  else if (downkey==0)          //“-”键
  {
  buzz=0;                       //打开蜂鸣器(发出按键音)
  for (i=0;i<5;i++) display();  //延时消抖
  buzz=1;                       //关闭蜂鸣器
  if (heatpower>0) heatpower--; //档位减一
  dispram[0]=0;
  dispram[1]=heatpower;         //显示当前档位
  while (downkey==0) display(); //等待键释放
  return (2);                   //返回有键按下
  }
  else if (swkey==0)            //开关键
  {
  buzz=0;                       //打开蜂鸣器(发出按键音)
  for (i=0;i<30;i++) display(); //延时消抖
  buzz=1;                       //关闭蜂鸣器
  swkey=1;                      //置位开关键
  while (swkey==0) display();   //等待键释放
  ch=IE;                        //暂存中断控制字IE
  IE=0x00;                      //禁止中断
  P0=0xff;
  P1=0xff;
  P2=0xff;                      //清除端口输出
  dispram[0]=0x10;
  dispram[1]=0x10;              //显示“--”
  display();
  while (1)
    {
    while (swkey) display();     //等待开关键按下
    buzz=0;                      //打开蜂鸣器(发出按键音)
    for (i=0;i<10;i++) display();//延时消抖
    buzz=1;                      //关闭蜂鸣器
    if (swkey==0) break;         //确认开关键被按下
    }
  while (swkey==0) display();    //等待键释放
  IE=ch;                         //还原中断控制字IE
  return (0);                    //返回无键按下
  }
  else return (0);               //无任何键按下时由此返回
}

/*--------------------------------------
  加热控制函数 void heatctrl(void)
  无参数,无返回值
  判断是否加热、加热功率及档位指示灯处理
--------------------------------------*/
void heatctrl(void)
{
if (!tempov)                     //当没有超温标志时
  {
  relay=0;                       //接通继电器
  buzz=1;                        //关闭蜂鸣器
  switch (heatpower)             //判断加热档位
    {
    case 0: {EX1=0;ET1=0;triac=1;led1=1;led2=1;led3=1;break;}//0档不加热,指示灯不亮
    case 1:
    case 2:
    case 3:
    case 4: {led1=0;led2=1;led3=1;EX1=1;break;} //1~4档1号指示等亮
    case 5:
    case 6:
    case 7:
    case 8: {led1=0;led2=0;led3=1;EX1=1;break;} //5~8档1号、2号指示灯亮
    case 9: {EX1=0;ET1=0;led1=0;led2=0;led3=0;triac=0;break;} //9档全功率,指示灯全亮
    }
  }
  else                           //当有超温标志时

上一页  [1] [2] [3] [4]  下一页


本文关键字:单片机  程序  热水器  51单片机单片机-工控设备 - 51单片机