标题:
初学,不知道这个程序能不能实现KEY1控制LED1闪烁,KEY3控制LED3亮灭
[打印本页]
作者:
simas
时间:
2018-6-12 11:13
标题:
初学,不知道这个程序能不能实现KEY1控制LED1闪烁,KEY3控制LED3亮灭
本帖最后由 simas 于 2018-6-12 11:18 编辑
#include <STC15W.h>
#define ulong unsigned long
#define uchar unsigned char
#define uint unsigned int
sbit LED1 =P3^7;
sbit LED2 =P3^6;
sbit LED3 =P3^3;
sbit BUZZ =P3^2;
sbit KEY1 =P1^1;
sbit KEY2 =P1^2;
sbit KEY3 =P1^3;
sbit KEY4 =P1^4;
char KEY1_T,KEY2_T,KEY3_T;
void delay( unsigned int t)
{
unsigned char i,j;
for(i=t;i>0;i--)
for(j=250;j>0;j--);
}
void led1ss()
{
LED1=1;delay(1500);LED1=0;delay(1500);
}
void led2ss()
{
LED2=1;delay(1500);LED2=0;delay(1500);
}
void key_scan()
{
if(KEY1==0)
{
delay(10);
if(KEY1==0)
{
if ( (KEY1 == 0)&&(KEY1_T == 0) )
{led1ss();KEY1_T = 1;}
else if ( (KEY1 == 0)&&(KEY1_T == 1) )
{LED1 = 0;KEY1_T = 0;}
}
}
if(KEY2==0)
{
delay(10);
if (KEY2==0)
{
if ( (KEY2 == 0)&&(KEY2_T == 0) )
{led2ss();KEY2_T = 1;}
else if ( (KEY2 == 0)&&(KEY2_T == 1) )
{LED2 = 0;KEY2_T = 0;}
}
}
if(KEY3==0)
{
delay(10);
if(KEY3==0)
{
if ( (KEY3 == 0)&&(KEY3_T == 0) )
{LED3=1;KEY3_T = 1;}
else if ( (KEY3 == 0)&&(KEY3_T == 1) )
{LED3 = 0;KEY3_T = 0;}
}
}
if(KEY4==0)
{
delay(10);
if(KEY4==0)
{
BUZZ=1;
}
}
}
void main()
{
LED1=0;
LED2=0;
LED3=0;
BUZZ=0;
while(1)
{
key_scan();
}
}
作者:
134849694164151
时间:
2018-6-12 12:21
实验一下就知道了呀
作者:
zsyzdx
时间:
2018-6-12 12:25
KEY3_T,这几个T是做什么的没看懂!!!!!
作者:
zzyo17
时间:
2018-6-12 12:54
可以的
作者:
simas
时间:
2018-6-12 14:11
zsyzdx 发表于 2018-6-12 12:25
KEY3_T,这几个T是做什么的没看懂!!!!!
按键标志
作者:
simas
时间:
2018-6-12 14:12
134849694164151 发表于 2018-6-12 12:21
实验一下就知道了呀
实验后,只有在KEY1,KEY2按着的情况下才闪烁
作者:
simas
时间:
2018-6-12 16:16
如何实现按下key1, led1持续闪烁,再按下熄灭,请各位大师教教我。
作者:
123qwerasdf
时间:
2018-6-12 16:35
如何实现按下key1, led1持续闪烁,再按下熄灭,请各位大师教教我。
作者:
xjanzy
时间:
2018-6-12 17:05
看程序没有问题,只是还有其他功能,不是太懂,借用别人的代码?
作者:
梦幻泡影
时间:
2018-6-12 17:47
if ( (KEY2_T == 0)
{led2ss();KEY2_T = 1;}
else if ( KEY2_T == 1 )
{LED2 = 0;KEY2_T = 0;}
改成这样试试
作者:
miho
时间:
2018-6-12 18:11
看看这个
程序不一定正确,
程序不一定正确,
程序不一定正确,
只是提供一个思路,
每按一次key1,主程序里led1_flash_ctr取反一次,led1_flash_ctr控制led1是否闪烁
#include <STC15W.h>
#define ulong unsigned long
#define uchar unsigned char
#define uint unsigned int
sbit LED1 =P3^7;
sbit LED2 =P3^6;
sbit LED3 =P3^3;
sbit BUZZ =P3^2;
sbit KEY1 =P1^1;
sbit KEY2 =P1^2;
sbit KEY3 =P1^3;
sbit KEY4 =P1^4;
char KEY1_T,KEY2_T,KEY3_T;
void delay( unsigned int t)
{
unsigned char i,j;
for(i=t;i>0;i--)
for(j=250;j>0;j--);
}
void led1ss(char SW1)
{
if(SW1=1)
{ LED1=1;delay(1500);LED1=0;delay(1500);}
else
LED1=1;
}
char key1_pressed;
char key2_pressed;
char key3_pressed;
char key4_pressed;
char led1_flash_ctr;
void key_scan()
{
if(KEY1==0)
{
delay(10);
if(KEY1==0)
{
key1_pressed=1;
while(!KEY2); //检测按键弹起
}
}
if(KEY2==0)
{
delay(10);
if (KEY2==0)
{
key2_pressed=1;
while(!KEY2);
}
}
if(KEY3==0)
{
delay(10);
if(KEY3==0)
{
key3_pressed=1;
while(!KEY3);
}
}
if(KEY4==0)
{
delay(10);
if(KEY4==0)
{
key4_pressed=1;
while(!KEY4);
}
}
}
void main()
{
LED1=0;
LED2=0;
LED3=0;
BUZZ=0;
while(1)
{
key_scan();
if(key1_pressed)
{
key1_pressed=0;
led1_flash_ctr=!led1_flash_ctr;
}
if(key2_pressed)
{
key2_pressed=0;
//按下key2的操作
}
led1ss(led1_flash_ctr);
}
}
作者:
我不后悔
时间:
2018-6-12 19:41
程序太繁长,还乱,程序不是越长越好。程序可以正常运行。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1