专门做pp他的网站WordPress十大免费CMS主题
专门做pp他的网站,WordPress十大免费CMS主题,网站的首屏 一屏 二屏是什么意思,no7wordpress矩阵键盘 矩阵键盘是一种常用于电子设备中的输入设备#xff0c;其原理是利用行和列的交叉点来识别按键输入。矩阵键盘通常由多个按键排列成行和列的形式组成#xff0c;通过按下某个按键可以在对应的行和列交叉点上产生电路连接。 在矩阵键盘中#xff0c;每个按键都被安排… 矩阵键盘 矩阵键盘是一种常用于电子设备中的输入设备其原理是利用行和列的交叉点来识别按键输入。矩阵键盘通常由多个按键排列成行和列的形式组成通过按下某个按键可以在对应的行和列交叉点上产生电路连接。 在矩阵键盘中每个按键都被安排在一个矩阵的交叉点上按下某个按键会使得对应行和列之间的电路连接。因此通过扫描矩阵键盘的每一行和列可以检测到哪个按键被按下。这种扫描过程可以通过微处理器或控制器来完成一旦检测到按键输入就可以进行相应的操作或数据采集。 总的来说矩阵键盘的原理是基于行和列的交叉点上的电路连接来识别按键输入通过扫描矩阵键盘的行和列可以检测到按键的输入从而实现数据输入和控制操作。 按钮的工作原理 51单片机上矩阵键盘的原理图 矩阵键盘使用的是并行的IO口独立键盘使用的是单个的IO口 读取通过的电压当按键按下的IO口会的电平会被拉低当检测到电压为0V的时候判断键盘被按下当我们的手松开的时候检测键盘没有按下电平回到5V。
按键的抖动问题需要在段选的后面加延时 eg1:按单片机第一个按键实现数字自加效果按第二个按键的时候实现数字自减效果
#include REGX52.H
#include main.h
#include INTRINS.H
#define unit unsigned int
#define uchar unsigned char
sbit beep P2^3;
sbit wei P2^7; // 位选择器
sbit duan P2^6; // 段选择器
sbit key_S2 P3^0; // P30的IO口独立按键S2
sbit key_S3 P3^1; // 第二个独立按键
uchar number;
//数组的定义
unsigned char code leddata[]{ 0x3F, //00x06, //10x5B, //20x4F, //30x66, //40x6D, //50x7D, //60x07, //70x7F, //80x6F, //90x00 //自定义};
// 功能函数
void diaplay(uchar i){uchar bai,shi,ge;// 计算个位10位和百位bai i / 100; // 211 /100 2shi i % 100 / 10; // 211 % 100 / 10 1;ge i % 10; // 211 % 10
}
void main(){// 打开位锁存器wei 1;P0 0xFE; // 高电平的16进制位0x06//关闭位锁存器wei 0;while(1){ if(key_S2 0){Delay(20); // 按键抖动的消除if(key_S2 0){number;if(number 10){number 0;duan 1;P0 leddata[number]; duan 0;}// 添加松手检测while(!key_S2){}} }// 按独立按键相减的代码if(key_S3 0){Delay(20); // 按键抖动的消除if(key_S3 0){if(number 0){number--;}while(!key_S3);} }//松手之后刷新显示duan 1;P0 leddata[number]; duan 0; // 锁存段选数据 }
}矩阵键盘的识别 矩阵键盘与独立键盘的识别和扫描
矩阵键盘二进制取值原理图 eg2:矩阵键盘扫描的实现
#include REGX52.H
#include main.h
#include INTRINS.H
#define unit unsigned int
#define uchar unsigned char
sbit wei P2^7; // 位选择器
sbit duan P2^6; // 段选择器
uchar number;
uchar KeyValue;unsigned char code leddata[]{ 0x3F, //00x06, //10x5B, //20x4F, //30x66, //40x6D, //50x7D, //60x07, //70x7F, //80x6F, //90x77, //A0x7C, //B0x39, //C0x5E, //D0x79, //E0x71, //F0x76, //H0x38, //L0x37, //n0x3E, //u0x73, //P0x5C, //o0x40, //-0x00, //熄灭0x00 //自定义 };
// 键盘的列扫描
void ketScan(){/*4*4键盘的扫描*/P3 0xF0;if(P3 ! 0xF0){ // 判断键盘是否被按下Delay(10); // 软件消除抖动if(P3 ! 0xF0){ // 列扫描switch(P3){case 0xE0:KeyValue 0; // 表示的是第一列被按下break;case 0xD0:KeyValue 1; // 表示的是第二例被按下break;case 0xB0:KeyValue 2; // 表示的是第三列被按下break;case 0x70:KeyValue 3; // 表示的是第四列被按下break; }P3 0X0f;// 行扫描switch(P3){case 0x0e:KeyValue KeyValue; // 表示的是第一行被按下break;case 0x0D:KeyValue KeyValue 4; // 表示的是第二行被按下break;case 0x0b:KeyValue KeyValue 8; // 表示的是第三行被按下break;case 0x07:KeyValue KeyValue 12; // 表示的是第四行被按下break; }// 松手检测while(P3 ! 0X0f){}} }// 独立按键键盘的扫描P3 0XFF;if(P3 ! 0xff){Delay(10); // 软件消抖switch(P3){case 0xfe:KeyValue 16; // 表示的是S2被按下break;case 0xfD:KeyValue 17; // 表示的是S3被按下break;case 0xfb:KeyValue 18; // 表示的是S4被按下break;case 0xf7:KeyValue 19; // 表示的是S5被按下break; }while(P3 ! 0xff); // 默认会回到最后的值}}
void main(){// 打开位锁存器wei 1;// 高电平的16进制位0x06P0 0xFE; //关闭位锁存器wei 0;while(1){ketScan(); // 调用键盘扫描函数duan 1;P0 leddata[KeyValue]; // 显示按键的值duan 0;}}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89683.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!