标题:
求助一个小程序(3个按钮3个LED灯 按哪个按钮哪个灯亮其它2个灯灭)
[打印本页]
作者:
jkl8687
时间:
2014-8-30 13:58
标题:
求助一个小程序(3个按钮3个LED灯 按哪个按钮哪个灯亮其它2个灯灭)
我是一个刚学编序想求助的程序是3个按钮3个LED灯,按哪个按钮哪个灯亮其它2个灯灭。谢谢各位大师
作者:
admin
时间:
2014-8-30 14:10
这简单本站有类似的程序 我帮你找一下
作者:
daliu
时间:
2014-8-30 14:15
#include < at89x51.H> //包含文件
void delay10ms(void) //延时函数
{
unsigned char i,j;
for(i=20;i>0;i--) //用循环的方法延时
for(j=248;j>0;j--);
}
void main(void)
{P1_4=0; //开led使能
while(1) //死循环
{if(P3_7==0)//以下3行是消除抖动
{delay10ms(); //延时大约10毫秒
if(P3_7==0)
{
while(P3_7==0); //松手检测,如果没有松手则一直循环
{
P0_0=0; //这个灯亮 其他2个灯灭
P0_1=1;
P0_2=1;
}
}
}
}
}
作者:
jkl8687
时间:
2014-8-30 14:33
谢谢我试试看搞不定在请教
作者:
明白
时间:
2014-8-30 14:55
按键按下后,只有等待松开才响应
作者:
jkl8687
时间:
2014-8-30 15:07
这个程序里按钮好像只有一个是吗?
作者:
jkl8687
时间:
2014-8-30 16:28
为什么在P1_4=0是错误阿
作者:
daliu
时间:
2014-8-30 16:36
如果 P1_4=0是错误 说明 你的头文件不对 可能呢你那缺少at89x51.H 文件
作者:
liaolinhui
时间:
2014-8-30 23:51
本帖最后由 liaolinhui 于 2014-8-31 00:07 编辑
jkl8687 发表于 2014-8-30 16:28
为什么在P1_4=0是错误阿
是因为没定义,keil默认P1.4是P1^4,你要用P1_4的话需要加sbit P1_4=P1^4我也写了个小程序
#include <reg51.h>
main()
{
while(1)
{
P1=P0;//P0接按键,P1接led,直接将按键状态用led显示出来,按哪个亮那个
}
}
作者:
xueyunmicheng
时间:
2014-8-31 00:14
本帖最后由 xueyunmicheng 于 2014-8-31 10:03 编辑
#include < reg51.H> //包含文件
sbit LED1 = P2^0; //第一个灯
sbit LED2 = P2^1; //第二个灯
sbit LED3 = P2^2; //第三个灯
sbit key1 = P1^0; //按键1
sbit key2 = P1^1; //按键2
sbit key3 = P1^2; //按键3 以上 根据自己情况修改
//============主函数=============
//============上电后三个灯全部点亮=============
//=======按键按下 释放后有效================
void main(void)
{
LED1 = 0; //开led使能
LED2 = 0;
LED3 = 0;
while(1) //死循环
{
if(!key1) //按键1按下
{
while(!key1);
LED1 = 0; //第一个亮
LED2 = 1; //第二个灭
LED3 = 1; //第三个灭
}
if(!key2) //按键2按下
{
while(!key2);
LED1 = 1; //第一个灭
LED2 = 0; //第二个亮
LED3 = 1; //第三个灭
}
if(!key3) //按键3按下
{
while(!key3);
LED1 = 1; //第一个灭
LED2 = 1; //第二个灭
LED3 = 0; //第三个亮
}
}
}
作者:
神火飞鱼
时间:
2014-8-31 10:23
加点延时消抖好一点
作者:
xueyunmicheng
时间:
2014-8-31 12:49
他需要的 是单稳态 不会存在按键抖动导致的 异常情况 所以 故意把消抖去掉的 要是 是双稳态 (一个按键两个状态) 就必须要加延时消抖了!
作者:
XUSHENG
时间:
2014-8-31 16:01
应该要双稳态的吧,按一下,灯亮,再按,灯灭
作者:
jkl8687
时间:
2014-8-31 16:33
很好谢谢,刚学单片机请各位师傅多指导
作者:
xueyunmicheng
时间:
2014-8-31 20:00
他的是 按键分别点亮 该LED 其他的灭 没有要求 在按一次翻转状态 所以 被我写成上面的情况了 要是 需要反转(双稳态)的话 加一个 延时 在加一个取反 状态就反过来了!
作者:
明白
时间:
2014-8-31 20:09
单稳态没有延时,好容易产生错触发,
其实去抖动,也可以提高抗干扰。
作者:
老菜鸟
时间:
2014-9-5 15:47
p1^4 keil不默认吗?
作者:
202305415
时间:
2015-3-1 10:01
值得学习
作者:
chenggong999
时间:
2017-1-12 20:43
刚好需要 我也试试
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1