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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機松手檢測問題,如何實現松手檢測,這里的有點問題

[復制鏈接]
跳轉到指定樓層
樓主
unsigned char key_scan(void)
{
   char  row;//DD
   char list;//áD
   char i;
   char val;
   unsigned char keyvalue[] = {0x77,0x7b,0x7d,0x7e,0xb7,0xbb,0xbd,0xbe,0xd7,0xdb,0xdd,0xde,0xe7,0xeb,0xed,0xee,};

  KEY = 0xf0;

  if(KEY != 0xf0)
  {
    delay();
    if(KEY != 0xf0)
    {
      row      = KEY&0xf0;
      KEY = 0x0f;
      list     = KEY&0x0f;
      val = row|list;
      for(i = 0; i < 16; i++)
      {
        if(val == keyvalue[i])
        {
         while(KEY != 0xf0);//松手檢測
          return i;
        }
      }
    }
  }
}

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

使用道具 舉報

沙發
ID:164602 發表于 2018-9-29 08:26 | 只看該作者
看了你的程序,確實,松手檢測太簡單了,它的最大問題,就是不松手,則程序“死”在這個檢測語句處。
我是這樣寫的(不是我的首創,學習的時候,老師就是這樣教的)
  while((i<50)&&(k1==0))
   {
    Delay10ms(1);
                                    i++;
                            }
                            i=0;
回復

使用道具 舉報

板凳
ID:142559 發表于 2018-9-29 10:40 | 只看該作者
KEY = 0xf0;你這是打算四個按鍵一起按嗎?
回復

使用道具 舉報

地板
ID:213173 發表于 2018-9-29 14:41 | 只看該作者
松手檢測寫錯了
錯誤:while(KEY != 0xf0);
正確:while(KEY != 0x0f);
回復

使用道具 舉報

5#
ID:384090 發表于 2018-9-29 18:03 | 只看該作者
wulin 發表于 2018-9-29 14:41
松手檢測寫錯了
錯誤:while(KEY != 0xf0);
正確:while(KEY != 0x0f);

這樣寫也不行,我之前就是這樣寫的!
回復

使用道具 舉報

6#
ID:150530 發表于 2018-9-29 19:11 來自觸屏版 | 只看該作者
松手檢測可以通過簡單延時來實現,不過感覺有點浪費資源
回復

使用道具 舉報

7#
ID:213173 發表于 2018-9-29 20:12 | 只看該作者
LPY_1997 發表于 2018-9-29 18:03
這樣寫也不行,我之前就是這樣寫的!

是你的程序還有其它問題,這在你的程序基礎上完善后的仿真。
#include<reg52.h>
#define KEY P1
unsigned char j;
unsigned char i;
unsigned char  code table[]={
        0x01,0x02,0x03,0x04,
        0x05,0x06,0x07,0x08,
        0x09,0x0a,0x0b,0x0c,
        0x0d,0x0e,0x0f,0x10};
void delay(unsigned int x)
{
        unsigned char i;
        while(x--)
        {
                for(i=123;i>0;i--);
        }
}
void key_scan(void)
{
   char  row;//DD
   char list;//áD

   char val;
   unsigned char keyvalue[] = {0x77,0x7b,0x7d,0x7e,0xb7,0xbb,0xbd,0xbe,0xd7,0xdb,0xdd,0xde,0xe7,0xeb,0xed,0xee,};

        KEY = 0xf0;
        if(KEY != 0xf0)
        {
                delay(20);
                if(KEY != 0xf0)
                {
                        row = KEY&0xf0;
                        KEY = 0x0f;
                        list= KEY&0x0f;
                        val = row|list;
                        for(i = 0; i < 16; i++)
                        {
                                if(val == keyvalue)
                                {
                                        j=table;
                                        while(KEY != 0x0f);//松手檢測
                                        break;
                                }
                        }
                }
        }
}

void main()
{

    while(1)
    {
                key_scan();
                P3=j;
        }
}




