#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit wela=P2^0; sbit dula=P2^1; uchar temp,num; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x7b,0x71 }; void delay(uchar z) { uchar x,y; for(x=z;x>0;x--) { for(y=110;y>0;y--); } } void main() { wela=1; P0=0x00; wela=0; dula=1; P0=0x00; dula=0; while(1) { P3=0xfe; temp=P3; temp=temp&0xf0; while(temp!=0xf0)//可改为if(temp!=0xf0) { delay(5); temp=P3; temp=temp&0xf0; while(temp!=0xf0)//可改为if(temp!=0xf0) { temp=P3; switch(temp) { case 0xee: num=3;break; case 0xde: num=2;break; case 0xbe: num=1;break; case 0x7e: num=0;break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } dula=1; P0=table[num]; dula=0; } } P3=0xfd; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case 0xed: num=7;break; case 0xdd: num=6;break; case 0xbd: num=5;break; case 0x7d: num=4;break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } dula=1; P0=table[num]; dula=0; } } P3=0xfb; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case 0xeb: num=11;break; case 0xdb: num=10;break; case 0xbb: num=9;break; case 0x7b: num=8;break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } dula=1; P0=table[num]; dula=0; } } P3=0xf7; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case 0xe7: num=15;break; case 0xd7: num=14;break; case 0xb7: num=13;break; case 0x77: num=12;break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } dula=1; P0=table[num]; dula=0; } } } }