关于51单片机的键盘显示问题

2019-03-24 17:56发布

#include"display.h"
#include"keyscan.h"
#include"12864.h"
#include"delay.h"

void display(void)
{          
      unsigned char x,y,a,first,end;
          unsigned char n = 0 ;
          int i;
                 for( i=0;i<2;i++)
                 {
                   a = keyscan();
                 if((a>=0)&&(a<=9))
                  {
                   n++;
                     if(n==1)
                     {
                  first = a;
                 
                 }
                else if(n>1)
                {
                   first = first*10 + a;
                }
          }
                    end =  first;
              x=end/10;
              y=end%10;
             disbuff[0]=x;
                 disbuff[1]=y;
                 DelayMs(5);
                 lcd_pos(0,2);
             lcd_wdat(ASCII[disbuff[0]]);
             lcd_wdat(ASCII[disbuff[1]]);
           }
         }          




这是部分代码:住
keyscan()是矩阵键盘扫描函数,返回值为0-9(unsigned char) 默认为-1;
lcd_pos()是12864的位置显示函数,这里直接调用;
lcd_wdat()是12864的写数据函数;

现在的问题就是我在矩阵键盘上按下一个数,可以刷新显示,但是在按下一个数程序就把以前的给覆盖掉了,现在我的想法就是按下二次,比如5,8可以在12864上显示出来;

恳请大神帮助我一下。

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
曾经in
2019-03-25 00:07
用static unsigned char n = 0 ;
自动型变量声明在函数内每次进入函数时获得空间,退出时释放
关于变量作用域和生命期的内容
LZ的c语言需要加强

一周热门 更多>