输入0~9的两个数,在LED上显示个位数,怎么用单片机等实现?

就是实现这样的功能,要用到单片机还有其他的元件比如led,是关于msp单片机原理和应用的,有谁能替我想想么,

#include<reg51.h>
#define uchar unsigned char
uchar key,key_time,ajbz;
uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
/******************延时函数**********************/
void delay(uchar k)
{
uchar j;
while(k--)
for(j=0;j<50;j++);
}
/************键盘扫描及翻译函数***************/
uchar key_jz()
{
uchar key_dk;
c:
ajbz=0; //按键标志位:“0”为无按键按;“1”有按键按下
P1 = 0xf0; //向P1端的高4位送高电平低4位送低电平
key_dk = P1; //读取p1端口的值送给key_dk
P1 = 0x0f; //向P1端的高4位送低电平低4位送高电平
key_dk |= P1; //将P1端口的值与key_dk按位或并送回key_dk
if((key_dk&0xff)!=0xff) //判断是否有按键按下
delay(10); //延时去抖
if((key_dk&0xff)!=0xff) //再次判断是否有按键按下确定是否真的有键按下
{
switch(key_dk) //翻译key_dk得到按键键值
{
case 0x7d: key= 10;ajbz=1;break;
case 0x7e: key= 0;ajbz=1;break;
case 0xbb: key= 3;ajbz=1;break;
case 0xbd: key= 2;ajbz=1; break;
case 0xbe: key= 1;ajbz=1;break;
case 0xdb: key= 6;ajbz=1;break;
case 0xdd: key= 5;ajbz=1;break;
case 0xde: key= 4;ajbz=1;break;
case 0xeb: key= 9;ajbz=1;break;
case 0xed: key= 8;ajbz=1;break;
case 0xee: key= 7;ajbz=1;break;
default: goto c;
}
while((P1&0x0f)!=0x0f); //等待按键释放
}
return key;
} void int_0()interrupt 1
{
key_time++;
if(key_time==160)
{
key_jz();
}
}
void display(uchar i)
{
P2=0x01;
P0=tab[i/10];
delay(20);
P0=0xff;
P2=0x02;
P0=tab[i%10];
delay(20);
P0=0xff;
}
void main()
{
uchar wz,t;
TMOD=0x02;
TH0=6;
TL0=6;
TR0=1;
EA=1;
ET0=1;
t=0;
while(1)
{
display(t);
if((ajbz==1)&&(key<10))
{
switch(wz)
{
case 0:wz++; t=t%10+key*10;break;
case 1:wz++;t=t/10*10+key;break;
}
ajbz=0;
}
if((ajbz==1)&&(key=10))
{
t=0;
wz=0;
ajbz=0;
}
}
}程序就这样~要仿真留邮箱~
温馨提示:答案为网友推荐,仅供参考