switch按键扫描数码管显示0-F_AD,Allegro,pads,PCB设计,电源模块,硬件,stm32,嵌入式,单片机,小北设计 Allegro,pads,PCB电路板设计,硬件及芯片资料分享—小北设计

switch按键扫描数码管显示0-F

51单片机 by AD,Allegro,pads,PCB设计,电源模块,硬件,stm32,嵌入式,单片机,小北设计
通过网盘分享的文件:switch数码管显示0-F

链接: https://pan.baidu.com/s/169Vl36wDqOxhIE4uGpIrzA 提取码: unkk

//说明:按下任意一按键时,数码管会显示它在键盘矩阵上的序号0-F,
//扫描程序首先判断按键发生在哪一列,然后根据所发生的行附加
//不同的值,从而得到键盘按键序号。
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code shu_zi[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,
0X88,0X83,0XC6,0XA1,0X86,0X8E,0X00};
uchar wu_jian_hao=16,jian_hao=16;
void yan_shi(uchar ms)
{
uchar i,j;
for(i=0;i<ms;i++)
for(j=0;j<110;j++);
}
void anjian_samao()
{
uchar an_jian_wei;
P1=0x0f;
yan_shi(1);
an_jian_wei=P1^0x0f;
switch(an_jian_wei)
{
case 1:  jian_hao=0;break;
case 2:  jian_hao=1;break;
case 4:  jian_hao=2;break;
case 8:  jian_hao=3;break;
default: jian_hao=16;//当没有按键,按下。jian_hao=16;
//default 语句既可以放在 switch 结构结尾处,也可以放在开头处,还可以放在中间位置。
}  
P1=0xf0;
yan_shi(1);
an_jian_wei=P1^0xF0;//^按位异或 例如:不同为1,相同为0: 1^1=0, 1^0=1, 0^1=1, 0^0=0
switch(an_jian_wei)
{
  case 0X10: jian_hao+=0;break;//可以展是jian_hao=jian_hao+0
  case 0X20: jian_hao+=4;break;//
  case 0X40: jian_hao+=8;break;
  case 0X80: jian_hao+=12;
}
}
void main()
{
P1=0xFF;
while(1)
{
  P1=0XF0;
   if(P1!=0xf0) 
{
anjian_samao();
P1=0xf0;
while(P1==0xf0);//等待按键松开。
}
  if(wu_jian_hao!=jian_hao)
     P2=shu_zi[jian_hao];
}
}

    Message:

    Name:
    Email:
    Content:
PgUP ...
Allegro,pads,PCB电路板设计,电源模块件及芯片资料分享—小北设计