c51单片机用c程序如何将数码管的各位数字显示到十位,且能让各位在显示其他的数字,例如计算器的显示那种..
4*4矩阵按键,已经实现了1-16数字的现实,现在需要按一下键,如按下数字“8”在个位上显示8,再按一下“9”,则9显示到个位,8显示到十位的那种程序.......
追答#include
#define unchar unsigned char
#define uint unsigned int
void delay(int);
unchar key=0,table[]={0x40,0x4f,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};
void display(uint key)
{
P0=0x40;
P0=table[key];
delay(1000);
}
void juzhensaomiao()
{
unchar num;
P1=0xfc;
num=P1;
num=num&0xf0;
if(num!=0xf0)
{
delay(10);
num=P1;
num=num&0xf0;
if(num!=0xf0)
{
num=P1;
switch(num)
{
case 0xec:
key=1;
break;
case 0xdc:
key=2;
break;
case 0xbc:
key=3;
break;
case 0x7c:
key=4;
break;
}
while(num!=0xf0)
{
num=P1;
num=num&0xf0;
}
display(key);
}
}
P1=0xfa;
num=P1;
num=num&0xf0;
if(num!=0xf0)
{
delay(5);
num=P1;
num=num&0xf0;
if(num!=0xf0)
{
num=P1;
switch(num)
{
case 0xea:
key=5;
break;
case 0xda:
key=6;
break;
case 0xba:
key=7;
break;
case 0x7a:
key=8;
break;
}
while(num!=0xf0)
{
num=P1;
num=num&0xf0;
}
display(key);
}
}
P1=0xf6;
num=P1;
num=num&0xf0;
if(num!=0xf0)
{
delay(5);
num=P1;
num=num&0xf0;
if(num!=0xf0)
{
有点长,这里放不下,我只传了部分,你看看,应该可以看懂