微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 如何实现键盘自由控制二极管流水灯

如何实现键盘自由控制二极管流水灯

时间:11-18 来源:互联网 点击:
#include

//流水灯 从上到下点亮 然后熄灭; 再从下到上点亮 然后熄灭

sbit Key1=P2^7; //启动 停止 定时器T0

sbit Key2=P2^6; //停止 定时器T0, 通过键盘实现 流水灯 从上到下点亮 然后熄灭

sbit Key3=P2^5; //停止 定时器T0, 通过键盘实现 流水灯 从下到上点亮 然后熄灭

unsigned char t=0;

unsigned char i=0;

void Delay(unsigned int i) //延时

{

unsigned char j;

for( ; i>0; i--)

for(j=110; j>0; j--);

}

void LED_UP() // 二极管向上 逐渐点亮

{

unsigned char n;

P0=0xff;

for(n=1; n<=8; n++)

{

P0=P0>>1;

Delay(1000);

}

P0=0xff;

}

void LED_Down()// 二极管向下 逐渐点亮

{

unsigned char n;

P0=0xff;

for(n=1; n<=8; n++)

{

P0=P0<1;

Delay(1000);

}

P0=0xff;

}

void Keycan() // 检测键盘是否被按下

{

if(Key1==0) //启动 停止 定时器T0

{

Delay(10);

if(Key1==0)

{

TR0=~TR0;

}

while(!Key1);

}

if(TR0==0) //定时器T0 停止, Key2, Key3 键 被按下才有作用

{

if(Key2==0) //

{

Delay(10);

if(Key2==0)

{

LED_UP(); // 二极管向上 逐渐点亮

}

while(!Key2);

}

if(Key3==0) //

{

Delay(10);

if(Key3==0)

{

LED_Down(); // 二极管向下 逐渐点亮

}

while(!Key3);

}

} //end if(TR0==0)

}

void main()

{

TMOD=0x01; //

EA=1; //

ET0=1;

TR0=1;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

while(1)

{

Keycan();

if(t==20)

{

t=0;

LED_UP();

LED_Down();

}

}

}

void TimerLED() interrupt 1 using 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t++;

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top