回復

使用道具 舉報

8#
ID:111634 發表于 2018-9-30 06:44 | 只看該作者
什么叫單片機松手檢測?

評分

參與人數 1黑幣 +5 收起 理由
yousunny + 5 很給力!

查看全部評分

回復

使用道具 舉報

9#
ID:308437 發表于 2018-9-30 09:17 | 只看該作者
其實想問的應該是  怎么檢查按鍵是否彈起吧?(上升沿)而不是松手檢測?
回復

使用道具 舉報

10#
ID:279667 發表于 2018-9-30 09:28 | 只看該作者
這個和物理按鍵消抖原理不是一樣的么?如果松開按鍵為高電平的話,那就判斷1秒鐘,如果還是高電平的話不就是松手了?同理按下為低電平的話,那判斷1秒,如果還是低電平不就是松手了?
回復

使用道具 舉報

11#
ID:404329 發表于 2018-9-30 11:13 | 只看該作者
主程序做檢測,做好標記,用定時器測量時間和釋放即可
回復

使用道具 舉報

12#
ID:384090 發表于 2018-9-30 21:14 | 只看該作者
wulin 發表于 2018-9-29 20:12
是你的程序還有其它問題,這在你的程序基礎上完善后的仿真。
#include
#define KEY P1

數組好像寫的有點問題,仿真結果確定正確嗎
回復

使用道具 舉報

13#
ID:111634 發表于 2018-10-1 11:59 | 只看該作者
實例5  4種不同方式鍵控信號燈
回復

使用道具 舉報

14#
ID:111634 發表于 2018-10-1 12:00 | 只看該作者
本帖最后由 zl2168 于 2018-10-1 16:07 編輯

給你介紹上升沿、上升沿延遲、下降沿、下降沿延遲等多種按鍵觸發狀態
單片機應用系統中,根據按鍵閉合和釋放狀態,有多種不同的鍵控方式,可編寫不同的程序予以實現。
本例要求按以下4種不同方式分別鍵控VD0~ VD3。
① 無鎖按鍵:S0按下,VD0亮;S0釋放,VD0暗;
② 無鎖按鍵(前沿有效):S1按下,VD1亮;S1釋放,VD1延時2s后暗。
③ 無鎖按鍵(后沿有效):S2按下,VD2不亮;S2釋放,VD2亮,并延時2s后暗。
④ 模擬有鎖按鍵:S3按第一次,VD3亮,并繼續保持;按第二次,VD3才暗。

Proteus仿真一下,確認有效。
實例5 不同方式鍵控燈.rar (31.72 KB, 下載次數: 7)

以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1.書中電路和程序設計有詳細說明,程序語句條條有注解。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 超碰高清| 日本一区二区在线视频 | 999在线精品 | 久久精品二区 | 97视频在线观看网站 | 中文一区 | 视频一区二区在线观看 | 成人一区av | 精品99在线| 狠狠干网站 | 国产精品日日摸夜夜添夜夜av | 亚洲天堂精品久久 | 中文字幕 亚洲一区 | 2019天天操| 在线观看免费观看在线91 | 国产精品3区 | 免费三级黄 | 成人在线视频免费看 | 国产精品一区二区福利视频 | 特级黄一级播放 | 日韩一区二区三区在线 | 最新中文字幕在线 | 在线观看视频91 | 久草精品视频 | 一区在线观看 | 99re6在线视频 | 亚洲情综合五月天 | 成人在线不卡 | 91精品久久久久久久久久入口 | 91看片在线观看 | 亚洲一区不卡在线 | 欧美片网站免费 | 国产精品99久久久久久久久久久久 | 亚洲精品久久国产高清情趣图文 | 欧美大片一区二区 | 成人免费在线观看 | 国产精品永久 | 国产日韩欧美在线 | h在线| 精品国产鲁一鲁一区二区张丽 | 国产精品一二区 |