1.示意图
2.原理图解析
(PS:所以当你不小心按到总电源开关时,只要你够快就可以不断电)<(0.0)>学到了
3. 程序思路
4.代码实现
//实验名称:通过独立按键 控制led小灯
//引入51头文件
#include<reg51.h>
//引入左右移动函数
#include<intrins.h>
//重命名 P2口为LED P2就是LED
#define LED P2
//重命名 P0口为K P0就是独立按键
sbit K0 = P3^1;
sbit K2 = P3^0;
sbit K3 = P3^2;
sbit K4 = P3^3;
//延时函数
void Delay10ms();
//main 程序主函数
void main(void)
{
unsigned int i,j;
//1111 1110 我的led是反的
j=0xfe;
while(1){
//判断K1是否按下
if(K0==0)
{
//先点亮第一个灯
LED = j;
//消除抖动
Delay10ms();
//判断k1是否还是按下的状态
if(K0==0)
{
//向右移动1位 1111 1101 我的函数使用也是反的
j=_crol_(j,1);
//检测按钮是否松开
while((i<50)&&(K0==0))
{
Delay10ms();
i++;
}
i=0;
}
}
if(K2==0)
{
//先点亮第一个灯
LED = j;
//消除抖动
Delay10ms();
//判断k1是否还是按下的状态
if(K2==0)
{
//向左移动1位 0111 1111 我的函数使用也是反的
j=_cror_(j,1);
//检测按钮是否松开
while((i<50)&&(K2==0))
{
Delay10ms();
i++;
}
i=0;
}
}
if(K3==0)
{
//消除抖动
Delay10ms();
//判断k1是否还是按下的状态
if(K3==0)
{
//全部关闭 1111 1111 我的是反的
LED=0xff;
//检测按钮是否松开
while((i<50)&&(K3==0))
{
Delay10ms();
i++;
}
i=0;
}
}
if(K4==0)
{
//消除抖动
Delay10ms();
//判断k1是否还是按下的状态
if(K4==0)
{
//全部打开 0000 0000我的是反的
LED=0x00;
//检测按钮是否松开
while((i<50)&&(K4==0))
{
Delay10ms();
i++;
}
i=0;
}
}
}
}
//延时函数 延时10ms
void Delay10ms()
{
//定义三个值 计算延迟毫秒
unsigned char a,b,c;
for(c=1;c>0;c--){
for(b=38;b>0;b--){
for(a=130;a>0;a--);
}
}
}