呂永利+趙雙勇+鞠建勛
(漯河醫(yī)學(xué)高等專科學(xué)校第二附屬醫(yī)院設(shè)備科,河南 漯河 462300)
【摘 要】本文主要描述陣列式按鍵的設(shè)計方法,分別從按鍵的連接方式,陣列式按鍵的連接方式,不使用驅(qū)動芯片和使用驅(qū)動芯片控制陣列式按鍵的方法幾個方面進行描述,使讀者對按鍵的設(shè)計有系統(tǒng)的了解。
【關(guān)鍵詞】按鍵;陣列;驅(qū)動芯片
引言:
按鍵在儀器儀表及多種設(shè)備中都有廣泛應(yīng)用,是人機交互中重要的信息輸入設(shè)備,可配合顯示設(shè)備,共同完成對機器設(shè)備的控制。在需要輸入復(fù)雜信息是,就需要多個按鍵組成按鍵組才能完成。
對于需要使用多個按鍵的情況,如果每個按鍵都連接一條控制芯片的IO腳,會嚴重浪費控制芯片的IO資源,增加排板時連線的復(fù)雜度,而且,其控制程序也會比較分散,集成化程度不高。對于這種情況,通常使用陣列式按鍵方式處理。
陣列式按鍵方式是將多個按鍵排列成最接近方形的矩陣,通過按鍵在矩陣中的行坐標和列坐標定位按鍵,通過逐行逐列掃描的方式查詢每一個按鍵,從而查詢到每個按鍵的狀態(tài)。
假設(shè)陣列式按鍵為M行N列,那么使用M+N條IO口,即可完成對M×N個按鍵的控制,這大大減少了IO口的使用量,節(jié)省了IO資源,而且,可以用比較精煉的代碼,寫出掃描按鍵的驅(qū)動程序,從而提高了代碼的效率和集成化程度。IO口的減少,節(jié)省了排板空間,有利于印制板小型化。
針對于陣列式按鍵方式,一些芯片廠商開發(fā)出一系列控制芯片,這些控制芯片可完成對按鍵陣列的掃描,并將掃描結(jié)果通過并行或串行總線上報給CPU。本文分別描述了串行和并行按鍵控制芯片的使用方法。
一、按鍵的連接方法
如圖1所示,按鍵一端接地,另一端加上拉電阻后連接到控制芯片IO口。
這種連接方式,在按鍵未按下時,圖中“POWER”位置的電平為高;按鍵按下時,圖中“POWER”位置的電平為低。
控制芯片需要編寫的按鍵處理代碼為:
(a)IO口初始化
控制芯片將連接此按鍵的IO口設(shè)置為輸入。
(b)掃描
編寫程序循環(huán)掃描此IO口狀態(tài)。
(1)當讀到IO口狀態(tài)為高時,初步確定有按鍵按下;
(2)按鍵消抖,如果運行消抖程序,確定讀到的IO口狀態(tài)為高為按鍵抖動,則跳出此次掃描,如果確定讀到的IO口狀態(tài)為高不是按鍵抖動,則繼續(xù)向下運行;
(3)按鍵處理。即按鍵按下后根據(jù)要求,做出相應(yīng)的處理。
二、陣列式按鍵的連接方法
圖2所示為4行5列按鍵,控制20個按鍵。
這種連接方式,圖中“Row0”位置、“Row1”位置、“Row2”位置、“Row3”位置、“Column0”位置、“Column1”位置、“Column2”位置、“Column3”位置、“Column4”位置分別連接控制芯片IO口??刂菩酒ㄟ^IO口掃描按鍵陣列。
三、無驅(qū)動芯片的陣列式按鍵的控制方法
陣列按鍵連接到控制芯片的IO口分別命名為R0、R1、R2、R3、C0、C1、C2、C3、C4(R表示行,C表示列,R0表示IO口與陣列按鍵的第0行連接,其它同理)
陣列式按鍵掃描方法,以圖2的按鍵為例,方法如下。
(a) IO口初始化。將IO口R0、R1、R2、R3設(shè)置為輸出,將“IO口C0、C1、C2、C3、C4設(shè)置為輸入。
(b)IO口R0置高,R1置低,R2置低,R3置低,查詢IO口C0、C1、C2、C3、C4狀態(tài),若都為低,表明沒有按鍵按下,繼續(xù)執(zhí)行下一步,若有高,則判斷是哪條IO口為高,從而判斷是第0行哪一列按鍵按下,記下鍵值后跳出掃描。
(c)IO口R0置低,R1置高,R2置低,R3置低,查詢IO口C0、C1、C2、C3、C4狀態(tài),若都為低,表明沒有按鍵按下,繼續(xù)執(zhí)行下一步,若有高,則判斷是哪條IO口為高,從而判斷是第1行哪一列按鍵按下,記下鍵值后跳出掃描。
(d)IO口R0置低,R1置低,R2置高,R3置低,查詢IO口C0、C1、C2、C3、C4狀態(tài),若都為低,表明沒有按鍵按下,繼續(xù)執(zhí)行下一步,若有高,則判斷是哪條IO口為高,從而判斷是第2行哪一列按鍵按下,記下鍵值后跳出掃描。
(e)IO口R0置低,R1置低,R2置低,R3置高,查詢IO口C0、C1、C2、C3、C4狀態(tài),若都為低,表明沒有按鍵按下,繼續(xù)執(zhí)行下一步,若有高,則判斷是哪條IO口為高,從而判斷是第3行哪一列按鍵按下,記下鍵值后跳出掃描。
(f)若步驟e)判斷結(jié)果仍為無按鍵按下,跳出掃描,判定結(jié)果為無按鍵按下,掃描結(jié)束。
此掃描操作具有一定的規(guī)律性,可用循環(huán)語句描述,代碼將非常簡練。
四、有驅(qū)動芯片的陣列式按鍵的控制方法
按鍵控制芯片可完成對按鍵陣列的掃描,并將掃描結(jié)果通過并行或串行總線上報給CPU。以下介紹并行方式的按鍵控制芯片MM74C923WM和串行方式的按鍵控制芯片TCA8418RTWR。
(一)使用芯片MM74C923WM驅(qū)動陣列式按鍵
按鍵控制芯片MM74C923WM為3.3V供電的20腳芯片。外圍電路簡單,最多可控制4行5列的陣列式按鍵,即最多可控制20個按鍵。與CPU接口為并行接口,帶有中斷模式,可在按鍵按下時產(chǎn)生中斷信號。
1.連接方式
MM74C923WM的連接方式有以下說明。
(a)MM74C923WM與陣列式按鍵接口:
(1)MM74C923WM的1腳至5腳與陣列式按鍵的列控制腳連接,MM74C923WM的1腳至5腳分別連接圖2中“Column0”至“Column4”位置。
(2)MM74C923WM的11腳、12腳、9腳、8腳與陣列式按鍵的行控制腳連接,MM74C923WM的11腳、12腳、9腳、8腳分別連接圖2中“Row0”至“Row3”位置。
(b)MM74C923WM與CPU接口:
(1)MM74C923WM的15腳至19腳與CPU端連接,為并行數(shù)據(jù)線,從此并行數(shù)據(jù)線上可讀出被按下的按鍵的鍵值。
(2)M74C923WM的14與CPU端連接,此腳為M74C923WM使能引腳,CPU可以通過控制此腳高低來使能和禁止M74C923WM。
(3)M74C923WM的13腳與CPU端連接,此腳為M74C923WM中斷引腳,CPU可以通過讀取此腳狀態(tài)來判斷是否有按鍵按下動作發(fā)生。
2.CPU控制方法
CPU芯片的外部中斷腳與M74C923WM的13腳連接,當按鍵按下時產(chǎn)生中斷信號,CPU接收到中斷信號后產(chǎn)生中斷,進入中斷服務(wù)函數(shù),通過并行數(shù)據(jù)線讀取被按下按鍵的鍵值,從而根據(jù)鍵值進行按鍵處理。
(二)使用芯片TCA8418RTWR驅(qū)動陣列式按鍵
按鍵控制芯片TCA8418RTWR為3.3V供電的24腳芯片。超小封裝,外圍電路簡單,最多可控制8行10列的陣列式按鍵,即最多可控制80個按鍵。與CPU接口為串行接口,帶有中斷模式,可在按鍵按下時產(chǎn)生中斷信號。
五、結(jié)束語
使用芯片TCA8418RTWR驅(qū)動陣列式按鍵,這種方式在多按鍵處理中優(yōu)勢較大,可將芯片芯片TCA8418RTWR排在按鍵板上,這樣,按鍵板與控制板之間的接口線的數(shù)量將縮減至5根,可提升接口的可靠性。
【參考文獻】
[1]M74C923數(shù)據(jù)手冊.National Semiconductor。
[2]TCA8418數(shù)據(jù)手冊.TI。