单片机矩阵键盘检测程序并用数码管显示c语言程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#define uint16 unsigned int

#define uint8 unsigned char

//控制数码管段选锁存口

sbit P3_7=P3^7;

//共阴数码管显示

uint8 code table[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0}; uint8 temp;

uint16 num;

//延时子函数

void delay(uint16 z)

{

uint16 x,y;

for(x=z;x>0;x--)

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

}

//子函数声明

uint8 keyscan();

void display(uint8);

void main()

{

num=17;

while(1)

{

display(keyscan());

}

}

void display(uint8 num1) {

P2=0xf8;

P3_7=1;

P0=table[num1-1];

P3_7=0;

}

uint8 keyscan()

{

P1=0xfe;

temp = P1;

temp=temp&0xf0;

while(temp!=0xf0)

{

delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P1;

switch(temp)

{

case 0xee:num=1;break;

case 0xde:num=2;break;

case 0xbe:num=3;break;

case 0x7e:num=4;break;

default:break;

}

while(temp!=0xf0)//检测按键是否放开

{

temp=P1;

temp=temp&0xf0;

}

}

}

P1 = 0xfd;

temp = P1;

temp=temp&0xf0;

while(temp!=0xf0)

{

delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P1;

switch(temp)

{

case 0xed:num=5;break;

case 0xdd:num=6;break;

case 0xbd:num=7;break;

case 0x7d:num=8;break;

default:break;

}

while(temp!=0xf0)//检测按键是否放开

{

temp=P1;

temp=temp&0xf0;

}

}

}

P1 = 0xfb;

temp = P1;

temp=temp&0xf0;

while(temp!=0xf0)

{

delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P1;

switch(temp)

{

case 0xeb:num=9;break;

case 0xdb:num=10;break;

case 0xbb:num=11;break;

case 0x7b:num=12;break;

default:break;

}

while(temp!=0xf0)//检测按键是否放开

{

temp=P1;

temp=temp&0xf0;

}

}

}

P1 = 0xf7;

temp = P1;

temp=temp&0xf0;

while(temp!=0xf0)

delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P1;

switch(temp)

{

case 0xe7:num=13;break;

case 0xd7:num=14;break;

case 0xb7:num=15;break;

case 0x77:num=16;break;

default:break;

}

while(temp!=0xf0)//检测按键是否放开{

temp=P1;

temp=temp&0xf0;

}

}

return num; }

相关文档
最新文档