登录
首页
单片机论坛
回帖
发帖
正文
主题:51单片机这样的按键如何实现?
点击:1369 回复:10
楼主
编辑
引用
管理
wrock
请问下51单片机外部按键,如何实现不管按键按下多长时间,只要没有按键电平变化,内部数据只加一个数。
11-07-16 08:02
1楼
编辑
引用
管理
tigermu
当电平变化再确认按键就可以了。
11-07-16 09:27
2楼
编辑
引用
管理
hDragon
楼上的问题:在单片机系统中,对按键的处理一般有如下两个时机,一是在判断出确实有按键按下后,马上执行按键功能,然后再等待按键释放;二是在判断出有按键按下后,先不执行按键功能,一直等待按键释放,在按键释放的一瞬间执行按键解释程序。你的问题可以用后一种方式实现。
11-07-22 09:15
3楼
编辑
引用
管理
yueliang150
#include
//实际使用中输入要进行消抖处理;
//输入
sbit X0=P1^0;
sbit X1=P1^1;
sbit X2=P1^2;
//输出
sbit Y0=P0^0;
sbit Y1=P0^1;
sbit Y2=P0^2;
//
bit M0,M1,M2; //辅助标志
void main(void)
{
M0=0;M1=0; M2=0; ;
while(1)
{
//应用程序*****************************************
if(X0==1)Y0=0; //X0按下,一直执行Y0亮,X0松开Y0一直保持亮
if(X1==1)Y1=0; //X0按下,一直执行Y0亮
else Y1=1; //X0松开,Y0灭
if(X2==1 && M0==0) //X2按下,
{
M0=1;Y2=0; //Y2执行一次亮,X2一直按下也只
}
if(X2==0 && M0==1){M0=0;Y2=1;} //X2松开,Y2灭后不再执行,
}
}
11-07-25 21:01
4楼
编辑
引用
管理
guanyumou
引用
wrock
在 2011/7/16 8:02:30 发言
【内容省略】
你的意思是检测上升沿或者下降沿吗?应该是这个意思吧!
12-01-02 13:57
5楼
编辑
引用
管理
746205442
检测键的释放!
12-01-02 16:53
6楼
编辑
引用
管理
jog0821
if(!x0)
{
y0=0;
while(!x0);
}
使用 while 语句即可!
12-01-05 21:54
7楼
编辑
引用
管理
Kate
不建议采用while语句,一while起来其他事情都不能处理了。
12-01-06 09:44
8楼
管理
就是爱你
该帖内容不符合相关规定!
12-01-17 14:06
9楼
编辑
引用
管理
jog0821
引用
Kate
在 2012/1/6 9:44:43 发言
【内容省略】
按键释放的问题 楼上的可能有更好的建议么 欢迎交流!
楼主可能已经解决了这个问题
12-01-19 22:18
上一页
下一页
工控新闻
智微工业发布工业平板主板OVS主板双新品PPB-5002/7001
北京市机器人产业“双百”目标超额提前完成
融智于边 聚力共创丨研华伙伴峰会圆满落幕,携手共绘边缘智能新蓝图!
英孚康三大标签,工业自动化新未来
机器视觉在机器人行业的应用(下)
聚焦机器人与AI视觉 奥比中光上半年营收翻倍净利润大增
从金刚线生产到冶金装备——“汇川号”在西安的两场数智化实践对话
洞察工业交换机市场风云,捕捉产业新机遇
更多新闻资讯