基于AT89S51的4×4 矩阵键程序设计

用at89s51 的并行口p1 接4×4 矩阵键盘,以p3.0-p3.3
作输入线,以p3.4-p3.7 作输出线;在数码管上显示数字按键的“0-9”序号,其它按键显示0。
原理分析:4x4矩阵键盘每个按键都有它的行值和列值,当每个按键的行值为低电平,列值为高电平时,按键为未按下状态。判断是否有按钮按下时,先让这一行通低电平,再通过扫描每一列来判断是否被按下(逐列使列值通高电平),如果被按下,那么这一列的电平此时会成为低电平;如果这一列在扫描时为低电平,说明这一列有按键被按下,而行值是每次在判断列值前就确定的,这样就能知道到底是哪一个按键被按下了。
基本流程: 设置第一行为低电平——>扫描每一列(设置为高电平),判断是否为0——>确定是否有按键按下——>设置第二行为低电平——>扫描第二列......(如此循环到第四行,再从第一行重新开始)
编译环境:keil c51 v3
仿真软件:proteus 7.4
单片机类型:at89c52
数码管类型:7seg-mpx1-cc (cc——共阴数码管)
键盘类型:keypad-samllcalc
单片机上的程序如下:
#include 《reg52.h》
char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
sbit row1=p3^4;
sbit row2=p3^5;
sbit row3=p3^6;
sbit row4=p3^7;
int temp;
int key;
//void delay500ms();
void delay20ms();
void main()
{
p1=table[0];
while(1)
{
p3=0xff;
row1=0;
temp=p3;
temp=temp&0x0f;
if(temp!=0x0f)
{
delay20ms();
temp=p3;
temp=temp&0x0f;
if(temp!=0x0f)
{
switch(temp)
{
case 0x0e:
key=7;
break;
case 0x0d:
key=8;
break;
case 0x0b:
key=9;
case 0x07:
key=0;
}
p1=table[key];
}
}
p3=0xff;
row2=0;
temp=p3;
temp=temp&0x0f;
if(temp!=0x0f)
{
delay20ms();
temp=p3;
temp=temp&0x0f;
if(temp!=0x0f)
{
switch(temp)
{
case 0x0e:
key=4;
break;
case 0x0d:
key=5;
break;
case 0x0b:
key=6;
break;
case 0x07:
key=0;
}
p1=table[key];
}
}
p3=0xff;
row3=0;
temp=p3;
temp=temp&0x0f;
if(temp!=0x0f)
{
delay20ms();
temp=p3;
temp=temp&0x0f;
if(temp!=0x0f)
{
switch(temp)
{
case 0x0e:
key=1;
break;
case 0x0d:
key=2;
break;
case 0x0b:
key=3;
break;
case 0x07:
key=0;
break;
}
}
p1=table[key];
}
p3=0xff;
row4=0;
temp=p3;
temp=temp&0x0f;
if(temp!=0x0f)
{
delay20ms();
temp=p3;
temp=temp&0x0f;
if(temp!=0x0f)
{
switch(temp)
{
case 0x0e:
key=0;
break;
case 0x0d:
key=0;
break;
case 0x0b:
key=0;
break;
case 0x07:
key=0;
break;
}
}
p1=table[key];
}
}
}
/*
void delay500ms()
{
int i,j,k;
for( i=0;i《10/2;i++)
{
for(j=0;j《180;j++)
{
for(k=0;k《200;k++)
{
}
}
}
} */
void delay20ms()
{
int i,j;
for(i=0;i《36;i++)
{
for(j=0;j《200;j++)
{
}
}
}
电路图核心部分如下:

为什么电子设备开启护眼模式后,屏幕不是绿色却是黄色?
便携式负(氧)离子检测仪的工作原理及优势特点介绍
交流接触器的作用和工作原理 交流接触器的接线方法
AI是互联网下半场的黎明 只有百度华为真在做
5G技术精进以及政策不断加持,车联网将迎来千亿市场空间
基于AT89S51的4×4 矩阵键程序设计
iphoneSE二代,三月份唯一期待的手机
思博伦4G LTE测试解决方案
用SAA7111A设计模拟视频转换接口
塑壳断路器和空气开关的区别
有机电解质如何提升锂硫电池稳定性的技术研究分析
Excel中的一些概念
行业政策利好,陕西源杰科技迎广阔发展空间
工业电机驱动IGBT过流和短路保护的问题及处理方法
基美|新型小体积电感器磁芯
实验室ph计如何校准_ph计校准液配制_ph计的校准方法及步骤
三星note7彻底推出历史舞台,和炸弹说拜拜
USB4的传输速度高达40Gbps,仅支持Type-C
诺基亚发力智能电视,4K分辨率的LED面板有保障
电容充放电过程中时间常数对电路的影响