您现在的位置是: 首页 > 系统优化 系统优化

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的程序的分析,有谁帮我分析一下这个状态机的程序啊

4x4矩阵键盘驱动程_4*4矩阵键盘怎么接线

#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···类推