51單片機(jī)之獨(dú)立按鍵

按鍵介紹

? 按鍵種類(lèi)繁多绢淀,功能有簡(jiǎn)有繁皆的,極大的充斥著我們的生活。但是無(wú)論如何费薄,所有的按鍵其實(shí)都有一個(gè)原型栖雾,來(lái)源于同一種原理,所有的按鍵無(wú)論多復(fù)雜,多華麗赂鲤,都是從這樣一個(gè)原型發(fā)展而成的柱恤。好比你就算長(zhǎng)的再帥找爱,你也是只猩猩變來(lái)的,呵呵寺谤。我們平日所見(jiàn)到的絕大部分的按鍵吮播,其實(shí)都可以歸類(lèi)為一種,叫“接觸式按鍵”意狠。下圖為一個(gè)典型的接觸式按鍵(又稱(chēng)輕觸開(kāi)關(guān))。

?

? ? 需要特別說(shuō)明的是闷板,這里說(shuō)的“接觸”院塞,是指機(jī)械層面上的接觸,而不是感光或者某些特殊涂層(比如觸摸屏)一類(lèi)的接觸县遣。所以创泄,按鍵的工作特性其實(shí)是一種機(jī)械特性,下文會(huì)詳細(xì)說(shuō)明鞠抑。?

?

? ? ? ?如上圖搁拙,請(qǐng)對(duì)照?qǐng)D一想象,1箕速、2、3兴垦、4 分別對(duì)應(yīng)按鍵的四個(gè)引腳,其中藍(lán)色的線(xiàn)表示按鍵未被按下之時(shí)的狀態(tài)探越,我成為初始狀態(tài),它是不導(dǎo)通的枕屉;而綠色的線(xiàn)是卻永久導(dǎo)通的鲤氢。各位明白了么,其實(shí)是兩個(gè)相同的結(jié)構(gòu)連在一起了卷玉。我們只要將需要按鍵開(kāi)關(guān)作用的線(xiàn)路分別接在1、3 和2咆蒿、4 的任意取一組合蚂子,概括起來(lái)就是(1,2)食茎、(1,4)附迷、(3哎媚,2)、(3,4)四種組合衷快,都可以起到我們預(yù)期的開(kāi)關(guān)作用。

? ? 相信以上說(shuō)明使大家對(duì)按鍵的工作原理有了個(gè)比較清晰的認(rèn)識(shí)了淤毛,現(xiàn)在來(lái)說(shuō)說(shuō)一個(gè)小知識(shí)。先看下圖(圖4):

?

? ? ? ? ? 首先說(shuō)明的是低淡,上圖的連法是不允許的瞬项,因?yàn)楫?dāng)按鍵按下之后滥壕,電源和地短接兽泣,會(huì)將導(dǎo)線(xiàn)直接燒毀胁孙。但是此處用作特例,假設(shè)導(dǎo)線(xiàn)不會(huì)燒毀〕肀牵現(xiàn)在來(lái)提出一個(gè)問(wèn)題狂票,當(dāng)按鍵按下以后,請(qǐng)問(wèn)如果這時(shí)用萬(wàn)用表測(cè)量導(dǎo)線(xiàn)上任何一處的電壓闺属,得到的結(jié)果是VCC 還是GND 的電壓?

? ? ? ? 答案是:GND亚皂,即表示測(cè)出的電壓為0V国瓮。為什么呢,因?yàn)閷?dǎo)線(xiàn)上乃摹,對(duì)于兩端的電平是一種類(lèi)似于程序語(yǔ)言邏輯運(yùn)算里面的“與”,即對(duì)于導(dǎo)線(xiàn)兩端:有零即為零播歼,只有全為一是才為一肪康。理解了這點(diǎn),按鍵的工作前提就有了磷支。

