改了,你試試。
- #include<reg52.h>
- unsigned char s[]={
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71,0x40};
- unsigned char num=16;
- void delay(unsigned int n)
- {
- unsigned int i=0,j=0;
- for (i=0;i<n;i++)
- {
- for (j=0;j<120;j++);
- }
- }
- void display()
- {
- P2=s[num];
- }
- void key_scan()
- {
- P1=0xf0;
- if(P1!=0xf0)
- {
- delay(20);
- if(P1!=0xf0)
- {
- num=P1;
- num|=0x0f;
- P1=num;
- switch(P1)
- {
- case 0xee: num= 0; break;
- case 0xde: num= 1; break;
- case 0xbe: num= 2; break;
- case 0x7e: num= 3; break;
- case 0xed: num= 4; break;
- case 0xdd: num= 5; break;
- case 0xbd: num= 6; break;
- case 0x7d: num= 7; break;
- case 0xeb: num= 8; break;
- case 0xdb: num= 9; break;
- case 0xbb: num=10; break;
- case 0x7b: num=11; break;
- case 0xe7: num=12; break;
- case 0xd7: num=13; break;
- case 0xb7: num=14; break;
- case 0x77: num=15; break;
- }
- display();
- P1=0xff;
- while(P1!=0xff);
- }
- }
- }
- void main()
- {
- display();
- while(1)
- {
- key_scan();
- }
- }
復制代碼 |