标题:
单片机数码管显示矩阵键盘按键的设计资料
[打印本页]
作者:
晏CC
时间:
2017-6-20 15:58
标题:
单片机数码管显示矩阵键盘按键的设计资料
数码管显示矩阵键盘按键的设计仿真原理图如下(proteus仿真工程文件可到本帖附件中下载):
0.png
(17.57 KB, 下载次数: 70)
下载附件
2017-6-20 18:24 上传
0.png
(50.85 KB, 下载次数: 111)
下载附件
2017-6-20 18:24 上传
单片机源程序如下:
#include<reg52.h>
char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x10};
idata dis_buff[1];
bit key_flag;
sbit cs=P2^0;
void delay(int k)
{
int m,n;
for(m=0;m<k;m++)
{
for(n=0;n<120;n++);
}
}
void display(void)
{
cs=0x01;
P0=tab[dis_buff[0]];
delay(1);
}
char ScanKey()
{
char temp,temp1,key;
temp=P1;
temp&=0x0f;
switch(temp)
{
case 0x0e:
{
P1=0xf0;
delay(100);
temp1=P1;
temp1&=P1;
switch(temp1)
{
case 0xe0:
key=0;
break;
case 0xd0:
key=1;
break;
case 0xb0:
key=2;
break;
case 0x70:
key=3;
break;
default:
key=0;
break;
}
P1=0x0f;
break;
}
case 0x0d:
{
P1=0xf0;
delay(100);
temp1=P1;
temp&=P1;
switch(temp1)
{
case 0xe0:
key=4;
break;
case 0xd0:
key=5;
break;
case 0xb0:
key=6;
break;
case 0x70:
key=7;
break;
default:
key=0;
break;
}
P1=0x0f;
break;
}
case 0x0b:
{
P1=0xf0;
delay(100);
temp1=P1;
temp1&=P1;
switch(temp1)
{
case 0xe0:
key=8;
break;
case 0xd0:
key=9;
break;
case 0xb0:
key=10;
break;
case 0x70:
key=11;
break;
default:
key=0;
break;
}
P1=0xf0;
break;
}
case 0x07:
{
P1=0xf0;
delay(100);
temp1=P1;
temp1&=P1;
switch(temp1)
{
case 0xe0:
key=12;
break;
case 0xd0:
key=13;
break;
case 0xb0:
key=14;
break;
case 0x70:
key=15;
break;
default:
key=0;
break;
}
P1=0x0f;
break;
}
default:
key=0;
break;
}
return(key);
}
void main(void)
{
char temp,keynum;
cs=0x10;
P1=0x0f;
while(1)
{
temp=P1;
temp&=0x0f;
if(temp==0x0f)
{
key_flag=0;
}
else
{
delay(10);
temp=P1;
temp&=0x0f;
}
if(temp==0x0f)
{
key_flag=0;
}
else
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
数码管显示矩阵键盘按键的设计.rar
(72.9 KB, 下载次数: 10)
2017-6-20 15:58 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1