多语言展示
当前在线:153今日阅读:176今日分享:34

51单片机矩阵按键程序

文中所述的单片机为STC单片机开发板具体型号我忘了。上面有一个4*4的矩阵按键可以通过程序来实现当依从左向右从上到下的次序按下时,第一个数码管显示0~15的十六进制数。下面就说一下具体实现
工具/原料
1

STC单片机 一个开发板

2

已破解的keil4编程工具

方法/步骤

下述为程序:#include #define Keyvalue P1   //按下的键的代号#define Digvalue P0   //用宏定义来定义一下数码管的发送数据端口typedef unsigned int ut;typedef unsigned char uc;ut k;sbit LSA=P2^2; //定义三八译码器的三个输入端口sbit LSB=P2^3;sbit LSC=P2^4;ut smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //从0~15的十六进制编码void delay(ut i)   //延时函数{ while(i) i--;}void anjian()  //检测按键是否按下,若按键按下则给k附上按下的键的序号{ ut a; Keyvalue=0x0f; if(Keyvalue!=0x0f) { delay(1000); if(Keyvalue!=0x0f) { Keyvalue=0x0f; switch(Keyvalue) { case(0x07):k=0;break; case(0x0b):k=1;break; case(0x0d):k=2;break; case(0x0e):k=3;break; } Keyvalue=0xf0; switch(Keyvalue) { case(0x70):k=k;break; case(0xb0):k=k+4;break; case(0xd0):k=k+8;break; case(0xe0):k=k+12;break; } } } while((a<50)&&(Keyvalue!=0x0f)) { delay(1000); a++; }}void main(){ LSA=0;  //让第一个数码管显示数字 LSB=0; LSC=0; while(1) { anjian(); Digvalue=smgduan[k]; //显示数字 }}

推荐信息