? ? ? ?鍵盤(pán)分為編碼鍵盤(pán)和非編碼鍵盤(pán)。鍵盤(pán)上閉合鍵的識(shí)別由專(zhuān)用的硬件編碼器實(shí)現(xiàn)廓潜,并產(chǎn)生鍵編碼號(hào)或鍵值的稱(chēng)為編碼鍵盤(pán),如計(jì)算機(jī)鍵盤(pán)辩蛋。而靠軟件編程來(lái)識(shí)別的鍵盤(pán)稱(chēng)為非編碼鍵盤(pán),在單片機(jī)組成的各種系統(tǒng)中伤为,用的較多的是非編碼鍵盤(pán)据途。非編碼鍵盤(pán)又分為獨(dú)立鍵盤(pán)和行列式鍵盤(pán)(常說(shuō)的矩陣鍵盤(pán))。在這一講中我們介紹一下單片機(jī)中鍵盤(pán)使用位衩。

??? 單片機(jī)的IO口既可作為輸出也可作為輸入使用,當(dāng)檢測(cè)按鍵時(shí)用的是它的輸入功能糖驴,我們把按鍵的一端接地佛致,另一端與單片機(jī)的某個(gè)I/O口相連,開(kāi)始時(shí)先給該IO口賦一高電平跷睦,然后讓單片機(jī)不斷地檢測(cè)該I/O口是杏變?yōu)榈碗娖剑?dāng)按鍵閉合時(shí)抑诸,即相當(dāng)于該I/O口通過(guò)按鍵與地相連爹殊,變成低電平,程序一旦檢測(cè)到I/O口變?yōu)榈碗娖絼t說(shuō)明按鍵被按下层玲,然后執(zhí)行相應(yīng)的指令。

? ? ?我們先來(lái)說(shuō)一下辛块,按鍵常常遇到的問(wèn)題—抖動(dòng)問(wèn)題铅碍。

?

?

? ? ? ? ? 還以圖4為例,按鍵未按下之前胞谈,圖4按鍵左端的導(dǎo)線(xiàn)因?yàn)檫B在VCC 上而顯示高電平憨愉,右端顯示低電平配紫,按鍵按下后,按鍵閉合躺孝,整個(gè)導(dǎo)線(xiàn)都顯示低電平底桂,然后按鍵松開(kāi),又回到按鍵按下之前的電平狀態(tài)戚啥。如果只考察按鍵左端的電平變化猫十,應(yīng)該是上圖中所顯示的一個(gè)負(fù)脈沖波形呆盖。但是,實(shí)際上应又,正確的波形應(yīng)該是下圖。相比于上圖尤筐,大家都看到了在高低電平直接有一段鋸齒一樣的波形,這就是所謂的按鍵抖動(dòng)盆繁。

? ? ? ? ?為什么會(huì)有按鍵抖動(dòng)呢旬蟋,原因很簡(jiǎn)單,接觸式按鍵是靠機(jī)械的接觸來(lái)實(shí)現(xiàn)開(kāi)關(guān)作用的倾贰。這種接觸方式就注定了它要經(jīng)歷一個(gè)“接觸不穩(wěn)定——正在穩(wěn)定中——徹底穩(wěn)定”的一種過(guò)程。就好比你用手抓緊一顆石頭安寺,即使你一開(kāi)始就很用力的握緊吞彤,也不可能馬上就達(dá)到最緊的狀態(tài)叹放,也要經(jīng)歷一個(gè)從握住到最緊握的過(guò)程挠羔。那么在這個(gè)過(guò)程里,接觸式按鍵就處于一種徘徊在“閉合”與“斷開(kāi)”兩者之間的狀態(tài)俱恶。體現(xiàn)在電路中,就是在一小段時(shí)間內(nèi)有非常多的“按下——抬起”動(dòng)作合是。而這段抖動(dòng)的時(shí)間锭环,大概是10~20 毫秒,依不同的環(huán)境條件而定辅辩。

? ? ? 解決這個(gè)問(wèn)題常見(jiàn)的方法有軟件去抖動(dòng)和硬件去抖動(dòng)。

