标题:
51单片机矩阵键盘数码管显示代码
[打印本页]
作者:
1275221413
时间:
2018-11-19 18:22
标题:
51单片机矩阵键盘数码管显示代码
图片1.png
(20.47 KB, 下载次数: 60)
下载附件
2018-11-19 18:21 上传
#include <REGX51.H>
#include<intrins.h>
unsigned code LedChar[16]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e
};
void KeyScan_First_Row();
void delay(unsigned int);
void KeyScan();
unsigned char Key_val=1;
void main()
{
EA = 1;
EX0 = 1;
EX1 = 1;
IT0 = 1;
IT1 = 1;
PX0 = 0;
PX1 = 1;
while(1)
{
P0 = 0xff;
KeyScan();
P2 = LedChar[Key_val-1];
}
}
void InterruptInt0() interrupt 0
{
unsigned char temp = 0xfe;
unsigned char i;
for(i=0;i<10;i++)
{
P0 = temp;
delay(200);
temp = _crol_(temp,1);
}
}
void InterruptInt1() interrupt 2
{
unsigned char i;
for(i=0;i<4;i++)
{
P0 = 0xff;
delay(200);
P0 = 0x00;
delay(200);
}
}
void KeyScan_First_Row()
{
unsigned char temp;
P1 = 0xef;
if(P1!=0xef)
{
delay(10);
if(P1!=0xef)
{
temp = P1&0x0f;
switch(temp)
{
case 0x0e:Key_val=1;break;
case 0x0d:Key_val=2;break;
case 0x0b:Key_val=3;break;
case 0x07:Key_val=4;break;
default:break;
}
}
}
}
void KeyScan()
{
unsigned char temp,i;
unsigned char code Key_rows_char[]={
0xef,0xdf,0xbf,0x7f
};
for(i=0;i<4;i++)
{
P1 = Key_rows_char;
if(P1!=Key_rows_char);
{
delay(10);
if(P1!=Key_rows_char)
{
temp = P1&0x0f;
while(P1!=Key_rows_char);
switch(temp)
{
case 0x0e:Key_val=4*i+1;break;
case 0x0d:Key_val=4*i+2;break;
case 0x0b:Key_val=4*i+3;break;
case 0x07:Key_val=4*i+4;break;
default:break;
}
}
}
}
}
void delay(unsigned int z)
{
unsigned x, y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1