打印

单片机按键控制?

[复制链接]
2258|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
090104011023|  楼主 | 2013-4-11 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
fp123123| | 2013-4-11 11:39 | 只看该作者
void main()
{
  char lightOn = 0;

  for(;;)
  {
    if(检测到按键按下)
    {
      lightOn = ! lightOn;
      延时 300ms 作用是消抖动
    }

    if(lightOn) 开灯
    else 关灯
  }
}

使用特权

评论回复
板凳
dirtwillfly| | 2013-4-11 12:27 | 只看该作者
貌似最简单的程序了

使用特权

评论回复
地板
jiaxinhui| | 2013-4-11 21:34 | 只看该作者
你首先得做好按键检测程序,这个程序好了,然后在按键检测程序中,当有按键按下的时候给给控制灯的那个IO口取反就行。

使用特权

评论回复
5
hlzhaowu| | 2013-4-11 22:51 | 只看该作者
楼主,是用啥的单片机写不出来呢

使用特权

评论回复
6
rgh111| | 2013-4-11 23:10 | 只看该作者
感觉缺乏基本的抽象思维能力啊,悲催啦

使用特权

评论回复
7
mcu5i51| | 2013-4-12 09:42 | 只看该作者
写一个通用的按键代码,不要嫌麻烦,以后所有的按键都用这个了,最多根据需要小改一下;
之后我的KEY函数这样操作就好了;
while(1)
{
...
    Key = GetKey();
    if(Key.One == K_On)
    {
      LED = ~LED;
    }
   ...

}
这里的key.one是单次触发的,在按键放开之前只会有一次为键值,其他时候为无建
简单的代码
u8 GetKey()
{
u8 key;
key = Keypin;
delay();
if(key == KeyPin)return key;
return 0;
}

main()
{
...
if(GetKey() == KEY_ON) Led = ~Led; 读取按键有效 反转灯状态
while(GetKey() != 0); 等待按键放开
...
}

使用特权

评论回复
8
lks2803173| | 2013-4-12 22:40 | 只看该作者
void aj()
{
  char i = 0;
    if(检测到按键按下)
    {
  
      延时 300ms 作用是消抖动
     if(检测到按键按下)
     { i++;}
    }
if(i%2==0)  led=1;
if(i%2!=0)  led=0;
}

使用特权

评论回复
9
outstanding| | 2013-7-20 15:13 | 只看该作者
这个太简单了吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

80

帖子

1

粉丝