实验内容
4X4键盘(中断方式),当K1键按下后,首先使蜂鸣器响一声,然后使LED1-LED8完成3种闪亮的花样(自己定义),每一种花样循环3次,然后周而复始。
实验电路
程序代码
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint z);
void Display();
uchar keyscan();
sbit BUZZER = P2^3; //buzzer
void main()
{
P1 = 0x0f; //0000 1111
EX0=1;
IT0=1;
EA=1;
while(1);
}
void inter0() interrupt 0
{
while(keyscan()/*==0xee*/)
{
Display();
}
}
uchar keyscan()
{
uchar cordl,cordh;
if((P1 & 0x0f)!=0x0f)
{
delay(5);
if((P1 & 0xf0)!=0xf0)
{
cordl = P1 & 0xf0;
P1 = cordl | 0x0f;
cordh = P1 & 0x0f;
while((P1 & 0x0f )!=0x0f);
}
}
P2 = cordl + cordh;
return (cordl + cordh);
}
void Display()
{
uint i,j,k;
BUZZER=~BUZZER;
delay(1000);
BUZZER=0;
while(1)
{
for(i=0;i<2;i++)
{
P0=0xaa;
delay(100);
P0=0xff;
}
for(j=0;j<2;j++)
{
P0=0x55;
delay(100);
P0=0xff;
}
P0=0xfe;
for(k=0;k<2;k++)
{
P0=(P0<<1)|0x01;
delay(100);
}
}
}
void delay(uint z)
{
uint x,y;
for(x = z;x>0;x--)
for(y=114;y>0;y--);
}
Yes,搞定一个嘿!