- #include <STC15F2K60S2.H>
- #include <intrins.h>
- #include "GPIO.h"//里面是延時函數和初始化
- uc bs[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- /**********************
- 按鍵掃描
- **********************/
- ui keys_scanning ()
- {
- ui key_x,key_y,key;
- P1=0xf0;
- delay(1);
- if(P1 != 0xf0)
- {
- delay(1);
- P1=0xf0;
- delay(1);
- if(P1!=0xf0)
- {
- switch(P1)
- {
- case 0xe0:key_x=0;break;
- case 0xd0:key_x=1;break;
- case 0xb0:key_x=2;break;
- case 0x70:key_x=3;break;
- }
- P1=0x0f;
- delay(1);
- switch(P1)
- {
- case 0x07:key_y=0;break;
- case 0x0b:key_y=1;break;
- case 0x0d:key_y=2;break;
- case 0x0e:key_y=3;break;
- }
- }
- else
- {
- key=0;
- }
- }
- key = key_x*4+key_y;
- return(key);
- }
- /**********************
- 數碼管顯示
- **********************/
- void display(unsigned int shuzi)
- {
- P0=0x00;
- P3=bs[shuzi/1000%10];
- P0=0x10;
- delay(1);
- P0=0x00;
- P3=bs[shuzi/100%10];
- P0=0x20;
- delay(1);
- P0=0x00;
- P3=bs[shuzi/10%10];
- P0=0x40;
- delay(1);
- P0=0x00;
- P3=bs[shuzi%10];
- P0=0x80;
- delay(1);
- }
- /**********************
- 主函數
- **********************/
- void main()
- {
- IO_Itin();
- while(1)
- {
- display(keys_scanning());
- delay(5);
- }
- }
復制代碼
|