本帖最后由 袁超 于 2019-6-12 13:12 编辑
想通过按键修改当前时间,效果是lcd进入时间设置界面后,光标会在待修改的年/月/日/时/分/秒位置闪烁,通过前后按键移动闪烁光标的位置,通过增减按键对当前闪烁位置的数值进行加减。没有找到相应的例程,自己试着写了一段程序,闪烁光标是通过在相应位置交替显示数字和空白字符实现的,可能是因为加了两秒的延时,按键的时候很可能正好在延时,按键捕捉非常不灵敏,很多时候按键无响应,求解决方案。
[mw_shl_code=c,true]/* 概念程序
@i,j代表光标位置
@date,time代表日期和时间
*/
char date[16],time[16];
u8 i,j,key=0;
while(key==0||key==KEY3_PRES||key==KEY4_PRES||key==KEY5_PRES||key==KEY6_PRES)
{
if(key==KEY3_PRES)
{
//修改光标位置
//if(i=1,j=17) j=49;
......
}
if(key==KEY4_PRES)
{
//修改光标位置
//if(i=1,j=17) {i=3;j=81;}
}
if(key==KEY5_PRES)
{
//if(i==1 && j==17) calendar.w_year += 1;
//if(i==1 && j==49) calendar.w_month += 1;
}
if(key==KEY6_PRES)
{
//if(i==1 && j==17) calendar.w_year -= 1;
//if(i==1 && j==49) calendar.w_month -= 1;
}
Show_Str(1,1,date);
Show_Str(3,1,time);
delay_ms(2000);
Show_Str(i,j," ");
delay_ms(2000);
key = KEY_Scan(0);
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
先找到按键捕捉不灵敏的原因,也就是说到底是不是因为你的延时函数导致的?你的延时函数是不是用while()原地死等,什么都不做?
一周热门 更多>