- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- //共阳数码管编码表
- uchar code table[] =
- {0xc0,0xf9,0xa4,0xb0,
- 0x99,0x92,0x82,0xf8,
- 0x80,0x90,0x88,0x83,
- 0xc6,0xa1,0x86,0x8e};
- void delay(uint x)
- {
- uint i,j;
- for(i = 0; i < x; i++)
- {
- for(j = 0; j < 110; j++);
- }
- }
- uchar getKey()
- {
- uchar x = 0;
- uchar y = 0;
- uchar result = 0;
- P2 = 0x0f;
- if (P2 != 0x0f)
- {
- delay(20);
- switch(P2)
- {
- case 0x0e: x = 0; break;
- case 0x0d: x = 1; break;
- case 0x0b: x = 2; break;
- case 0x07: x = 3; break;
- default: break;
- }
- delay(10);
- P2 = 0xf0;
- if (P2 != 0xf0)
- {
- delay(20);
- switch(P2)
- {
- case 0xe0: y = 0; break;
- case 0xd0: y = 1; break;
- case 0xb0: y = 2; break;
- case 0x70: y = 3; break;
- default: break;
- }
- }
- }
- return x*4 + y;
- }
- void display(uchar num)
- {
- P0 = table[num];
- }
- void main()
- {
- uchar keyValue;
- while(1)
- {
- keyValue = getKey();
- display(keyValue);
- }
- }
-
复制代码
|