标题:
数码管显示4×4键盘矩阵按键 proteus仿真和单片机代码
[打印本页]
作者:
tianxiaode
时间:
2017-5-31 13:11
标题:
数码管显示4×4键盘矩阵按键 proteus仿真和单片机代码
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
仿真.png
(116.79 KB, 下载次数: 104)
下载附件
2017-5-31 13:10 上传
文件夹.png
(115.27 KB, 下载次数: 68)
下载附件
2017-5-31 13:10 上传
单片机代码:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define SCANPORT P1
sbit spk=P3^0;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,
0x71};
uchar uca_LineScan[4]={0xEF,0xDF,0xBF,0x7F};
uchar ucKeyScan()
{
uchar Temp=0;
uchar ucRow=0,ucLine=0;
for(ucLine=0;ucLine<4;ucLine++)
{
SCANPORT=uca_LineScan[ucLine];
Temp=SCANPORT & 0x0F;
if(Temp!=0x0F)
{
switch(Temp)
{
case 0x0E: ucRow=10;break;
case 0x0D: ucRow=20;break;
case 0x0B: ucRow=30;break;
case 0x07: ucRow=40;break;
default: ucRow=50;break;
}
break;
}
}
SCANPORT=0x0F;
return ucRow+ucLine+1;
}
void vKeyProcess(unsigned char ucKeyCode)
{
switch(ucKeyCode)
{
case 11:P0=table[0];spk=1;break; //'7'
case 12:P0=table[1];spk=1;break; //'8'
case 13:P0=table[2];spk=1;break;
case 14:P0=table[3];spk=1;break;
case 21:P0=table[4];spk=1;break; //'4'
case 22:P0=table[5];spk=1;break; //'5'
case 23:P0=table[6];spk=1;break;
case 24:P0=table[7];spk=1;break;
case 31:P0=table[8];spk=1;break; //'1'
case 32:P0=table[9];spk=1;break; //'2'
case 33:P0=table[10];spk=1;break;
case 34:P0=table[11];spk=1;break;
case 41:P0=table[12];spk=1;break; //'3'
case 42:P0=table[13];spk=1;break;
case 43:P0=table[14];spk=1;break; //'0'
case 44:P0=table[15];spk=1;break; //'+'
default:break;
}
}
void main()
{
spk=0;
P0=0;
while(1)
{
vKeyProcess(ucKeyScan());
spk=0;
}
}
复制代码
全部资料下载地址:
数码管显示4×4键盘矩阵按键.rar
(57.22 KB, 下载次数: 64)
2017-5-31 13:11 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
csz9981
时间:
2017-5-31 21:49
数码管显示4×4键盘矩阵按键 proteus仿真和单片机代码
作者:
大昊锅
时间:
2018-4-9 12:40
为啥运行不出来?proteus图有问题么
作者:
aa769136240
时间:
2018-5-17 20:56
这个proteus是不是不完全
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1