当前位置:文档之家› 单片机矩阵键盘C语言程序

单片机矩阵键盘C语言程序

#include
#define F_CPU 11059200UL
#include

unsigned char const Number[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,
0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};//共阴

void display(int m)
{
PORTB=Number[m];
PORTA|=(1<<3); //PA3=1;
PORTA&=~(1<<3); //PA3=0;
PORTB=0xfe;
PORTA|=(1<<4); //PA3=1;
PORTA&=~(1<<4); //PA3=0;
_delay_us(10);

}

int main() //C语言主函数
{

DDRA=0x18;
DDRB=0xff;
DDRD=0x0f;
while(1)
{
int k=16;
PORTD=0xfe;
_delay_us(5);
if ( (PIND&0xfe)!=0xfe)
{
_delay_us(10);
if ( (PIND&0Xfe)!=0xfe)
{
switch (PIND)
{
case 0xee: k=0; break;
case 0xde: k=4; break;
case 0xbe: k=8; break;
case 0x7e: k=12; break;
}
}

}


PORTD=0xfd;
_delay_us(5);
if ( (PIND&0xfd)!=0xfd)
{
_delay_us(10);
if ( (PIND&0Xfd)!=0xfd)
{
switch (PIND)
{
case 0xed: k=1; break;
case 0xdd: k=5; break;
case 0xbd: k=9; break;
case 0x7d: k=13; break;
}
}

}


PORTD=0xfb;
_delay_us(5);
if ( (PIND&0xfb)!=0xfb)
{
_delay_us(10);
if ( (PIND&0Xfb)!=0xfb)
{
switch (PIND)
{
case 0xeb: k=2; break;
case 0xdb: k=6; break;
case 0xbb: k=10; break;
case 0x7b: k=14; break;
}
}
}

PORTD=0xf7;
_delay_us(5);
if ( (PIND&0xfe)!=0xf7)
{
_delay_us(10);
if ( (PIND&0Xf7)!=0xf7)
{
switch (PIND)
{
case 0xe7: k=3; break;
case 0xd7: k=7; break;
case 0xb7: k=11; break;
case 0x77: k=15; break;
}
}
}

display(k);

}
}


相关主题
文本预览
相关文档 最新文档