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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3286|回復(fù): 19
打印 上一主題 下一主題
收起左側(cè)

關(guān)于單片機(jī)驅(qū)動(dòng)獨(dú)立按鍵的幾個(gè)問題,求分析

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:232366 發(fā)表于 2021-1-19 23:53 來(lái)自觸屏版 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
今天做獨(dú)立按鍵  控制數(shù)碼管的一個(gè)程序過程如下:
實(shí)驗(yàn)效果為按鍵按一下數(shù)碼管顯示鍵值
問題是1   因?yàn)槲业陌存I掃描是用的延時(shí)消抖
再一個(gè)就是松手檢測(cè)用的是這種while(!KEY1);
按鍵一直按著程序就死在循環(huán)這里導(dǎo)致每次按一下數(shù)碼管都閃一下這個(gè)閃一下我估計(jì)應(yīng)該就是程序就停在這里不走了這個(gè)會(huì)不會(huì)是一個(gè)弊端?
問題2  假如按鍵不松手重新一直就不走永遠(yuǎn)死在這了?    在做實(shí)驗(yàn)的時(shí)候試過通過標(biāo)志位的辦法來(lái)判斷和檢測(cè)   可是始終調(diào)不通無(wú)奈沒辦法初學(xué)者了解的也比較少!只能相論壇的師傅們請(qǐng)教了!
求問  有沒有其他什么辦法或者給一個(gè)思路可以在按鍵在沒有松手的情況下程序也不會(huì)停止返回來(lái)繼續(xù)判斷按鍵是否松開  松開了就為下一次按下做準(zhǔn)備。沒松開就繼續(xù)掃描。


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

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2021-1-20 06:19 | 只看該作者
樓主所述的按鍵程序只是一些入門級(jí)文章介紹的方法,目的是讓初學(xué)者初步了解MCU識(shí)別按鍵操作的過程。其具有不可克服的弊端,不可用于實(shí)戰(zhàn)中。關(guān)于各種應(yīng)用場(chǎng)景的按鍵掃描程序的寫法數(shù)不勝數(shù)。給你一款可用于實(shí)戰(zhàn)的獨(dú)立按鍵示例。
  1. #include <reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. sbit key=P3^4;                                //按鍵端口

  5. uchar key_value;                        //鍵值變量
  6. uint  count=0;                                //消抖計(jì)數(shù)變量
  7. bit   sign=0;                                //按鍵狀態(tài)標(biāo)志


  8. void keyscan()                                //按鍵掃描程序
  9. {
  10.         if(key==0)                                //檢測(cè)按鍵按下
  11.         {
  12.                 count++;                                //消抖計(jì)數(shù)
  13.                 if(count>=100 && sign==0)//100~1000,根據(jù)主循環(huán)周期調(diào)整約10~20ms
  14.                 {                       
  15.                         sign=1;                        //按鍵狀態(tài)標(biāo)志置1
  16.                         key_value++;
  17.                 }
  18.         }
  19.         else                                                //鍵抬起
  20.         {
  21.                 sign=0;                                //按鍵狀態(tài)標(biāo)志清0
  22.                 count=0;                                //消抖計(jì)數(shù)清0
  23.         }
  24. }
  25. void main()                                                //主函數(shù)
  26. {
  27.         while(1)
  28.         {
  29.                 keyscan();                                //按鍵掃描程序
  30.                 P1=~key_value;                        //P1接LED,鍵值取反低電平亮顯示鍵值
  31.         }
  32. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

板凳
ID:232366 發(fā)表于 2021-1-20 08:26 | 只看該作者
wulin 發(fā)表于 2021-1-20 06:19
樓主所述的按鍵程序只是一些入門級(jí)文章介紹的方法,目的是讓初學(xué)者初步了解MCU識(shí)別按鍵操作的過程。其具有 ...

是的如您所說(shuō)本人目前學(xué)習(xí)編程方法也比較入門也比較傻瓜式編程,在這里非常感謝您的回復(fù)和這歷程回去后好好研究一下其運(yùn)行原理十分感謝!!!!
回復(fù)

使用道具 舉報(bào)

地板
ID:752974 發(fā)表于 2021-1-20 08:56 | 只看該作者
我發(fā)了一個(gè)簡(jiǎn)易按鍵的處理函數(shù)的帖子,可以解決你的問題,審核通過后可以去看看。
回復(fù)

使用道具 舉報(bào)

5#
ID:390416 發(fā)表于 2021-1-20 10:01 | 只看該作者
本帖最后由 人人學(xué)會(huì)單片機(jī) 于 2021-1-20 18:35 編輯

下面的這個(gè)就是按鍵長(zhǎng)短按的,主函數(shù)循環(huán)掃碼就行,沒有死等!!!!
void ROTARY_Key_Scan_Drive()
{
        static bit flag1=0;
        static bit flag2=1;
        static bit key_down=0;
        static u8 count1=0;
        static u16 count2=0;
        if(key_down==1)
        {
                count2++;
                if(count2>10000)
                {
                        count2=0;
                        flag1=1;
                        if(flag2)
                        {
                                flag2=0;
                                Rotary_Read_Data_Key=ROTARY_KEY_L;
                        }
                }
                if(ROTARY_MUTE==1)
                {
                        key_down=0;
                        flag2=1;
                        count2=0;
                        if(flag1)
                        {
                                flag1=0;
                        }
                        else
                        {
                                Rotary_Read_Data_Key=ROTARY_KEY_S;        
                        }
                }
        }
        else
        {
                if(ROTARY_MUTE==0)
                {
                        count1++;
                        if(count1>100)
                        {
                                count1=0;
                                if(ROTARY_MUTE==0)
                                {
                                        key_down=1;
                                }
                        }
                }
                else
                {
                        count1=0;
                }
        }
}
我發(fā)的貼子有圖片,你可以看看 加深理解 http://www.zg4o1577.cn/bbs/dpj-201806-1.html
回復(fù)

使用道具 舉報(bào)

6#
ID:232366 發(fā)表于 2021-1-20 10:31 | 只看該作者
munuc_w 發(fā)表于 2021-1-20 08:56
我發(fā)了一個(gè)簡(jiǎn)易按鍵的處理函數(shù)的帖子,可以解決你的問題,審核通過后可以去看看。

看不見樓主能不能給個(gè)鏈接記錄!!!!
回復(fù)

使用道具 舉報(bào)

7#
ID:390416 發(fā)表于 2021-1-20 10:36 | 只看該作者
http://www.zg4o1577.cn/bbs/dpj-201806-1.html 這個(gè)是我寫的貼子,審核通過后就能看到了
回復(fù)

使用道具 舉報(bào)

8#
ID:752974 發(fā)表于 2021-1-20 11:04 | 只看該作者
SHANWAZI 發(fā)表于 2021-1-20 10:31
看不見樓主能不能給個(gè)鏈接記錄!!!!

好像領(lǐng)到在審查。。。。
回復(fù)

使用道具 舉報(bào)

9#
ID:232366 發(fā)表于 2021-1-20 11:12 | 只看該作者
munuc_w 發(fā)表于 2021-1-20 11:04
好像領(lǐng)到在審查。。。。

我現(xiàn)在還在單步運(yùn)行調(diào)試樓上師傅給的思路
回復(fù)

使用道具 舉報(bào)

10#
ID:213173 發(fā)表于 2021-1-20 11:25 | 只看該作者
SHANWAZI 發(fā)表于 2021-1-20 08:26
是的如您所說(shuō)本人目前學(xué)習(xí)編程方法也比較入門也比較傻瓜式編程,在這里非常感謝您的回復(fù)和這歷程回去后好 ...

一款簡(jiǎn)練的矩陣鍵盤數(shù)碼管顯示程序仿真.zip (109.55 KB, 下載次數(shù): 9)
回復(fù)

使用道具 舉報(bào)

11#
ID:232366 發(fā)表于 2021-1-20 11:34 | 只看該作者
wulin 發(fā)表于 2021-1-20 06:19
樓主所述的按鍵程序只是一些入門級(jí)文章介紹的方法,目的是讓初學(xué)者初步了解MCU識(shí)別按鍵操作的過程。其具有 ...

您的例程我去研究一下了似乎有點(diǎn)巧妙   
只要按鍵不松開count貌似一直在自加  但是這個(gè)時(shí)候按鍵標(biāo)志位已經(jīng)被置位為1
在這里 if(count>=2 && kye_up==0)
{
         kye_up==1;
}
這標(biāo)志位要檢到0 兩個(gè)條件才會(huì)成立  兩個(gè)有一個(gè)不成立則不執(zhí)行后面的語(yǔ)句?
只要按鍵不松開標(biāo)志位就不清零??
以上我去單步運(yùn)行得出不知道對(duì)不對(duì)。
回復(fù)

使用道具 舉報(bào)

12#
ID:213173 發(fā)表于 2021-1-20 11:42 | 只看該作者
SHANWAZI 發(fā)表于 2021-1-20 11:34
您的例程我去研究一下了似乎有點(diǎn)巧妙   
只要按鍵不松開count貌似一直在自加  但是這個(gè)時(shí)候按鍵標(biāo)志位 ...

你理解的很正確,兩個(gè)條件同時(shí)成立才會(huì)執(zhí)行,count也不怕溢出,松手就清0。
回復(fù)

使用道具 舉報(bào)

13#
ID:607312 發(fā)表于 2021-1-20 11:47 | 只看該作者
        while((a<50)&&(GPIO_KEY!=0xf0))         //檢測(cè)按鍵松手檢測(cè)
                        {
                                delay(1000);
                                。。。。。。。。。。
                        }
回復(fù)

使用道具 舉報(bào)

14#
ID:232366 發(fā)表于 2021-1-20 11:56 來(lái)自觸屏版 | 只看該作者
wulin 發(fā)表于 2021-1-20 11:42
你理解的很正確,兩個(gè)條件同時(shí)成立才會(huì)執(zhí)行,count也不怕溢出,松手就清0。

即使加到65535再加一會(huì)從0開始再來(lái)一遍  只要按鍵不松開此計(jì)數(shù)就不清0
我明白了   非常感謝您給的思路這下問題迎刃而解真的的跪謝了!   
回復(fù)

使用道具 舉報(bào)

15#
ID:232366 發(fā)表于 2021-1-20 11:58 來(lái)自觸屏版 | 只看該作者
cdiyy 發(fā)表于 2021-1-20 11:47
while((a

感謝回復(fù)   我還在研究理解樓上例程!
回復(fù)

使用道具 舉報(bào)

16#
ID:390416 發(fā)表于 2021-1-20 18:34 | 只看該作者
用我回復(fù)你的代碼,或者看看我的貼子 http://www.zg4o1577.cn/bbs/dpj-201806-1.html
回復(fù)

使用道具 舉報(bào)

17#
ID:232366 發(fā)表于 2021-1-21 09:42 | 只看該作者
人人學(xué)會(huì)單片機(jī) 發(fā)表于 2021-1-20 10:01
下面的這個(gè)就是按鍵長(zhǎng)短按的,主函數(shù)循環(huán)掃碼就行,沒有死等!!!!
void ROTARY_Key_Scan_Drive()
{

太復(fù)雜短按都沒弄透徹  您這更加把兩個(gè)結(jié)合到了一起我這種初級(jí)手不太適合
回復(fù)

使用道具 舉報(bào)

18#
ID:811405 發(fā)表于 2021-1-28 12:00 | 只看該作者
獨(dú)立按鍵比其他的按鍵操作更簡(jiǎn)單
回復(fù)

使用道具 舉報(bào)

19#
ID:232366 發(fā)表于 2021-1-28 14:10 來(lái)自觸屏版 | 只看該作者
學(xué)生1 發(fā)表于 2021-1-28 12:00
獨(dú)立按鍵比其他的按鍵操作更簡(jiǎn)單

是的  !
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久久久游泳池 | 久草网免费 | 日日操av| 99久久精品免费看国产小宝寻花 | 亚洲一区二区三区四区五区午夜 | 超级乱淫av片免费播放 | 桃花av在线 | 欧美久久视频 | 中文字幕免费中文 | 中文字幕日韩三级 | 国产精品不卡一区二区三区 | 中文字幕一区在线 | 99精品视频免费观看 | 成人午夜免费在线视频 | 天堂一区二区三区四区 | 亚洲国产成人在线观看 | 国产探花在线观看视频 | 中文字幕一区二区三区四区五区 | 毛片一区二区 | 日本三级电影免费观看 | 中文字幕 亚洲一区 | 黄色av网站在线免费观看 | 6080亚洲精品一区二区 | 欧美一区二区三区在线 | 久久久久久国产精品免费 | 国产精品区一区二 | 久久久91精品国产一区二区三区 | 97国产成人 | 99视频在线 | 欧美极品视频 | 91n成人| 欧美一区二区三区免费电影 | 久草免费福利 | 国产乱精品一区二区三区 | 午夜看片网站 | xxxxx免费视频 | www.se91| 欧美国产视频 | 不卡的av在线 | 2020天天操 | 国产97在线视频 |