4*4矩阵按键模块 4x4_key.h #ifndef _4X4_KEY_H_ #define _4X4_KEY_H_ #define key_row1 P10//#define key_row2 P11//#define key_row3 P12//#define key_row4 P13//#define key_col1 P14//#define key_col2 P15//#define key_col3 P16//#define key_col4 P17//unsigned charkey_scanf(...
4x4矩阵键盘共有16个按键,4个LED刚好可以显示16个二进制值(0-0x0F)。 矩阵键盘的按键检测是分阶段进行的,因此,程序的主体结构特别适合使用“状态机”设计模式。下列代码中,4个行I/O口的Label依次为R1:4,列I/O口为C1:4。首先定义状态结构体及3个实例: typedef struct { void (*enter)(); uint8_t (*...
code unsigned char KeyOut[4] = {0xef,0xdf,0xbf,0x7f}; //4X4按输出端控制 #define KEY P2 //P2口作为4*4矩阵键盘输入 /* **描述:新型4X4按键扫描程序 放在1ms-10ms中断内使用(十分稳定不需要再写消抖程序)**备注:按键弹起时 keyVal = 0 单键按下 keyVal 有16个值,你自己程序可以针对不...
1.行扫描式代码 1/*--- 2 按键扫描函数,返回扫描键值 3 ---*/4define Key P15unsignedcharKeyScan(void)//键盘扫描函数,使用行列逐级扫描法6{7unsignedcharVal;8Key=0xf0;//高四位置高,低四位拉低9if(Keyt!=0xf0)//判断是否有按键按下10{11DelayMs(10);//消抖12if(Key!=0xf0)//再次判断是否有...
接着编写列扫描的代码,这里的思想是,先扫描第一列,接着判断第一列有没有行被按下,有的话就可以直接定位到这一列的哪一行,其他4列逻辑一样,这样就可以定位到哪个按键按下了。 /*** *函数名:KEY_SCAN *功 能:4*4按键扫描 *返回值:0~16,对应16个按键*/charKEY_SCAN(void) ...
完整代码: int d=50; int v[]=new int[16]; void setup(){ size(200,200); for(int i=0;i<16;i++){v[i]=0;} v[2]=1; } void draw(){ background(255); for(int i=0;i<16;i++){ int c=i%4,r=i/4; if(v[i]==0){fill(200,100);} else{fill(0,0,255,100);} rec...
4×4矩阵按键: 源程序 #include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit we1=P2^0; sbit we2=P2^1; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; uchar num,temp,num1,ge,shi;...
4*4矩阵键盘控制LED显示,第一个按键控制一个LED点亮,第二个按键控制两个LED点亮……第十六个按键控制十六个LED点亮。 设计介绍 51单片机简介 51单片是一种低功耗、高性能CMOS-8位微控制器,具有8K可编程Flash存储器,使得51系列单片机为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。