微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 继电器开启时1602显示时间停止 怎么解决 谢谢大侠们!

继电器开启时1602显示时间停止 怎么解决 谢谢大侠们!

时间:10-02 整理:3721RD 点击:
问题在红色部分:
while(1)
   {
if(B1==0&BEEP==1)  //手动喂食
{  
BEEP=0;
  delay1(3000);// 当这里暂停10秒时  1602显示的时间会静止,当暂停结束后时间直接增加10秒显示 ,怎么解决呢?
  BEEP=1;

}
   if(B2==0&DENG==1)  //手动开灯
   
   {DENG=0;delay1(200);}
   
   if(B2==0&DENG==0)  //手动关灯
   
   {DENG=1; write_position(2,16); lcd_wdat(0x20); delay1(200);}      
   
   kll:
   if(B3==0&BEIDENG==1)  //手动开背灯
   
   {BEIDENG=0;delay1(200);}
   
   if(B3==0&BEIDENG==0)  //手动关背灯
   
   {BEIDENG=1;write_position(2,16); lcd_wdat(0x20); delay1(200);}   
Play_nowtime();读取芯片时间并显示到1602
}
void  Play_nowtime()
{
    read_nowtime(0x81,init,7);   //读出当前时间,读出7个字节
    write_position(2,1);
    lcd_wdat(((init[2]&0xf0)>>4)+0x30);
    write_position(2,2);
    lcd_wdat('0'+(init[2]&0x0f)); //读小时
   // write_position(2,3);
   // lcd_wdat(':');
    write_position(2,4);
    lcd_wdat('0'+((init[1]&0xf0)>>4));
    write_position(2,5);
    lcd_wdat('0'+(init[1]&0x0f)); //读分钟
//    write_position(2,6);
//    lcd_wdat(':');
    write_position(2,7);
    lcd_wdat('0'+((init[0]&0xf0)>>4));
    write_position(2,8);
    lcd_wdat('0'+(init[0]&0x0f)); //读秒
    write_position(1,1);
    lcd_wdat('0'+((init[6]&0xf0)>>4));
    write_position(1,2);
    lcd_wdat('0'+(init[6]&0x0f)); //读年
//    write_position(1,3);
//    lcd_wdat('/');
    write_position(1,4);
    lcd_wdat('0'+((init[4]&0xf0)>>4));
    write_position(1,5);
    lcd_wdat('0'+(init[4]&0x0f)); //读月
//    write_position(1,6);
//    lcd_wdat('/');
    write_position(1,7);
    lcd_wdat('0'+((init[3]&0xf0)>>4));
    write_position(1,8);
    lcd_wdat('0'+(init[3]&0x0f)); //读日
    write_position(1,15);
    lcd_wdat('0'+(init[5]&0x0f)); //读周
    flash();
}

2.在main
函数中 怎么实现无按键10秒后 BEIDENG=1(就是无操作10秒后 1602背景灯关闭(1602背景接地端接P2.2口)

继电器的开启时间较长时,不能这样简单的延时,这样延时要占用CPU,cpu一直在执行延时,当然不会刷新你的时间显示,使用定时器控制继电器的开启时间,这样延时不占用cpu资源。

无操作10秒后,使背景灯关闭,同样要使用定时器,设置一个标志位,任何一次操作后,定时器开始计时,时间到达10秒,中断程序中把标志位置1,主程序中查询这个标志。
实际程序没有我说的这么简单,还需考虑有操作时把计数清零,但也复杂不了多少,慢慢琢磨吧。

我是菜鸟 请问定时器怎么写啊?

你的程序去哪里找的!

1302时钟程序改的!
我这个是 定时喂鱼食的装置 是自己用的。刚学单片机所以很多都是现抄现卖!

你需要看51单片机关于定时器的内容,定时器的操作实际上很简单,看一看实例就会了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top