main.c

来自「4*4键盘扫描并且在数码管上显示0-9、10个数字」· C语言 代码 · 共 72 行

C
72
字号
#include<reg52.h>

sbit cs_138=P2^6;
sbit cs_373=P2^5;

unsigned code zima1[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
unsigned char keydat=1;

void keyscan(void);    //按键扫描函数声明;
void keyfind(unsigned char);    //按键分析函数声明;

void main()
{
 	cs_138=1;
	cs_373=1;
	 while(1)
	 {
		P1=0xf0;
		if((~P1)&0xf0)    //判别列线是否有键被按下
		{  
		   	keyscan();
		}
		P0=zima1[keydat-1];	 //所要显示的数据
		P2=0x1c|0x60;        //所要显示的数据位置
	 }
 }
/*以下是按键函数处理的调用程序*/
void keyscan(void)
{ 
		P1=0xfe;
		keyfind(0);

		P1=0xfd;
		keyfind(4);  
		
		P1=0xfb;
		keyfind(8);

		P1=0xf7;
		keyfind(12);
}

void keyfind(unsigned char i)     //键植分析
  	{
		switch((~P1)&0xf0)
			{
				case 0x10:
					keydat=1+i;    //列线p14被按下
					break;
				case 0x20:
					keydat=2+i;    //列线p15被按下
					break;
				case 0x40:
					keydat=3+i;    //列线p16被按下
					break;
                case 0x80:
                    keydat=4+i;    //列线p17被按下
					break;
				default:break;
			}
}










⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?