久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3948|回復: 8
打印 上一主題 下一主題
收起左側

請教單片機按鍵雙擊的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:275111 發表于 2018-10-19 09:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1.不要所謂的狀態機方法    2.不要開定時器0的中斷(開/關定時器0 但不開中斷)  
3.如果開中斷也行(不得已最后方法)

說明:因為用的是觸摸單片機的觸摸按鍵。 按鍵為1有效。不需要濾波。

實現的基本原理:判斷2次按下的時間,>500(or250ms)再有按鍵按下,就是雙擊;沒有就是_單擊_。


目前的狀況:我水平很菜,網上看了很多,書上也翻了,我是沒實現的了。已經搞了_3天_了,就這個功能了,怎么弄都不行了,快崩潰了。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:331575 發表于 2018-10-19 10:03 | 只看該作者
用定時器掃面計數非中斷模式  假設按鍵1被觸摸  內置flag=1  定時器掃描時間為50ms 讓標志time0計數 計數到10時即為500ms 再讓flag=2 再次按鍵即可生效
回復

使用道具 舉報

板凳
ID:342822 發表于 2018-10-19 11:21 | 只看該作者
使用計數法識別長短按*/
#include<reg52.h>
#define key_S 1000 //宏定義短按(約20ms)
#define key_L key_S*50 //宏定義長按(約1s)
//定義端口
sbit KEY=P1^4;
sbit LED1 = P2^0;
sbit LED2 = P2^1;
unsigned int count=0;//計數變量

int main (void)
{
        LED1=1;
        LED2=1;               
        KEY=1; //按鍵輸入端口電平置高      
        while(1)         //主循環
        {
                if(!KEY)  //如果檢測到低電平,說明按鍵按下
                {  
                        count++;  
                        if(count==key_L)                                //長按
                                LED2=!LED2;
                        if(count>key_L)
                                count=key_L+1;                                //防止count溢出         
                }  
                else                                                                        //按鍵抬起
                {  
                        if(count>key_S && count<key_L)//短按
                                LED1=!LED1;
                        count=0;                                                        //count清0
                }   
        }
}
回復

使用道具 舉報

地板
ID:275111 發表于 2018-10-23 09:36 | 只看該作者
15942379927 發表于 2018-10-19 10:03
用定時器掃面計數非中斷模式  假設按鍵1被觸摸  內置flag=1  定時器掃描時間為50ms 讓標志time0計數 計數到 ...

牛比。
回復

使用道具 舉報

5#
ID:56665 發表于 2019-8-24 10:02 | 只看該作者
taotie 發表于 2018-10-19 11:21
使用計數法識別長短按*/
#include
#define key_S 1000 //宏定義短按(約20ms)

你的程序是按鍵長短按鍵程序,別人要按鍵雙擊程序。
回復

使用道具 舉報

6#
ID:370639 發表于 2019-8-24 12:15 | 只看該作者
百度搜索杜洋師傅一鍵多能視頻,講的很好
回復

使用道具 舉報

7#
ID:332444 發表于 2019-8-24 20:03 | 只看該作者
回復

使用道具 舉報

8#
ID:282095 發表于 2019-8-25 07:04 | 只看該作者
清零置1即可
回復

使用道具 舉報

9#
ID:57657 發表于 2021-12-6 12:52 | 只看該作者
你可以看看這個程序 按鍵雙擊 N連擊 都可以
  1. #include "STC15F104E.h"
  2. #include "intrins.h"
  3. #define u8 unsigned char
  4. #define u16 unsigned int
  5. #define feed_dog() WDT_CONTR |= 0x10
  6. sbit sKEY = P3 ^ 2;
  7. sbit LED = P3 ^ 3;
  8. bit KEY = 1;
  9. u8 KEYms = 0;       //按鍵按下時間毫秒 松開清0
  10. u8 leave = 0;      //按鍵松開時間 減到0 則連擊清0
  11. u8 add = 0;         //按鍵連擊次數
  12. void InitTimer0(){
  13.     TMOD = 0x01;
  14.     TH0 = 0x0FC;
  15.     TL0 = 0x18;
  16.     EA = 1;
  17.     ET0 = 1;
  18.     TR0 = 1;
  19. }

  20. void main(){
  21.     WDT_CONTR = 0x27;
  22.     InitTimer0();
  23.     P3M0=0x08;P3M1=0x00;
  24.     while (1) {
  25.         feed_dog();
  26.         if (KEY == 0) {
  27.             leave = 250;        //等待250毫秒
  28.             if (++add >= 2) {   //雙擊
  29.                 add = 0;
  30.                 LED = !LED;     //LED亮滅翻轉
  31.             }
  32.             while (KEY == 0) {
  33.                 feed_dog();
  34.             }
  35.         }
  36.     }
  37. }

  38. void Timer0Interrupt() interrupt 1 { //12Mhz 1mS定時器中斷
  39.     TH0 = 0x0FC;
  40.     TL0 = 0x18;
  41.     if (leave && !--leave) {
  42.             add = 0;
  43.     }
  44.     if (sKEY) {
  45.         KEYms = 0;
  46.     } else {
  47.         if (KEYms != 0xFF) {
  48.             KEYms++;
  49.         }
  50.     }

  51.     KEY = !(KEYms >= 25);
  52. }
復制代碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区在线不卡 | 欧美在线一级 | 欧美精品综合在线 | 欧美精品国产精品 | 久久久久久综合 | 久久久精彩视频 | 国产免费又色又爽又黄在线观看 | 蜜臀久久99精品久久久久久宅男 | 蜜桃传媒av | 亚洲高清一区二区三区 | 免费一级做a爰片久久毛片潮喷 | 久久亚洲国产 | 国产99久久精品 | 婷婷国产一区 | www.色婷婷 | 天天射中文 | 中文字幕视频在线 | 日韩精品无码一区二区三区 | 激情五月婷婷在线 | 精品久久久久久亚洲综合网 | 精品久久久久久亚洲精品 | 三级国产三级在线 | 黄色大片在线视频 | 一区免费看 | 日韩视频在线观看一区二区 | 久草在线免费资源 | 91资源在线观看 | 日韩伦理一区二区 | 亚州精品天堂中文字幕 | 成人在线电影在线观看 | 国产精品久久久久久网站 | 中文一区二区视频 | 色视频www在线播放国产人成 | 国产网站在线播放 | 九色国产| 国产精品福利网站 | 久久高清国产视频 | 夜夜草视频 | 亚洲视频一区 | 欧美久久精品一级c片 | 午夜精品一区二区三区在线视频 |