51单片机如何用矩阵按键输入多位数,比如输入6显示6,再输入7显示67,最好给个c的程序,谢了!

如题所述

用数组啊,如果是指定位数的就比较简单

当第一次输入时i=0,第一个数6放a[0],i=1,第二个数7放a[1],显示就是

    OUT=  a[0] * 10 +  a[1] * 1  


  数组用之前初始化为0,a[2] = {0}

//这个好用点,递推
if(key_data)//有按键按下
{
    for(i = key_count ;i>0;i--;)
    {
    a[i+1] = a[i];

   }    
   a[0] = key_data;
    key_count ++;
 }
   
   //显示调用,根据你的输入最大数定数组的位数
   Sprint = a[3] * 1000 +  a[2] * 100  + a[1] * 10 +  a[0] * 1  ;

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-14
当第一次输入时i=0,第一个数6放a[0],i=1,第二个数7放a[1],显示就是
OUT= a[0] * 10 + a[1] * 1

数组用之前初始化为0,a[2] = {0}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//这个好用点,递推
if(key_data)//有按键按下
{
for(i = key_count ;i>0;i--;)
{
a[i+1] = a[i];

}
a[0] = key_data;
key_count ++;
}

//显示调用,根据你的输入最大数定数组的位数
Sprint = a[3] * 1000 + a[2] * 100 + a[1] * 10 + a[0] * 1 ;

单片机矩阵键盘输入多位数问题
第二步:然后每次调用按键的时候将数据存到缓存中,要顺序的存放。并且搞一个参量来记存放数据的数目。假设我现在输入了“1 2 3 4”这个参量就是4。 判断确定键:这一步和第二步是并行的关系。可以用SWITCH来做到.当确定以后。判断数据存放数目。在自己写个判断数目的小子程序。比如上面写的是4位 ...

51单片机矩阵键盘如何实现两个键同时按下的时候显示其他数字,用c语言...
这样只要定义16字节的缓冲区全部按键都能检测到。(一般不需要那么多6个足够)还有一种方式 是 如果只返回2个按键的话。可以这样 常规按键扫描 返回范围在0-15也就是0-F 读取到一个值后把这个值左移4位 再继续读取。当读取到第二个值的时候与上第一个值。就能获取2个按键的值了。

51单片机通常如何输入浮点数?
一般是浮点数乘以10的n次方变成整数进行计算等处理,在输出的时候再次处理小数点。比如,输入的是1234.567,1234保存到2个unsigned char型变量里面,567保存到2个unsigned char型变量里面,如果是有符号浮点数,可以把符号单独保存到一个unsigned char里面,计算的时候所有的数都乘以1000,输出的时候单独输出...

求助,C51单片机用矩阵键盘按制两位数管显示的方案 内详!
回答:LED = 第1次输入 + 第2次输入 × 10

51单片机舵机控制,怎么用矩阵按键实现任意角度输入?
一个按键使得输入递增;一个按键使得输入递减。两个按键,就够用了。

51单片机,4*4矩阵键盘,八位数码管
51单片机,4*4矩阵键盘,八位数码管,仿真实例可以参考一下。include<reg51.h> define uchar unsigned char uchar temp;int key1,key,disbuf;\/\/ 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x...

51单片机矩阵键盘输入0-999999的任意数的问题?
0-999999,最多有6位数,因此可声明一个 6 byte的数组keybuffer[6]和一个存储数字位数的变量bitnum unsigned char keybuffer[6];unsigned char bitnum=0 ;if(key<10){ keybuffer[bitnum] = key ;bitnum ++ ;}\/\/如果用数码管显示,直接把keybuffer的值送显就可以了 \/\/如果还需把值算出...

51单片机如何把矩阵键盘控制数码管和独立键盘控制蜂鸣器共同实现_百度...
在显示模块的八位 LED 数码的个位显示当前使用矩阵键盘所按下的值。键阵键盘多用于键数目较多的时候。这样可以更多的节省IO口的占用量,对于矩阵键盘常用的扫描方法为线反转查询法。具体的思路是:首先使行作为输入,使用单片机内部电阻上拉为高电平,列输出低电平,读行的状态。如果行有一个IO口是低,...

如何在51单片机矩阵键盘里按一个键可实现数码管动态显示而不是一...
kbscan(void){unsigned char sccode,recode;P1=0x0f; \/\/发0扫描,列线输入if ((P2 & 0x0f) != 0x0f) \/\/有键按下{delay(20); \/\/延时去抖动if ((P1&0x0f)!= 0x0f){sccode = 0xef; \/\/逐行扫描初值while((sccode&0x01)!=0){ P1=sccode;if((P1&0x0f)...

求51单片机 4*4矩阵键盘 控制8*8点阵 显示 的语音 程序。
\/\/中字显示 \/\/unsigned char code tabP0[]={0x00,0x1e,0x12,0x12,0x7f,0x12,0x12,0x1e};\/\/unsigned char code tabP2[]={0x7F,0xBF,0x0DF,0x0EF,0x0F7,0x0FB,0x0FD,0x0FE};\/ 名称 : Delay_1ms()功能 : 延时子程序,延时时间为 1ms * x 输入 : x (延时一毫秒的个数...

相似回答