描述一下节日彩灯控制器的系统工作原理,要写报告
#include "intrins.h"
sbit K1 = P1^0;
sbit K2 = P1^1;
sbit K3 = P1^2;
sbit K4 = P1^3;
sbit K5 = P1^4;
sbit K6 = P1^5;
void Delay100ms()
{
unsigned char i, j, k;
nop();
nop();
i = 5;
j = 52;
k = 195;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void DelayK(unsigned char t)
{
while(t--);
}
unsigned char i;
void Key()
{
if(K1==0)
{
DelayK(100);
if(K1==0)
{
P0 = 0xf9;
for(i = 0;i < 8;i++)
{
P2=(0x1<<i);
Delay100ms();
}
while(K1==0);
P0 = 0;
for(i = 0;i < 8;i++)
{
P2=(0x1>>i);
Delay100ms();
}
}
}
if(K2==0)
{
DelayK(100);
if(K2==0)
{
P0 = 0xa4;
for(i = 0;i < 7;i++)
{
P2=(0x1<<i);
Delay100ms();
}
while(K2==0);
P0 = 0;
for(i = 0;i < 7;i++)
{
P2=(0x1>>i);
Delay100ms();
}
}
}
if(K3==0)
{
DelayK(100);
if(K3==0)
{
P0 = 0xb0;
for(i = 0;i < 6;i++)
{
P2=(0x1<<i);
Delay100ms();
}
while(K3==0);
P0 = 0;
for(i = 0;i < 6;i++)
{
P2=(0x1>>i);
Delay100ms();
}
}
}
if(K4==0)
{
DelayK(100);
if(K4==0)
{
P0 = 0x99;
for(i = 0;i < 8;i++)
{
P2=(0x2<<i);
Delay100ms();
}
while(K4==0);
P0 = 0;
for(i = 0;i <5;i++)
{
P2=(0x1>>i);
Delay100ms();
}
}
}
if(K5==0)
{
DelayK(100);
if(K5==0)
{
P2 = 0;
}
}
if(K6==0)
{
DelayK(100);
if(K6==0)
{
P2 = 0xff;
}
}
}
void main()
{
while(1)
{
Key();
}
}
这不给我点个关注???
通过P1口读取控制器的按键输入,然后控制P0口的LED显示灯和P2口的控制灯的亮灭。
当按下K1时,P0口的LED显示为0xf9,表示将控制灯从右到左依次点亮,并且每个灯点亮的时间为100ms。
当按下K2时,P0口的LED显示为0xa4,表示将控制灯从左到右依次点亮,并且每个灯点亮的时间为100ms。
当按下K3时,P0口的LED显示为0xb0,表示将控制灯从中间往两侧依次点亮,并且每个灯点亮的时间为100ms。
当按下K4时,P0口的LED显示为0x99,表示将控制灯从左上到右下斜线方向依次点亮,并且每个灯点亮的时间为100ms。
当按下K5时,P2口的控制灯全灭,即所有的LED都熄灭。
当按下K6时,P2口的控制灯全亮,即所有的LED都点亮。
在控制LED灯点亮的过程中,Delay100ms()函数用于延迟100ms时间,DelayK()函数用于延迟t个时间单位。通过循环控制每个LED灯的点亮和熄灭,达到控制彩灯的效果。