您现在的位置是: 首页 > 系统优化 系统优化
4x4矩阵键盘驱动程_4*4矩阵键盘怎么接线
tamoadmin 2024-09-04 人已围观
简介1.4x4矩阵键盘的工作原理是什么?2.C51单片机4X4矩阵键盘检测程序问题3.51单片机 如何4*4矩阵键盘输入按键 继电器输出信号4.有关4X4矩阵键盘FPGA的程序的分析,有谁帮我分析一下这个状态机的程序啊#include?<REGX51.H>#define?uchar?unsigned?char#define?uint?unsigned?intuchar?Bits=0,Ten
1.4x4矩阵键盘的工作原理是什么?
2.C51单片机4X4矩阵键盘检测程序问题
3.51单片机 如何4*4矩阵键盘输入按键 继电器输出信号
4.有关4X4矩阵键盘FPGA的程序的分析,有谁帮我分析一下这个状态机的程序啊
#include?<REGX51.H>
#define?uchar?unsigned?char
#define?uint?unsigned?int
uchar?Bits=0,Ten=0,Hundred=0,Thousand=0;
uchar?code?ledshow[16]={?0x3F,/*0*/
0x06,/*1*/
0x5B,/*2*/
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F,/*8*/
0x6F,/*9*/
0x77,/*A*/
0x7C,/*b*/
0x39,/*C*/
0x5E,/*d*/
0x79,/*E*/
0x71,/*F*/} ;?//共阴数码管代码
uchar?code?jz_code[17]={0xff,
0xee,0xed,0xeb,0xe7,
0xde,0,0xdb,0xd7,
0xbe,0xbd,0xbb,0xb7,
0x7e,0x7d,0x7b,0x77};//键盘代码
void?delay(unsigned?char?a) ?//延时
{
unsigned?char?i;
while(a--)
for(i=100;i>0;i--);
}
uchar?kbscan(void)//键盘扫描
{
unsigned?char?hang,lie,key;P1=0xf0;
delay(5);
lie=P1;
P1=0x0f;
delay(5);
hang=P1;
for(key=16;key>0;key--)
{
?if(jz_code[key]==(hang|lie))?break;
}
return?(key);
}
void?data_l(void) ?//左移
{
uchar?i; static?keytemp=0; i= kbscan(); if(i!=0) { if(!(keytemp==i)) { keytemp=i; Thousand=Hundred;?//千位 Hundred=Ten;//百位 Ten=Bits; ?//十位 Bits=i-1; ?//个位 } } else?keytemp=0;}
void?display(void)//数码管显示,调试方法:数码管间隔跳动函数中?delay(5);四个,调小
{
data_l(); P0=ledshow[Thousand]; P2_0=0; delay(5); P2_0=1; P0=ledshow[Hundred]; P2_1=0; delay(5); P2_1=1; P0=ledshow[Ten]; P2_2=0; delay(5); P2_2=1; P0=ledshow[Bits]; P2_3=0; delay(5); P2_3=1;}
void?main(void)
{
P2=0xff; while(1) {display();
}}
4x4矩阵键盘的工作原理是什么?
给P1赋值0xf0,这时P1^4,P1^5,P1^6,P1^7为高电平,P1^0,P1^1,P1^2,P1^3为低电平。如果这时候有按键按下那么P1^4,P1^5,P1^6,P1^7就有一个会变成低电平。因此P1的值就不等于0xf0,这是就可以判断有按键按下。
4x4矩阵键盘的工作原理是在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,通过读入输入线的状态就可得知是否有键被按下。
扩展资料:
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,用矩阵法来做键盘是合理的。
百度百科-矩阵键盘
C51单片机4X4矩阵键盘检测程序问题
4x4矩阵键盘的工作原理是在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,通过读入输入线的状态就可得知是否有键被按下。
扩展资料:
作为单片机外部设备,在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。矩阵式结构的键盘比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。
矩阵式结构的键盘比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
51单片机 如何4*4矩阵键盘输入按键 继电器输出信号
单片机4X4矩阵键盘扫描检测程序 原理是
主程序 每次 调用 键盘扫描检测程序,程序进行 每一行的检测,如
第一行 P3口被赋值0xfe后,再读取 P3口的 值,等于0xfe 表示没有键按下,不等则有键按下,
第二行、第三行、第三行 一样,有键按下 把键值保存,接下来就是判断 是 那个按键按下的,
每个按键的键值 是 不一样的 如
第一行 没有按键按下 键值 是 0xfe ,有按键是 0xee 或者 0xde 、0xbe、0x7e
第二行 没有按键按下 键值 是 0xfd ,有按键是 0xed 或者 0 、0xbd、0x7d
第三行 没有按键按下 键值 是 0xfb ,有按键是 0xeb 或者 0xdb 、0xbb、0x7b
第三行 没有按键按下 键值 是 0xf7 ,有按键是 0xe7 或者 0xd7 、0xb7、0x77
有关4X4矩阵键盘FPGA的程序的分析,有谁帮我分析一下这个状态机的程序啊
...........
Inter0_process()?interrupt?2//外部中断1 { Key_scan();//你的键盘扫描程序(中断服务程序),一旦触发中断,将运行至本段。 }//主程序?
main(){?
........... ......................
EX1=1;//开中断一?P3.3 IT1=1;//下降沿触发 ET1=1; EA=1;? ........... ...........}
注:图中的键盘接法都是独立按键接发,
矩阵键盘没有见过能直接触发中断的。
是应该还有col的输出,这才是整个扫描程序的重点。如果扫描的原理懂了的话,程序好像也没这么难理解啊,简单讲一下,在NO_KEY_PRESSED,col输出0000,如果有按键按下,当前行的row连接到col,则按下的那一行电平为0,转到SCAN_COL0。行值由row可知,开始逐列扫描以确定列值;在SCAN_COL0状态,col输出1000,若是第一列的按键,则row应该变为1111,即可确定是第一列,否则转到第二列扫描,col输出0100···类推