|
怎么通過編程實(shí)現(xiàn)單片機(jī)按鍵掃描顯示0到15,比如按下按鍵1顯示1,按下按鍵2顯示2.....按下按鍵11顯示11
這是我的原程序,只能實(shí)現(xiàn)單數(shù),不知道怎么實(shí)現(xiàn)雙數(shù),求大家?guī)蛶兔?br />
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit wr=P2^5;
sbit cs1=P2^6;
sbit cs2=P2^7;
uchar code table[]={0xc0,
0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88};
void dms(uint);
uchar num;
void display(num)
{
cs1=1;
P0=0xfe;
wr=0;
wr=1;
cs1=0;
cs2=1;
P0=table[num];
wr=0;
wr=1;
cs2=0;
}
void m()
{
uchar tp,k;
P3=0xfe;
tp=P3;
tp=tp&0xf0;
if(tp!=0xf0)
{
dms(10);
tp=P3;
tp=tp&0xf0;
if(tp!=0xf0)
{
tp=P3;
switch(tp)
{
case 0xee:
k=0;
break;
case 0xde:
k=1;
break;
case 0xbe:
k=2;
break;
case 0x7e:
k=3;
break;
}
while(tp!=0xf0)
{
tp=P3;
tp=tp&0xf0;
}
display(k);
}
}
P3=0xfd;
tp=P3;
tp=tp&0xf0;
if(tp!=0xf0)
{
dms(10);
tp=P3;
tp=tp&0xf0;
if(tp!=0xf0)
{
tp=P3;
switch(tp)
{
case 0xed:
k=4;
break;
case 0xdd:
k=5;
break;
case 0xbd:
k=6;
break;
case 0x7d:
k=7;
break;
}
while(tp!=0xf0)
{
tp=P3;
tp=tp&0xf0;
}
display(k);
}
}
P3=0xfb;
tp=P3;
tp=tp&0xf0;
if(tp!=0xf0)
{
dms(10);
tp=P3;
tp=tp&0xf0;
if(tp!=0xf0)
{
tp=P3;
switch(tp)
{
case 0xeb:
k=8;
break;
case 0xdb:
k=9;
break;
case 0xbb:
k=10;
break;
case 0x7b:
k=11;
break;
}
while(tp!=0xf0)
{
tp=P3;
tp=tp&0xf0;
}
display(k);
}
}
}
void dms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
while(1)
{
m();
}
}
|
|