按键捕捉不灵敏-RTC模块通过按键设置时间的问题

2019-07-20 01:20发布

本帖最后由 袁超 于 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]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。