标题:
单片机4X4矩阵键盘扫描的proteus仿真和程序源码
[打印本页]
作者:
云之凡
时间:
2018-7-27 07:16
标题:
单片机4X4矩阵键盘扫描的proteus仿真和程序源码
4X4矩阵键盘扫描仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(43.54 KB, 下载次数: 46)
下载附件
2018-7-27 23:56 上传
0.png
(49.96 KB, 下载次数: 41)
下载附件
2018-7-27 23:56 上传
单片机源程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define SCANPORT P1
sbit spk=P2^3; //按键提示音驱动端口
uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f, //数码管显示代码
0x77,0x7c,0x39,0x5e,0x79,
0x71};
uchar a_LineScan[4]={0xEF,0xDF,0xBF,0x7F}; //列扫描赋值
void delay(uchar x)
{
uchar j;
while(x--)
for(j=110;j>0;j--);
}
uchar KeyScan() //扫描函数
{
uchar Temp=0;
uchar i=0,j=0;
for(i=0;i<4;i++)
{
SCANPORT=a_LineScan[i]; //定义扫描端口
Temp=SCANPORT & 0x0F; //取低四位扫描信号
if(Temp!=0)
{
delay(10); //消抖函数
if(Temp!=0)
{
if(Temp!=0x0F) //扫描按键是否按下
{
switch(Temp)
{
case 0x0E: j=10;break; //第一列
case 0x0D: j=20;break; //第二列
case 0x0B: j=30;break; //第三列
case 0x07: j=40;break; //第四列
default: j=50;break; //输入错误
}
break;
}
}
}
}
return i+j+1; //送出返回值
}
void KeyProcess(unsigned char KeyCode) //数码管显示函数
{
switch(KeyCode)
{ //j=10
case 11:P0=table[0];spk=1;break; //'0'
case 12:P0=table[1];spk=1;break; //'1'
case 13:P0=table[2];spk=1;break;
case 14:P0=table[3];spk=1;break;
//j=20
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;
//j=30
case 31:P0=table[8];spk=1;break; //'8'
case 32:P0=table[9];spk=1;break; //'9'
case 33:P0=table[10];spk=1;break;
case 34:P0=table[11];spk=1;break;
//j=40
case 41:P0=table[12];spk=1;break; //'C'
case 42:P0=table[13];spk=1;break; //'d'
case 43:P0=table[14];spk=1;break;
case 44:P0=table[15];spk=1;break;
default:break; //无法识别
}
}
void main()
{
spk=0; //扬声器初始化
P0=0;
while(1)
{
KeyProcess(KeyScan());
spk=0; //复位扬声器
}
}
复制代码
所有资料51hei提供下载:
20161111144-李作鑫4×4键盘矩阵按键.rar
(66.55 KB, 下载次数: 130)
2018-7-27 07:15 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
zwmwcj
时间:
2020-3-24 09:00
谢谢学习
作者:
yayayunyun
时间:
2022-1-17 10:50
你好!请问一下,颜色怎么修改的?我试过了修改背景,但是没有实现
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1