仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar t;
while(x--)
{
for(t=0;t<120;t--);
}
}
void main()
{
uchar k,t,Key_State;
P0 = 0xff;
P1 = 0xff;
while(1)
{
t = P1;
{
DelayMS(10);
if(t != P1)
continue;
Key_State = ~t >> 4;
k = 0;
while(Key_State != 0)
{
k++;
Key_State >>= 1;
}
switch(k)
{
case 1: if(P0 == 0x00)
P0 = 0xff;
P0 <<= 1;
DelayMS(200);
break;
case 2: P0 = 0xf0;
break;
case 3: P0 = 0x0f;
break;
case 4: P0 = 0xff;
}
}
}
}
全部资料51hei下载地址:
四组按钮控制LED.zip
(10.26 KB, 下载次数: 18)
|