[求助] 1602编写时钟(带闹钟)

Learner_new   2011-11-30 18:28 楼主

我是将时钟写在液晶的前16位,闹钟写在液晶的后16位,

时钟已经设置好,而且可以正常调试,但是当按下闹钟键时,也就是移屏之后,发现不能调整时间,为什么呢?很急!!!!

(移屏正常,按下key4的时候指针也能准确指到),但就是按下key2和key3屏幕没有反应!

相应代码如下:

//************闹钟键盘扫描**********
void keyscan1()
{
  if(key4==0)
  {
   delay(5);
  if(key4==0)
  {
   while(!key4); 
   flag1++;
   if(flag1==1)
   {
     for(num=0;num<16;num++)
        write_com(0x18);
     delay(20);
   }
         if(flag1==2)
         {
     write_com(0x0f);
     write_com(0x80+0x5a);
   }
   if(flag1==3)
   {
     write_com(0x0f);
     write_com(0x80+0x57);
   }
   if(flag1==4)
   {
     write_com(0x0f);
     write_com(0x80+0x54);
   }
   if(flag1==5)
   {
    flag1=0;
    for(num=0;num<16;num++)
       write_com(0x1c);
    delay(20);
   }
   if(flag1!=0)
   {
    if(key2==0)
    {
     delay(5);
     if(key2==0)
     {
      while(!key2);
      if(flag1==2)
      {
          miao1++;
       if(miao1==60)
        miao1=0;
       write_sfm(26,miao1);
       write_com(0x80+0x5a);
      }
      if(flag1==3)
      {
          fen1++;
       if(fen1==60)
         fen1=0;
       write_sfm(23,fen1);
       write_com(0x80+0x57);
      }
      if(flag1==4)
      {
          shi1++;
       if(shi1==23)
        shi1=0;
       write_sfm(20,shi1);
       write_com(0x80+0x54); 
      }
     }
    }
    if(key3==0)//数字减少
    {
     delay(5);
     if(key3==0)
     {
      while(!key3);
      if(flag1==2)
       {
       if(miao1==0)
            miao1=60;
       miao1--;
       write_sfm(26,miao1);
       write_com(0x80+0x5a);
       }
       if(flag1==3)
       {
       if(fen1==0)
            fen1=60;
       fen1--;
       write_sfm(23,fen1);
       write_com(0x80+0x57);
       }
       if(flag1==4)
       {  
       if(shi1==0)
        shi1=24;
       shi1--;
       write_sfm(20,shi1);
       write_com(0x80+0x54);
       }
  
     }
    }
   }

  }
  } 
}

回复评论 (4)

你KEY2和KEY3的函数写在了KEY4的if里了,所以没法执行。

[ 本帖最后由 孤獨の快樂 于 2011-11-30 20:48 编辑 ]
点赞  2011-11-30 20:42

回复 沙发 孤獨の快樂 的帖子

我。。。。。难以言谢,,但还是要说声谢谢,这问题困扰了我好久啊能再问一个问题么,为什么我移屏有时候显示对有时候显示就比原来的位置往前或者往后推一格了啊?是移屏延时的问题么,意思就是有时候移屏移了17位,或者15位。

[ 本帖最后由 Learner_new 于 2011-12-1 19:16 编辑 ]
点赞  2011-12-1 19:13

引用: 原帖由 Learner_new 于 2011-12-1 19:13 发表 我。。。。。难以言谢,,但还是要说声谢谢,这问题困扰了我好久啊能再问一个问题么,为什么我移屏有时候显示对有时候显示就比原来的位置往前或者往后推一格了啊?是移屏延时的问题么,意思就是有时候移屏移了17位, ...

仿真的结果还是实际的结果?

可以试试移屏指令之间加延迟

[ 本帖最后由 孤獨の快樂 于 2011-12-1 19:42 编辑 ]
点赞  2011-12-1 19:39

回复 4楼 孤獨の快樂 的帖子

仿真和实际都出现的,难道这是无法避免的么,我加延迟了也不行。我多按几次移屏的话就会出现那样的情况
点赞  2011-12-3 22:41
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复