|
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit P27=P2^7; //位顯示,最右邊
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};
- //code 的作用是把s8存到8K的ROM中
- //共陽數碼光顯示字型數碼組 1011 1111 “-”
- void delay1ms(uchar n) //1ms基準延時程序
- {
- uchar i;
- while(n--)
- for(i=0;i<115;i++);
- }
- void display(uchar i)
- {
- P27=0;
- P0=table[i];
- }
- void main()
- {
- uchar temp;
- display(16); //初始顯示“-”
- while(1){
- P1=0xff; //先向P1口寫1,端口讀狀態
- P1=0xf0;
- temp=P1; //按鍵
- if(temp!=0xf0){
- delay1ms(15); //延時消陡
- if(temp!=0xf0){ //掃描
- P1=0xfe;
- temp=P1;
-
- switch(temp)
- {
- case 0xee:display(0);break;
- case 0xde:display(1);break;
- case 0xbe:display(2);break;
- case 0x7e:display(3);break;
- }
- P1=0xfd;
- temp=P1;
- switch(temp)
- {
- case 0xed:display(4);break;
- case 0xdd:display(5);break;
- case 0xbd:display(6);break;
- case 0x7d:display(7);break;
- }
- P1=0xfb;
- temp=P1;
- switch(temp)
- {
- case 0xeb:display(8);break;
- case 0xdb:display(9);break;
- case 0xbb:display(10);break;
- case 0x7b:display(11);break;
-
- }
- P1=0xf7;
- temp=P1;
- switch(temp)
- {
- case 0xe7:display(12);break;
- case 0xd7:display(13);break;
- case 0xb7:display(14);break;
- case 0x77:display(15);break;
- }
- }
- }
- }
- }
復制代碼
|
|