左迁
-
0-999999,最多有6位数,因此可声明一个 6 byte的数组keybuffer[6]和一个存储数字位数的变量bitnum
unsigned char keybuffer[6];
unsigned char bitnum=0 ;
if(key<10)
{
keybuffer[bitnum] = key ;
bitnum ++ ;
}//如果用数码管显示,直接把keybuffer的值送显就可以了
//如果还需把值算出的话
unsigned long value = 0,temp = 1;
unsigned char i ;
for(i=0; i<bitnum; i++)
{
value = keybuffer[bitnum-i]*temp + value ; //从个位开始累加
temp = temp * 10 ;
}
return value ;
Chen
-
一定要把输入的一串数字转换为一个整数才行啊?如果是设计一个密码锁,要20位的数字,那岂不是没办法了?
就是一楼说的,设定一个数组,把每次输入的数字存储在数组中,这样就减少了工作量。
康康map
-
应该使用数组,分别存放六个输入的数字。
当有新的按键值输入了,滑动存储,只是保留最后输入的六个输入的数字。
需要计算的时候,再计算出 x=...。
注意,999999已经超出了整型数的范围。
LuckySXyd
-
x=0;
x=0*10+1; //第一次按键按下,x=1
x=1*10+2; //第二次键按下,x=12
x=12*10+3; //第三次键按下,x=123
试试这样
x=0;
x=x*10+1
x=x*10+2
x=x*10+3
wpwipi
-
0-999999,最多有6位数,因此可声明一个 6 byte的数组keybuffer[6]和一个存储数字位数的变量bitnum
unsigned char keybuffer[6];
unsigned char bitnum=0 ;
if(key<10)
{
keybuffer[bitnum] = key ;
bitnum ++ ;
}//如果用数码管显示,直接把keybuffer的值送显就可以了
//如果还需把值算出的话
unsigned long value = 0,temp = 1;
unsigned char i ;
for(i=0; i<bitnum; i++)
{
value = keybuffer[bitnum-i]*temp + value ; //从个位开始累加
temp = temp * 10 ;
}
return value ;
寻云
-
这是我写的整体的程序 不知道对你有帮助不、、
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,num=1,num1,i,k, t=0x10,d[10];
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0x88,0x83,0xc6,0xa1,0x86,0x8e};
uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar table2[]={0xfe,0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,
0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void keyscan();
void display();
void main()
{
while(1)
{
keyscan();
if(k!=0)
{
display();
if(k==5)
k=0;
}
}
}
void keyscan()
{
for(num1=0;num1<4;num1++)
{
P1=table1[num1];
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P1;
k++;
for(i=0;i<16;i++)
{
if(temp==table2[i])
num=i;
d[k]=table[num-1];
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
}
}
void display()
{
t=0x10;
for(i=k;i>0;i--)
{
P2=~t;
P0=d[i];
t<<=1;
delay(5);
}
}