? ? ? 我們解釋一下抖動(dòng):關(guān)于按鍵去抖動(dòng)的解釋?zhuān)覀冊(cè)谑謩?dòng)按鍵的時(shí)候蛾茉,由于機(jī)械抖動(dòng)或是其它一些非人為的因素很有可能會(huì)造成誤識(shí)別撩鹿,一般手動(dòng)按下一次鍵然后接著釋放,按鍵兩片金屬膜接觸的時(shí)間大約為50ms 左右节沦,在按下瞬間到穩(wěn)定的時(shí)間為5-10ms,在松開(kāi)的瞬間到穩(wěn)定的時(shí)間也為5-10ms,如果我們?cè)偈状螜z測(cè)到鍵被按下后延時(shí)10ms 左右再去檢測(cè)稚机,這時(shí)如果是干擾信號(hào)將不會(huì)被檢測(cè)到获搏,如果確實(shí)是有鍵被按下,則可確認(rèn)常熙,以上為按鍵識(shí)別去抖動(dòng)的原理。

? ? 獨(dú)立鍵盤(pán)?

? ? 開(kāi)發(fā)板獨(dú)立按鍵電路圖如下:?

?

? ? 獨(dú)立按鍵一共8個(gè)仿贬,有對(duì)應(yīng)的插槽可以連接在單片機(jī)的任意IO口墓贿。去抖動(dòng)的方式蜓氨,我們采用軟件延時(shí)的方法队伟。過(guò)程如下:

先設(shè)置IO口為高電平(一般上電默認(rèn)就為高)

讀取IO口電平確認(rèn)是否有按鍵按下

如有IO電平為低電平后,延時(shí)幾個(gè)ms

再讀取該IO電平港令,如果任然為低電平,說(shuō)明對(duì)應(yīng)按鍵按下

執(zhí)行相應(yīng)按鍵的程序

? ?獨(dú)立鍵盤(pán)程序示例:

#include "reg52.h"

typedef unsigned char u8;

typedef unsigned int u16;

sbit led = P0^0; //設(shè)置燈的控制IO口

sbit k1? = P1^0; //設(shè)置按鍵的控制IO口

void delay(u16 i) //延時(shí)函數(shù)

{

? ? while(i--);

}

void keyprocess()

{

if(k1 == 0) //判斷按鍵是否按下

{

? ? delay(1000); //延時(shí)消抖

? ? if(k1 == 0)? //再次判斷按鍵是否按下

? ? {

? ? ? ? led = 1; //如果按鍵按下顷霹,則燈亮

? ? }

? ? else

? ? {

? ? ? ? led = 0; //如果按鍵沒(méi)有按下击吱,則燈滅

? ? }

}

}

void main()

{

? led = 0; //初始燈滅

? while(1)

? {

? keyprocess(); //處理按鍵事件

? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末覆醇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子叫乌,更是在濱河造成了極大的恐慌憨奸,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件排宰,死亡現(xiàn)場(chǎng)離奇詭異那婉,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)盐类,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)呛谜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人隐岛,你說(shuō)我怎么就攤上這事「钭梗” “怎么了齐帚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵对妄,是天一觀(guān)的道長(zhǎng)沪羔。 經(jīng)常有香客問(wèn)我,道長(zhǎng)琅豆,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任茫因,我火速辦了婚禮杖剪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘盛嘿。我一直安慰自己,他們只是感情好稿茉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布芥炭。 她就那樣靜靜地躺著,像睡著了一般园蝠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茂装,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天善延,我揣著相機(jī)與錄音,去河邊找鬼挚冤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛训挡,可吹牛的內(nèi)容都是我干的歧强。 我是一名探鬼主播为肮,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼颊艳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了棋枕?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤兵睛,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后祖很,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體漾脂,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年笨鸡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了啊终。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片傲须。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖例衍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情佛玄,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布梦抢,位于F島的核電站愧哟,受9級(jí)特大地震影響哼蛆,放射性物質(zhì)發(fā)生泄漏霞赫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一叠洗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灭抑,春花似錦、人聲如沸名挥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)参淫。三九已至,卻和暖如春涎才,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耍铜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留陡舅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓靶衍,卻偏偏與公主長(zhǎng)得像茎芋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子田弥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容