如何用4*4矩阵键盘实现多位输入

2019-07-15 16:56发布

我需要用4*4矩阵键盘输入位数最多为四位的多位数。我要实现输入0-9时,键盘可以继续输入,液晶1602保持不变,输入10-15时,液晶1602显示我所输入的数值。我写了键盘扫描程序,但是组合起来就不会写了,尝试了很多方法,总是不能成功,以下是我的部分代码,大神能否帮我看看。我觉得主要是逻辑的问题。
void count()
{
        uchar sn;
        uint num1=0;
        sn=key1();//这是键盘扫描程序,16个按键分别返回0-15
        while(sn<10)//当输入0-9时,键盘可以继续输入
        {
                num1=num1*10+sn;
                sn=key1();
        }
        write_f(num1);//输入10-15将我输入的多位数送到1602显示,write_f()是显示函数。
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
18条回答
wenzizaigaoge
2019-07-17 07:41
Aidaohuakai 发表于 2015-6-3 09:07
不知你显示是怎么写的?
把write_f(num1);改为 write_f(sn);
num1只是把输入的多位数合成了一个数,方便后面计算


void write_f(uint date)         //显示函数
{
  uchar qian,bai,shi,ge;
  qian=date/1000;
  bai=date/100%10;
  shi=date/10%10;
  ge=date%10;
  write_com(0x80+0x42);
  write_data(0x30+qian);
  write_data(0x30+bai);
  write_data(0x30+shi);
  write_data(0x30+ge);
  write_data(0x4D);
  write_data(0x48);
  write_data(0x5a);
}
所以应该显示num1
void count
{
        sn=key1();
        if(sn<10)//按下0-9键,一直显示输入的数据
        {
                num1=num1*10+sn;
                write_f(num1);
        }
        else//按下10-15键将num1清零
       {
                num1=0;
       }
}

uint num1
void main()//主函数
{
        num1=0;
        init();//初始化函数
        while(1)
        {
                count();
        }
}

我觉得我这样写并没错,然而并不能出来结果

一周热门 更多>