您现在的位置: 主页 > MCU > 单片机应用 > 一个按键实现三个LED的亮灭延时控制 -
本文所属标签:
为本文创立个标签吧:

一个按键实现三个LED的亮灭延时控制 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-08 

[导读]
/************************编译器:Keil C uVision4*芯片:STC89C52,12M晶振********************http://www.wang1jin.com**********************/实现功能:按下按键三个全亮,在按下LED2灭,再按下三

/***********************
*编译器:Keil C uVision4
*芯片:STC89C52,12M晶振
********************http://www.wang1jin.com**********************/
实现功能:按下按键三个全亮,在按下LED2灭,再按下三个LED全灭,如此循环,相当于三档,第三档是停止。第一档和第二档定时5S,5S终了,停止运行,如果此时再按1次则回到第一档。如果5S之内按下,则切换到下一档。

本文引用地址: http://www.21ic.com/app/mcu/201807/765053.htm


实现功能:按下按键三个全亮,在按下LED2灭,再按下三个LED全灭,如此循环,相当于三档,第三档是停止。第一档和第二档定时5S,5S终了,停止运行,如果此时再按1次则回到第一档。如果5S之内按下,则切换到下一档。


#include
#define uintunsigned int
#define uchar unsigned char

sbit Key = P3^3;
sbit LED0 = P0^0;
sbit LED1 = P0^1;
sbit LED2 = P0^2;
uchar KEY_Data = 0; //按键值
bit Time_Data = 0; //定时标志位
uchar Time = 0;//定时计时
uchar Time_ms=0;//MS计时
uchar Time_s =0;//S计时
void Delay(uint i);
void READ_KEY(void);
void LED1_ON(void);
void LED2_ON(void);
void LED_OFF(void);
void main(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;//50ms的初值
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
EA=1;
while(1)
{
READ_KEY();//执行按键程序
LED1_ON();//第1次按下执行
LED2_ON();//第2次按下执行
LED_OFF();//第3次按下执行
}
}

void READ_KEY(void)
{
uchar Value =0;
uchar Value1 = 0;
if(Key == 0)//按键扫描
{
Delay(2000);
if(Key ==0)
{
while(Key ==0 && Value1<100)//判断按键松开并执行
{
Value1++;
Delay(1000);
}
KEY_Data++;
Time_s = 0; //清空之前计时时间
Time_Data = 1;//开启定时
if(KEY_Data >2)
{
KEY_Data =0;
}
}
}
}

void LED1_ON(void)//第一次按下点亮所有LED
{
if(Time_Data ==1 && KEY_Data ==1)
{
LED0 =0;
LED1 =0;
LED2 =0;
}
}
void LED2_ON(void)//第二次按下关闭LED2
{
if(Time_Data ==1 && KEY_Data == 2)
{
LED1 = 1;
}
}
void LED_OFF(void)//第三次按下或定时时间到关闭所有LED
{
if(KEY_Data == 0 ||Time_Data==0)
{
LED0 = 1;
LED1 = 1;
LED2 = 1;
}
}

void timer0() interrupt 1 //定时器计时50MS
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(Time_Data == 1)
{
Time++;
if(Time>100)
{
Time=0;
Time_Data =0;
}
}
}

void Delay(uint i)//延时函数
{
for(;i>0;--i);
}




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机应用 > 一个按键实现三个LED的亮灭延时控制 -
 

"一个按键实现三个LED的亮灭延时控制 -"的相关文章

网站地图

围观()