ARM開發7.3.4 基礎實訓( 4 ) 矩陣式鍵盤的輸入系統設計--LPC21XX

運行效果:
啓動仿真,每當按鍵被按一次,在數碼 LED 上顯示某個按鍵的編號

一:仿真圖

在這裏插入圖片描述
在這裏插入圖片描述

二:代碼詳情

#include  "LPC21XX.h"

//定義常量
const unsigned char Led[]=
{
	0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
};

unsigned char KSCANCONDE[]={0x01,0x02,0x04,0x08};
unsigned char Keytab[4][4]=
{
	0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
	0x00,0x01,0x02,0x03,0x04,0x05
};

void Delay_250us(void)
{
	 unsigned int i;
	i=50000;
	while(i--);
}

int main(void)
{
	unsigned int keyval;
	unsigned int row,col;
	//初始化LPC2124的P0
	PINSEL0=0x00000000;
	PINSEL1=0x00000000;
	PINSEL2=0x00000000;
	IO0DIR=0x000000FF;
	IO1DIR=0x000F0000;
	IO0CLR=0x000000FF;
	keyval=0;
	while(1)
	{
		 for(row=0;row<4;row++)
		 {
			 IO1SET=(0x0F)<<16;
			 IO1CLR=(KSCANCONDE[row])<<16;
			 if((IO1PIN&0x00F00000)!=0x00F00000)
			 {
				 //消抖
				   Delay_250us();
				   //確定按鍵列號
				  if((IO1PIN&0x00F00000)!=0x00F00000)
			    {
				   if((IO1PIN&0x00E00000)==0x00E00000)col=0;
				   else if((IO1PIN&0x00D00000)==0x00D00000)col=1;
				   else if((IO1PIN&0x00B00000)==0x00B00000)col=2;
				   else  col=3;
				   keyval=Keytab[row][col];
				   IO0CLR|=0xFF;//清顯示
				 IO0SET=(Led[keyval]<<0);//顯示本次按下的鍵碼值
					}
			 }
		 }
	}
}

三:運行效果

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章