#include<reg51.h>
#define uint unsigned int #define uchar unsigned char
sbit duan = P2^6; sbit wei = P2^7;
uchar number,temp,num;
uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00, };
uchar keynum(); void Delay(uint z); void init(); void dispase(uchar num);
void main() { init(); while(1) { dispase(keynum()); } }
void Delay(uint z) { uint x,y; for(x = z;x > 0;x --) for(y = 110;y > 0;y --); }
uchar keynum() { P3 = 0xfe; temp = P3; temp = temp & 0xf0; while(temp != 0xf0) { Delay(5); temp = P3; temp = temp & 0xf0; while(temp != 0xf0) { temp = P3; switch(temp) { case 0xee : number = 0; break; case 0xde : number = 1; break; case 0xbe : number = 2; break; case 0x7e : number = 3; break; } while(temp !=0xf0) { temp = P3; temp = temp & 0xf0; } } } 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 : number = 4; break; case 0xdd : number = 5; break; case 0xbd : number = 6; break; case 0x7d : number = 7; break; } while(temp !=0xf0) { temp = P3; temp = temp & 0xf0; } } } 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 : number = 8; break; case 0xdb : number = 9; break; case 0xbb : number = 10; break; case 0x7b : number = 11; break; } while(temp !=0xf0) { temp = P3; temp = temp & 0xf0; } } } 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 : number = 12; break; case 0xd7 : number = 13; break; case 0xb7 : number = 14; break; case 0x77 : number = 15; break; } while(temp != 0xf0) { temp = P3; temp = temp & 0xf0; } } } return number; }
void init() { number = 16;
duan = 1; P0 = 0x00; duan = 0; wei = 1; P0 = 0xc0; wei = 0; }void dispase(uchar num) { duan = 1; P0 = table[num]; duan = 0; }