您好, 登录| 注册|
论坛导航
您好, 登录| 注册|
子站:
商城:
论坛首页    单片机MCU/嵌入式
  •  发帖
  • 收藏

单按键单次循环触控点亮/关闭两个LED
阅读: 700 |  回复: 3 楼层直达

2018/01/12 20:20:27
1
越凌科技
电源币:49 | 积分:7 主题帖:18 | 回复帖:172
LV6
团长

QQ截图20160321155901  大咖亲测百世之师、不忘初心——泰克MSO58波器首发

QQ截图20160321155901   【学生专场】参与就有奖!晒实验室 赢耳机 键盘 电影票等等



     大家好!好久没有发帖!上个月买了一块儿51开发板,点亮关闭一个或者多个LED都没有问题了!现在想做一款单个按键一次按下触控2个LED循环亮灭的程序!但是烧录进入开发板后,两个LED一上电就被点亮!很郁闷!所以上来求救原因!还望各位大神路过的帮忙看一下是什么问题!感激不尽!

     以下是SCH图!

     

\

   一下是C程序;

     这个程序我感觉是对的啊!就是想不通那里出问题的!我想要的效果是:上电后按一下S1  d1被点亮(d2还是处于熄灭状态),在按一下s1  d2被点亮  在按一下s1 num复位至0 d1  对应d1 d2都被熄灭!  可是我把程序烧录进入89C52以后,一上电这两个灯就被点亮了! LED也根本不受S1控制!郁闷中·······

2018/01/13 00:45:16
2
chebd
电源币:10080 | 积分:13 主题帖:18 | 回复帖:266
LV5
营长
沙发
2018/01/15 11:31:09
3
电源网-fqd
电源币:5053 | 积分:15064 主题帖:325 | 回复帖:4967
LV11
统帅
恭喜被添加到社区经典图库,并获得1积分
http://www.dianyuan.com/bbs/classic/
2018/01/17 15:29:10
4
LQW2017
电源币:0 | 积分:3 主题帖:0 | 回复帖:5
LV1
士兵

你的swith语句不对,没有break退出,而且也要放在大循环里面,我写了个你可以参照下,可以运行

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit diola=P2^5;

sbit led1=P1^0;

sbit led2=P1^1;

sbit s2=P3^4;

void delayms(uint xms)             /***********?? ??  *********/

{

uint i,j;

for(i=xms;i>0;i--)

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

}

void main()

{uint num=0;

diola=1;

while(1)

{

if(s2==0)

{

delayms(5);

if(s2==0)

{while(!s2);num++;

}}

if(num>2)

{

num=0;

}

switch(num)

{

case 0:

{led1=1;led2=1;}

break;

case 1:

{led1=0;led2=1;}

break;

case 2:

{led1=1;led2=0;}

break;

}

}

}

关注我们
新浪微博
官方Q群
客服热线
服务时间:周一至周五9:00-18:00
微信关注
免费技术研讨会
获取一手干货分享