免费关键词排名优化软件,seo是什么专业,树莓派 wordpress,网盟官方网站目录 前言 一、矩阵键盘 1、矩阵键盘原理#xff1a; 2、矩阵键盘原理图 二、单片机原理图绘制 1、所需元件名称 2、绘制原理图 三、编写程序 总结 前言
今天我们来学习如何通过AT89C52上的矩阵按键来控制数码管显示对应字母或者数字#xff0c;期间我们用到的软件有proteus… 目录 前言 一、矩阵键盘 1、矩阵键盘原理 2、矩阵键盘原理图 二、单片机原理图绘制 1、所需元件名称 2、绘制原理图 三、编写程序 总结 前言
今天我们来学习如何通过AT89C52上的矩阵按键来控制数码管显示对应字母或者数字期间我们用到的软件有proteus和keil两个软件欢迎大家提问已经寻找错误请大家点个关注和收藏后续还会更新。 一、矩阵键盘
1、矩阵键盘原理
矩阵键盘是由8个io口对16个按键进行读取的。咱们最常用的方法是行列扫描可以减小io口的使用有效的提高了io口的利用率。其中4X4矩阵式按键中4条I/O线作为行线4条I/O口作为列线行线和列线每个交叉点上设置一个按键这样咱们就能得到一个4X4的矩阵键盘了。 2、矩阵键盘原理图 上图为4X4矩阵按键的原理图咱们画原理图时可以参考此原理图进行绘制。
对矩阵键盘读取的方法有两种分别是1行列式2线翻式。
今天咱们用到的是行列式其具体检测原理如下
行列式检测时先控制I/O口对第一行输出低电平其余行都为高电平然后立即通过检测控制列的I/O口是否有低电平。假设单片机控制I/O口对第一行输出低电平通过检测发现第三列的I/O口发现低电平这样咱们就知道第一行第三列的按键被按下。
二、单片机原理图绘制
1、所需元件名称
proteus原理图中名称对应
AT89C52——52单片机芯片
BUTTON——按钮复位按键
CAP——无极性电容
CAP-ELEC——电解电容
CAP-POL——极性电容
CRYSTAL——晶振
RES——电阻
RESPACK-8——排阻
7SEG-MPX1-CA——单个数码管
以上就是我们这次设计需要用到的所有元器件接下来我们就需要创建新工程然后在右面添加元器件进行绘制。
2、绘制原理图
首先咱们按照上面给出的原理图画出4X4矩阵按键原理图。 这里我是通过P1口对矩阵按键进行检测的。
下图是当我按下第三行第三列时的现象。 然后我们就可以将数码管、复位电路和时钟电路加入咱们的原理图中最终如下图。 至此咱们的4X4矩阵按键原理图就画完了。
三、编写程序
咱们可以根据咱们画的原理图对程序进行编写。
咱们进行行列式扫描具体代码如下
对数码管数组变量定义注意这里我们用的是共阳极数码管此数组不能运用到共阴极数码管中还需另寻数组
u8 gsmg_code[17]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e};//共阳极按键检测函数
unsigned char key_rants_scan(void)
{unsigned char key_value0;KEY_CONTROL0x77;KEY_CONTROL0xfe;//将第一行置低电平if(KEY_CONTROL!0xfe){delay(1000);switch(KEY_CONTROL)//检测列是否有低电平{case 0xee:key_value1;break;case 0xde:key_value2;break;case 0xbe:key_value3;break;case 0x7e:key_value4;break;}}while(KEY_CONTROL!0xfe);KEY_CONTROL0xfd;//将第二行置低电平if(KEY_CONTROL!0xfd){delay(1000);switch(KEY_CONTROL){case 0xed:key_value5;break;case 0xdd:key_value6;break;case 0xbd:key_value7;break;case 0x7d:key_value8;break;}}while(KEY_CONTROL!0xfd);KEY_CONTROL0xfb;//将第三行置低电平if(KEY_CONTROL!0xfb){delay(1000);switch(KEY_CONTROL){case 0xeb:key_value9;break;case 0xdb:key_value10;break;case 0xbb:key_value11;break;case 0x7b:key_value12;break;}}while(KEY_CONTROL!0xfb);KEY_CONTROL0xf7;//将第四行置低电平if(KEY_CONTROL!0xf7){delay(1000);switch(KEY_CONTROL){case 0xe7:key_value13;break;case 0xd7:key_value14;break;case 0xb7:key_value15;break;case 0x77:key_value16;break;}}while(KEY_CONTROL!0xf7);return key_value;//返回按键检测结果
}
主函数
void main()
{unsigned char key0;while(1){keykey_rants_scan();if(key!0)SMG_A_DP_PORTgsmg_code[key-1];}
}
代码效果
咱们按下二行第三列的按钮 根据以上步骤咱们就可以得到想要的实验效果啦 总结
以上就是咱们的实验步骤在进行实验的时候要注意1数码管是共阴极还是共阳极2需要对按键进行消抖处理3I/O口对应哪一行哪一列4矩阵按键按下时对应的数字是多少。
通过porteus和keil对4X4矩阵按键进行了简单的设计。希望对你有帮助后续我还会持续更新帮忙点赞收藏欢迎大家来看。