基于51单片16路矩阵键盘抢答器 联系客服

发布时间 : 星期四 文章基于51单片16路矩阵键盘抢答器更新完毕开始阅读86de4f97bb4cf7ec4bfed044

附录3 程序清单

#include

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x84};

unsigned char code table0[]={0xfe,0xfd,0xfb,0xf7}; unsigned char code table2[]={0xef,0xdf,0xbf,0x7f}; unsigned char display[]={0,0,0,0}; void sw1(); void sw2(); void sw3(); void sw4();

void xianshi(); void init();

unsigned char temp,num2,x,x1,x2,a,count; int num,num1;

unsigned char key; unsigned char i,j; sbit k1=P1^0; sbit k2=P1^1; sbit k3=P1^2; sbit k4=P1^3; sbit sp=P1^4; sbit l1=P1^5; sbit l2=P1^6; sbit P3_4=P3^4; sbit P3_5=P3^5; sbit P3_6=P3^6; sbit P3_7=P3^7;

void delay(unsigned char z) {

unsigned char x,y; for(x=z;x>0;x--)

for(y=110;y>0;y--); }

void init() { a=0;

TMOD=0x01; TH0=(65536-10000)/256;

第22页

TL0=(65536-10000)%6; EA=1; ET0=1;

if(k1==0) {

delay(5); if(k1==0) {

num++; if(num==99) { num=0; }

num2=num; while(k1==0); } }

if(k2==0) { delay(5); if(k2==0) {

num--; if(num==-1) {

num=99; }

num2=num;

while(k2==0); } }

if(k3==0) {

delay(5); if(k3==0) {

x++; if(x==2) {

x=0; }

while(k3==0); } }

第23页

}

void keyboad() {

while(1) {

P3=0xff; P3_4=0; temp=P3;

temp=temp & 0x0f; if (temp!=0x0f) {

delay(5); temp=P3;

temp=temp & 0x0f; if (temp!=0x0f) {

temp=P3;

temp=temp & 0x0f; switch(temp) {

case 0x0e:

{delay(5);num1=4;l2=0;xianshi();} break; case 0x0d:

{delay(5);num1=3;l2=0;xianshi();}break; case 0x0b:

{delay(5);num1=2;l2=0;xianshi();}break; case 0x07:

{delay(5);num1=1;l2=0;xianshi();} break; } } }

P3=0xff; P3_5=0; temp=P3;

temp=temp & 0x0f; if (temp!=0x0f) {

delay(5); temp=P3;

temp=temp & 0x0f; if (temp!=0x0f) {

第24页

temp=P3;

temp=temp & 0x0f; switch(temp) {

case 0x0e:

{delay(5);num1=8;l2=0;xianshi();} break;

case 0x0d:

{delay(5);num1=7;l2=0;xianshi();} break; case 0x0b:

{delay(5);num1=6;l2=0;xianshi();} break; case 0x07:

{delay(5);num1=5;l2=0;xianshi();} break; } } }

P3=0xff; P3_6=0; temp=P3;

temp=temp & 0x0f; if (temp!=0x0f) {

delay(5); temp=P3;

temp=temp & 0x0f; if (temp!=0x0f) {

temp=P3;

temp=temp & 0x0f; switch(temp) {

case 0x0e:

{delay(5);num1=12;l2=0;xianshi();} break; case 0x0d:

{delay(5);num1=11;l2=0;xianshi();} break; case 0x0b:

{delay(5);num1=10;l2=0;xianshi();} break; case 0x07:

{delay(5);num1=9;l2=0;xianshi();} break; } } }

P3=0xff; P3_7=0; temp=P3;

第25页