《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的單鍵電路設(shè)計(jì)及對(duì)應(yīng)程序
基于單片機(jī)的單鍵電路設(shè)計(jì)及對(duì)應(yīng)程序
維庫(kù)
摘要: 單鍵,,就是每個(gè)按鍵占用一個(gè)單片機(jī)的管腳,,這種接法的特點(diǎn)是電路和程序都很簡(jiǎn)單,缺點(diǎn)是占用單片機(jī)的管腳多,、消耗硬件資源大,。這種接法一般適合于6個(gè)或不多于6個(gè)按鍵。單鍵電路的電路圖見圖1,,由圖可以看出,,
關(guān)鍵詞: 51單片機(jī) 單片機(jī)
Abstract:
Key words :

 單鍵,就是每個(gè)按鍵占用一個(gè)單片機(jī)的管腳,,這種接法的特點(diǎn)是電路和程序都很簡(jiǎn)單,,缺點(diǎn)是占用單片機(jī)的管腳多、消耗硬件資源大,。這種接法一般適合于 6個(gè)或不多于6個(gè)按鍵,。

單鍵電路的電路圖見圖1,,由圖可以看出,每一個(gè)按鍵的一端都直接連有一個(gè)8255的PC端口的一個(gè)管腳作為輸入管腳,,并且這個(gè)端口管腳只連有一個(gè)按鍵,,這樣的接法就是單鍵接法。單鍵接法要求按鍵的一端接有一個(gè)上拉電阻,,而按鍵的另一端直接接地,,這樣可以在按鍵沒有合上的時(shí)候保持輸入管腳始終是高電平。如果程序檢測(cè)到這個(gè)管腳為高電平,,就會(huì)認(rèn)為該管腳的按鍵沒有按下,,而按鍵合上以后,輸入管腳的電平就會(huì)變成低電平,,這樣當(dāng)程序檢測(cè)出輸入管腳為低電平以后,,就會(huì)認(rèn)為這個(gè)按鍵被按下。

單鍵電路
單鍵電路
圖1單鍵電路

按鍵,,特別是機(jī)械按鍵按下后會(huì)有一定的抖動(dòng),,這個(gè)抖動(dòng)會(huì)持續(xù)很短的時(shí)間。這個(gè)抖動(dòng)會(huì)引起程序的異常,,因?yàn)槌绦蚝芸赡軙?huì)認(rèn)為在這么短的時(shí)間內(nèi)這個(gè)按鍵被按下很多次,,有很多資料特別提到了防抖電路。實(shí)踐證明,,這個(gè)電路完全可以忽略,,使用程序完全可以代替這個(gè)電路。

有些資料也是使用程序代替防抖電路,,但是是用數(shù)十毫秒的延時(shí)電路,,這樣的程序毫無疑問會(huì)增加程序時(shí)間的開銷,對(duì)程序快速反應(yīng)不利,。

我們可以通過程序處理把按鍵變成所謂的微分按鍵,,所謂微分,實(shí)際上是指我們只處理按鍵的變化,,沒有變化的按鍵信息我們是不處理的,,由于微分按鍵只處理第一次變化的信息,因此短時(shí)間的按鍵抖動(dòng)是不會(huì)產(chǎn)生誤操作的,。

下面給出相應(yīng)的按鍵程序并分析,。

在本程序中,所謂的單鍵輸入實(shí)際上就是讀出8255的PC口的信息,。

程序首先檢查是不是有按鍵按下,,如果沒有,則將按鍵特征變量ktz置0,,同時(shí)退出本函數(shù),,這樣減少了無用程序的運(yùn)行時(shí)間,。如果有按鍵按下同時(shí) ktz等于0(表明是第一次按下),,則轉(zhuǎn)入按鍵處理部分,。按鍵處理主要是定義按鍵編碼,因?yàn)閺妮斎肟谧x入的按鍵值通常需要處理,,以便過濾不必要的信息或干擾,,同時(shí)將輸入值規(guī)整為便于我們處理的鍵碼。這里的鍵碼就是1,、2,、3、4,、5,、6、7,、8,,這8個(gè)數(shù)字對(duì)應(yīng)8個(gè)按鍵。單鍵輸入函數(shù)的流程圖如圖2所示,,對(duì)應(yīng)程序如下:

單鍵輸入函數(shù)的流程圖

單鍵輸入函數(shù)的流程圖

圖2 單鍵輸入函數(shù)的流程圖




圖2 單鍵輸入函數(shù)的流程圖




 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。