51单片机矩阵按键程序

 时间:2026-02-13 16:49:34

1、下述为程序:

#include <reg51.h>#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]; //显示数字 }}

  • 555定时器的作用(数字电路)
  • 如何判断反馈类型
  • 555定时器如何实现多谐振荡
  • MATLAB怎么安装
  • Quartus怎样编译并下载程序
  • 热门搜索
    平乐古镇旅游攻略 保定旅游局 东钱湖旅游攻略 华山旅游地图 日本名古屋旅游攻略 山东半岛旅游 秦皇岛旅游 香港旅游购物攻略 黑瞎子岛旅游 普陀旅游