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

2019-07-16 02:19发布

问题在红 {MOD}部分:
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口)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。