程序修改

2019-08-01 16:22发布

当输入密码时,如果输入有误,当按下 删除键后,删除刚刚输入的密码,然后当再次按下数字键时,接着开始,程序如下,怎样修改呢?

void get_psw(void)  //输入密码
{
     unsigned char i;
    lcd_c_send(0xc0); //第二行显示“*”
     for (i=0;i<8 ;i++ )
       {
          keyscan();
         while (keynum>=11 && keynum<=15) //除0~10以外,(10为删除键)其他键值则不响应
          keyscan();
           {
                psw_mem[i]=keynum;   //键值送暂存区保存
                lcd_d_send(0x2a);     //*号
                delay1(20);        //短延时,才能显示最后一个“*”
           }
     }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
houcs
1楼-- · 2019-08-01 21:36
坐等高人解答。
PS:keyscan是键扫的程序吧。
llljh
2楼-- · 2019-08-02 01:09
 精彩回答 2  元偷偷看……
dingy
3楼-- · 2019-08-02 02:53
键处理是容易的.
如果是删除一个字符, 象缓冲指针 i -1, 这样倒回一个字符,
或者是删除全部字符, 则清空缓冲.
renyaq
4楼-- · 2019-08-02 07:30
是的,只是, 这里 lcd_d_send() 有点麻烦. 要做倒退一个字符的处理,
比较简单的办法是 lcd_d_send() 函数里增加控制符, 比如特殊控制 BACKSPACE(这可以用宏定义为任意不用的字符), lcd_d_send() 函数里判断这个字符, 进行清除当前光标的字符, 并倒回光标的操作.
pengf
5楼-- · 2019-08-02 10:08
输入密码时,lcd光标是向前的,并把数保存起来,
当有按下删除键后,光标倒退并且清除之前的数(按几次就清除几位),
输入正确的键值时,又从最近的一个数开始累加。。。
pengf
6楼-- · 2019-08-02 11:28
llljh 发表于 2014-6-23 21:02
无论是退格删除,还是全部删除,都只是个 状态转移而已,

如何状态转移呢?

一周热门 更多>