51单片机按键消抖
来源:互联网 发布:中国数据 编辑:程序博客网 时间:2024/04/27 14:52
抖动是机械按键存在的现象,是必须要进行处理的。一般处理有两种方式:一种是硬件消抖,另一种是软件消抖。硬件消抖不仅会增加开发成本,而且有时不稳定。一般都会选择软件消抖。
因为单片机最重要的是测试状态,而不是测试过程。一般不会选择通过状态延时来消抖,而是通过定时循环测试按键的状态来消抖.下面是针对51单片机的独立按键写的一个通过定时器来消抖的程序:
#include<reg52.h>
sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
sbit KEY4 = P2^7;
//数码管的数字十六进制表示
unsigned char code LedChar[]=
{
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
};
bit KeySta = 1;
void main()
{
bit backup = 1;
unsigned char cnt = 0;
//打开总中断
EA = 1;
ENLED = 0;
ADDR3 = 1;
ADDR2 = 0;
ADDR1 = 0;
ADDR0 = 0;
//设置TMOD的状态
TMOD = 0x01;
//定时为2ms
TH0 = 0xF8;TL0 = 0xCD;
ET0 = 1;
TR0 = 1;
P2 = 0xF7;
P0 = LedChar[cnt];
while(1)
{
if(KeySta !=backup)
{
if(backup==0)
{
cnt++;
if(cnt>=10)
{
cnt=0;
}
P0 = LedChar[cnt];
}
backup=KeySta;
}
}
}
void InterruptTimer0() interrupt 1
{
static unsigned char keybuf = 0xFF;
TH0 = 0xF8;
TL0 = 0xCD;
keybuf = (keybuf<<1) |KEY4;
if(keybuf == 0x00)
{
KeySta = 0;
}
else if(keybuf == 0xff)
{
KeySta = 1;
}
}
0 0
- 51单片机按键消抖
- 单片机按键消抖程序
- 8.6 单片机按键消抖
- 51单片机独立按键抖动演示及软件消抖
- 单片机通过软件实现按键消抖
- 单片机按键的定时器消抖处理
- 51单片机按键双击
- 单片机按键去抖原理
- 单片机按键去抖原理
- 单片机按键去抖原理
- 51单片机 按键,键盘检测
- 51单片机—独立按键
- 51单片机100次按键
- 51单片机:利用定时器中断写一个简易加法计算器,按键消抖算法很好。
- 基于proteus的51单片机仿真实例五十二、按键的判断与消抖实例
- 关于独立按键与矩阵按键的程序(51单片机)
- 单片机按键去抖显示led
- 51单片机STC89C52 独立按键检测
- 图片格式
- unicode下的log4cplus输出问题
- FZUProblem 2129 子序列个数(dp)
- 取div下多个a标签的属性
- Hadoop命令手册
- 51单片机按键消抖
- 删除字符串最后一个字符的几种方法
- 1.3 struct 结构体 结构体与函数
- cocos2dx Box2Ds示例项目
- opencv学习笔记之二 矩阵的维和通道
- 485 232 区别
- Capturing 'self' strongly in this block is likely to lead to a retain cycle
- java实现rabbitmq消息的发送接受
- js确认框