久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機如何進行按鈕抬起瞬間的防抖?
[打印本頁]
作者:
zx929747216
時間:
2019-5-6 16:54
標題:
單片機如何進行按鈕抬起瞬間的防抖?
#include "reg52.h"
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit beep=P1^5;
sbit k=P3^2;
u16 a,b,c;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
u8 mb[2];
static u8 h;
/*******************************************************************************
* 函 數 名 : delay
* 函數功能 : 延時函數,i=1時,大約延時10us
*******************************************************************************/
void delay(u16 j)
{
while(j--);
}
/*******************************************************************************
* 函 數 名 : main
* 函數功能 : 主函數
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void zhongduan()
{
IT0=1;//下降沿有效
EX0=1; // 哪個外部中斷有效
TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
TH0=0XFC; //給定時器賦初值,定時1ms
TL0=0X18;
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
b=0,c=0,beep=0,h=0;
}
void Timer0() interrupt 1
{
static u16 h;
TH0=0XFC; //給定時器賦初值,定時1ms
TL0=0X18;
EX0=0;
h++;
if(h==8)
{
b=1;
c++;
}
if(h==300)
{
h=0;
EX0=1;
TR0=0;
}
}
void zhong() interrupt 0
{
EX0=0;
TR0=1;
}
void DigDisplay()
{
u8 i;
for(i=0;i<2;i++)
{
switch(i) //位選,選擇點亮的數碼管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//顯示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//顯示第1位
}
P0=smgduan[mb[i]];//發送段碼
delay(1); //間隔一段時間掃描
P0=0x00;//消隱
}
}
void fengmingqi()
{
if(b==1)
{
for(a=0;a<100;a++)
{
beep=~beep;
delay(10);
}
b=0; //延時大約100us 通過修改此延時時間達到不同的發聲效果
}
}
void main()
{
zhongduan();
while(1)
{
fengmingqi();
mb[0]=c%10; //秒表個位
mb[1]=c/10; //秒表十位
DigDisplay();
}
}
復制代碼
作者:
zx929747216
時間:
2019-5-6 16:55
有時候會連續加兩個數,應該是抬起瞬間有反應,按下的防抖處理好了,抬起的不知道怎么處理了
作者:
lindage12315
時間:
2019-5-6 18:21
加個延時程序?
作者:
murphey
時間:
2019-5-6 18:24
按鈕兩端并個電容?
作者:
lindage12315
時間:
2019-5-6 18:40
加一個電容,這是比較普遍的應用
作者:
1qdeuuu000
時間:
2019-5-6 18:42
延時消抖,然后等待手抬起
作者:
1qdeuuu000
時間:
2019-5-6 18:49
延時消抖,然后等待手抬起例如:
if(key==0)
{
delay();
while(!key);
} 進入外部中斷也能這樣,按下鍵不松手時顯示可能會出問題,松開就好了。
作者:
有緣人
時間:
2019-5-6 21:26
標題:
RE: 單片機如何進行按鈕抬起瞬間的防抖?
消除方法有兩種:軟件除抖和硬件除抖,其中硬件除抖是應用了電容對高頻信號短路的原理。
軟件除抖是檢測出鍵閉合后執行一個延時程序,產生5ms~10ms的延時,讓前沿抖動消失后再一次檢測鍵的狀態,如果仍保持閉合狀態電平,則確認為真正有鍵按下。
作者:
ymw6240
時間:
2019-5-6 21:58
首先:硬件設計上必須要求在入口處并一個104電容。
然后:用示波器多抓幾次按鍵按下和抬起的波形,找到按下和抬起的按鍵的干擾波形的寬度。
最后:程序再延時讀取按鍵值,延時時間為:干擾波寬度*1.5,其中1.5可以視具體情況調整。
作者:
hnxtlxx
時間:
2019-5-7 09:47
加電容好些,在按鍵兩端并聯零點一到零點零一微法的無極性電容,千萬別別用電解電容,因為電解電容漏電大,要用mkp之類的薄膜電容,嚴禁并電解電容。
作者:
yzwzfyz
時間:
2019-5-7 11:09
消抖不分上下沿:
例如:
每間隔4ms檢測一次,連續8次檢測結果一樣,則可判定為穩定。
作者:
zx929747216
時間:
2019-5-7 13:49
yzwzfyz 發表于 2019-5-7 11:09
消抖不分上下沿:
例如:
每間隔4ms檢測一次,連續8次檢測結果一樣,則可判定為穩定。
我現在用的就是這種,定時器里檢測5毫秒一直是按下狀態就+1
作者:
yzwzfyz
時間:
2019-5-8 14:20
這樣也只是可以知道狀態穩定了。
穩定了,有以下幾種狀態況,需要你進行一下甄別:
1、一直未按。
2、按下了還未松開。
3、松開后的穩定(與1同類,需要你區分)。
……
這是難點!!有技巧,自己想想。(提示:將各種可能情況做標記,進行分析。)
作者:
fujinzhan
時間:
2019-5-8 17:06
改善硬件
作者:
南柯一夢
時間:
2019-5-9 09:52
unsigned char key_ret = 0;//外部文件調用需申明 extern unsigned char key_ret;
unsigned char Key_Scan(void)
{
static unsigned char key_num = 0;
static unsigned char del_count,tim_count;
static bit key_flag = 0;
/////////////////////////////////////////////////////
if(KEY==1) key_ret = 0;
if(KEY==0) /*判斷是否有鍵按下可以是多個按鍵,例:if((KEY1==0)||(KEY2==0)||(KEY3==0))*/
{
if(++del_count>25)/*計數消抖(一般放在中斷里,計數完大于20ms即可)*/
{
del_count = 0;
if(++tim_count>25)/*長按識別*/
{
key_flag = 0;/*短按無效*/
tim_count = 25;/*鎖定長按*/
switch(key_num)
{
case 1:key_ret = 2;break;
}
}
else/*短按有效*/
{
key_flag = 1;/*短按標志位*/
if(KEY==0) { key_num = 1;}/*一下用于識別按鍵*/
}
}
}
else/*松手之后*/
{
tim_count = 0;
del_count = 0;
if(key_flag)/*松手*/
{
key_flag = 0;
switch(key_num)
{
case 1:key_ret = 1;break;
}
}
}
return key_ret;
}
///////使用方法//
/*
if(key_ret==1)
{
key_ret=0;
要執行的程序
}
*/
作者:
a854377332
時間:
2019-5-9 16:38
延時消抖
if(S1==0) {
Delay10ms();
if(S1==0) {
//要做的事
}
}
作者:
TIANYUS
時間:
2019-5-9 21:29
一個是用延時消抖,另一個就是用外部中斷
作者:
鄭漢松
時間:
2019-5-10 00:13
延時消抖有時候不管用,這時候要用暴力消抖
if(key==0)
{
while(!key);
……
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲精品中文字幕在线观看
|
99精品在线观看
|
四虎永久免费在线
|
欧美日韩国产在线观看
|
国产激情第一页
|
伊人色综合久久天天五月婷
|
不卡欧美
|
日本精品视频一区二区三区四区
|
国产精品久久久
|
99热精品在线观看
|
精品视频免费在线
|
久久久婷
|
日韩欧美一区在线
|
在线91
|
www.亚洲一区二区三区
|
97在线观视频免费观看
|
在线观看国产精品一区二区
|
久久99精品久久久久蜜桃tv
|
日韩免费网站
|
av片免费
|
日本三级全黄三级三级三级口周
|
亚洲一区二区三区视频
|
国产精品久久久久久久久久尿
|
伊人网伊人
|
国产一级片
|
日本超碰
|
国产一区二区三区精品久久久
|
日日操视频
|
久久久久亚洲精品国产
|
精品福利一区二区三区
|
国产精品a免费一区久久电影
|
亚洲免费精品
|
国产一级一级毛片
|
国产亚洲高清视频
|
老头搡老女人毛片视频在线看
|
色视频免费
|
精品三级在线观看
|
久久小视频
|
天堂久
|
中文字幕一区二区三区乱码图片
|
日韩成人免费视频
|