单片机之利用键盘反转法控制8x8矩阵
显示0~F
#include#define uchar unsigned char #define uint unsigned int uchar num=0; uchar key=0; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; uchar row[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; uchar code tab[]={ 0x00,0x7E,0xFF,0xC3,0xC3,0xFF,0x7E,0x00, //0 0x00,0x00,0xC2,0xFF,0xFF,0xC0,0x00,0x00, //1 0x00,0xC6,0xE3,0xF3,0xDB,0xCF,0xC6,0x00, //2 0x00,0x42,0xDB,0xDB,0xDB,0xFF,0x66,0x00, //3 0x00,0x7C,0x62,0xFF,0xFF,0x60,0x60,0x00, //4 0x00,0x6F,0xEF,0xCD,0xCD,0xFD,0x79,0x00, //5 0x00,0x7E,0xFF,0xDB,0xDB,0xFB,0x72,0x00, //6 0x00,0x03,0x03,0xE3,0xFF,0x1F,0x03,0x00, //7 0x00,0xFF,0xFF,0xDB,0xDB,0xFF,0xFF,0x00, //8 0x00,0x4E,0xDF,0xDB,0xDB,0xFF,0x7E,0x00, //9 0x20,0x10,0x18,0x14,0x18,0x10,0x20,0x00, //A 0x00,0x00,0x7E,0x52,0x52,0x7E,0x00,0x00, //B 0x00,0x00,0x7E,0x42,0x42,0x42,0x00,0x00, //C 0x00,0x00,0x7E,0x42,0x42,0x42,0x3c,0x00, //D 0x00,0x00,0x7E,0x52,0x52,0x52,0x52,0x00, //E 0x00,0x00,0x7E,0x0A,0x0A,0x0A,0x0A,0x00, //F }; void display(uchar Duan_value); void Delay(uchar t); void key_scan(); void main() { while(1){ int i=0; display(key); key_scan(); for(i=8*num;i<8*(num+1);i++) { P2=row[i-8*num]; P0=tab[i]; Delay(1); } } } void delay(uchar t){uchar x,y;for(x=t;t>0;t--)for(y=111;y>0;y--);} void display(uchar value){ P3=table[value]; } void key_scan(){ uchar m0,m1; uchar temp; P1=0xf0; temp=P1; if(temp!=0xf0) { delay(10); if(temp!=0xf0){ m0=temp; P1=0x0f; temp=P1; if(temp!=0x0f){ m1=temp; temp=m0|m1; } switch(temp){ case 0xee:key=0;num=0; break; case 0xde:key=1;num=1; break; case 0xbe:key=2;num=2; break; case 0x7e:key=3;num=3; break; case 0xed:key=4;num=4; break; case 0xdd:key=5;num=5; break; case 0xbd:key=6;num=6; break; case 0x7d:key=7;num=7; break; case 0xeb:key=8;num=8; break; case 0xdb:key=9;num=9; break; case 0xbb:key=10;num=10;break; case 0x7b:key=11;num=11;break; case 0xe7:key=12;num=12;break; case 0xd7:key=13;num=13;break; case 0xb7:key=14;num=14;break; case 0x77:key=15;num=15;break; } do{ temp=P1; temp&=0x0f; }while(temp!=0x0f); } } }



