#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit du = P2^6; //段選
sbit we = P2^7; //位選
uint k;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint z)
{ uint x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0; y--);
}
void display(uint k)
{
uchar bai,shi,ge;
bai = k / 100;
shi = k % 100 / 10;
ge = k % 10;
P0 = 0xff;
we = 1;
P0 = 0xfe;
we = 0;
du = 1;
P0 = table[bai];
du = 0;
delay(5);
P0 = 0xff;
we = 1;
P0 = 0xfd;
we = 0;
du = 1;
P0 = table[shi];
du = 0;
delay(5);
P0 = 0xff;
we = 1;
P0 = 0xfb;
we = 0;
du = 1;
P0 = table[ge];
du = 0;
delay(5);
}
void keyscan()
{ P3 = 0xf0;
if(P3 != 0xf0)
{ delay(10);//軟件消抖
if(P3 != 0xf0)
{
switch(P3)
{ case 0xe0: k = 1; break;
case 0xd0: k = 2; break;
case 0xb0: k = 3; break;
case 0x70: k = 4; break; }
}
P3 = 0x0f;
switch(P3)
{ case 0x0e: k = k; break;
case 0x0d: k = k + 4; break;
case 0x0b: k = k + 8; break;
case 0x07: k = k + 12; break; }
while(P3 != 0x0f);//松手檢測
}
}
void main ()
{ while(1)
{ keyscan();
display(k*k);
}
}
|