百度数据网站,wordpress添加注册页面模板,网站开发带后台,python适合网站开发吗1、按键介绍
按键管脚两端距离长的表示默认是导通状态#xff0c;距离短的默认是断开状态#xff0c; 如果按键按下#xff0c;初始导通状态变为断开#xff0c;初始断开状态变为导通 我们开发板是采用软件消抖#xff0c;一般来说一个简单的按键消抖就是先读取按键的状…1、按键介绍
按键管脚两端距离长的表示默认是导通状态距离短的默认是断开状态 如果按键按下初始导通状态变为断开初始断开状态变为导通 我们开发板是采用软件消抖一般来说一个简单的按键消抖就是先读取按键的状态如果得到按键按下之后延时 10ms再次读取按键的状态如果按键还是按下状态那么说明按键已经按下。其中延时10ms 就是软件消抖处理
2、独立按键
K1连在P3^1管脚 K2——P3^0, K3——P3^2, K4——P3^3 需求通过开发板上的独立按键 K1 控制 D1 指示灯亮灭 #include reg52.h typedef unsigned int u16; typedef unsigned char u8; void delay_10us(u16 ten_us){ while(ten_us--); } sbit LED1P2^0; //控制D1指示灯 sbit LED2P2^1; //控制D2指示灯 sbit LED3P2^2; //控制D3指示灯 sbit LED4P2^3; //控制D4指示灯 //使用宏定义的方法控制独立按键的键值 #define KEY1_PRESS 1 #define KEY2_PRESS 2 #define KEY3_PRESS 3 #define KEY4_PRESS 4 //没有任何按键被按下 #define KEY_UNPRESS 0 //定义按键对应的管脚口 sbit KEY1P3^1; sbit KEY2P3^0; sbit KEY3P3^2; sbit KEY4P3^3; //封装函数实现按键返回一个键值 //定义一个只能传递0或1的模式model //0单次扫描1连续扫描 u8 key_scan(u8 model){ //打一个标志 static u8 key1; //static 静态变量 if(model1){ key1; } if(key1(KEY10||KEY20||KEY30||KEY40)){ //消抖处理使用延迟操作 5ms~10ms delay_10us(1000); key0; //如果按键仍是按下状态说明信号稳定 if(KEY10){ return KEY1_PRESS; } else if(KEY20){ return KEY2_PRESS; } else if(KEY30){ return KEY3_PRESS; } else if(KEY40){ return KEY4_PRESS; } } else if(KEY11KEY21KEY31KEY41){//没有按键被按下 key1; return KEY_UNPRESS; } } void main(){ u8 value0; while(1){ valuekey_scan(0); if(valueKEY1_PRESS){ LED1!LED1; //delay_10us(50000); //加一下延时可以验证单次扫描和连续扫描的情况 } else if(valueKEY2_PRESS){ LED2!LED2; } else if(valueKEY3_PRESS){ LED3!LED3; } else if(valueKEY4_PRESS){ LED4!LED4; } } } 3、矩阵按键 矩阵键盘两端都与单片机 I/O 口相连因此在检测时需编程通过单片机 I/O 口送出低电平。 4*4 矩阵键盘的工作原理和检测方法。开发板上将 16 个按键排成 4 行 4 列第一行将每个按键的一端连接在一起构成行线第一列将每个按键的另一端连接在一起构成列线这样便一共有 4 行 4 列共 8 根线我们将这 8 根线连接到单片机的 8 个 I/O 口上通过程序扫描键盘就可检测 16 个键。 单片机 I/O 口送出低电平检测方法有多种最常用的是行列扫描法和线翻转法。 1行列扫描法检测时先送一列为低电平其余几列全为高电平(此时我们确定了列数)然后立即轮流检测一次各行是否有低电平若检测到某一行为低电平(这时我们又确定了行数)则我们便可确认当前被按下的键是哪一行哪一列的 2线翻转法就是使所有行线为低电平时检测所有列线是否有低电平如果有就记录列线值然后再翻转使所有列线都为低电平检测所有行线的值由于有按键按下行线的值也会有变化记录行线的值。从而就可以检测到全部按键 3.1行列扫描法 3.2线翻转法