通过键盘往单片机中输入任意数字的C语言程序?

C语言中的输入函数是scanf,但是c51中好像没有这条语句,现在想通过矩阵式键盘向单片机中输入任意数据,该怎样写?给个思路,能有程序更好。谢谢!

我玩的pic相信51应该也差不多我整理一下发 #include <>
unsigned char code table[]={
0x3f,0x06,0x5b,0x4f, //0123
0x66,0x6d,0x7d,0x07, //4567
0x7f,0x6f,0x77,0x7c, //89ab
0x39,0x5e,0x79,0x71}; //cdef
unsigned char temp;
unsigned char key;
unsigned char i,j; void main(void) {
while(1) {
P3=0xff;
P3_4=0;
temp=P3;
temp=temp & 0x0f; //保留低四位 if (temp!=0x0f) {
for(i=50;i>0;i--)
for(j=200;j>0;j--); //延迟
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f) {
temp=P3;
temp=temp & 0x0f;
switch(temp) {
case 0x0e:
key=7;
break;
case 0x0d:
key=8;
break;
case 0x0b:
key=9;
break;
case 0x07:
key=10;
break;
} temp=P3;
P1_0=~P1_0;
P0=table[key];
temp=temp & 0x0f;
while(temp!=0x0f){
temp=P3;
temp=temp & 0x0f;
} } } P3=0xff;
P3_5=0;
temp=P3;
temp=temp & 0x0f;

if (temp!=0x0f) {
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f) {
temp=P3;
temp=temp & 0x0f;
switch(temp) {
case 0x0e:
key=4;
break;
case 0x0d:
key=5;
break;
case 0x0b:
key=6;
break;
case 0x07:
key=11;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
temp=temp & 0x0f;
while(temp!=0x0f) {
temp=P3;
temp=temp & 0x0f;
}
}
} 。。。
}
} //由于字数限制剩下的那两行键盘扫描我就用。。。代替了相信你也应该能懂我采纳率一直保持100%希望不要在这里掉下去。。有不懂的可以问我!
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-23
这样,首先,你对键盘扫描程序做一些修改,使返回的值与键盘上的数值对应相同。无键按下时为一个不常用的数字
然后你利用idata声明一个数组,你要输入数字的最大长度就等于数组长度,用来保存你输入的值。
第三步,你需要设置一个变量counter来记录你输入数字的个数。
最后利用一个for循环就可以计算出你的输入所代表的实际值,赋给你要a就可以了
第2个回答  2013-12-23
什么键盘?4*4矩阵键盘?
相似回答