⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 键盘._c

📁 本文为4*4键盘扫描程序
💻 _C
字号:
//ICC-AVR application builder : 2008-10-16 19:41:41
// Target : M16
// Crystal: 8.0000Mhz

#include <iom16v.h>
#include <macros.h>
unsigned char A[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x5f,0x3f,0x79,0x71};

void delay(unsigned int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<8000;j++)
;
}

unsigned char read_key(unsigned char i)
{
unsigned char j,k,l,key_value=0;
PORTD=0x0F;
//DDRD=0xF0;
if((PIND&0X0f)==0x0f) return 0xff;
else
{delay(5);
if((PIND&0x0f)==0x0f) return 0xff;
else
      for(i=4;i<8;i++)
	  {   
	PORTD=~(1<<i)| 0x0f;
	for(j=0;j<4;j++)
		{
	 	if((PIND&(1<<j))==0)
		key_value=(i-4)*4+j;
		}
    }
   return key_value;
  }
}
void main()
{
unsigned char m;
PORTA=0xFF;
DDRA=0xFF;
PORTD=0x0F;
DDRD=0xF0;
while(1)
{
m=read_key(4);
switch(m)
{
 
 case 0:PORTA=A[0];break;
 case 1:PORTA=A[1];break;
 case 2:PORTA=A[2];break;
 case 3:PORTA=A[3];break;
 case 4:PORTA=A[4];break;
 case 5:PORTA=A[5];break;
 case 6:PORTA=A[6];break;
 case 7:PORTA=A[7];break;
 case 8:PORTA=A[8];break;
 case 9:PORTA=A[9];break;
 case 10:PORTA=A[10];break;
 case 11:PORTA=A[11];break;
 case 12:PORTA=A[12];break;
 case 13:PORTA=A[13];break;
 case 14:PORTA=A[14];break;
 case 15:PORTA=A[15];break;
}
}
}

⌨️ 快捷键说明

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