我是将时钟写在液晶的前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);
}
}
}
}
}
}
}
引用: 原帖由 Learner_new 于 2011-12-1 19:13 发表 我。。。。。难以言谢,,但还是要说声谢谢,这问题困扰了我好久啊能再问一个问题么,为什么我移屏有时候显示对有时候显示就比原来的位置往前或者往后推一格了啊?是移屏延时的问题么,意思就是有时候移屏移了17位, ...
仿真的结果还是实际的结果?
可以试试移屏指令之间加延迟
[ 本帖最后由 孤獨の快樂 于 2011-12-1 19:42 编辑 ]