【硬件設(shè)計(jì)】嵌入式輸入設(shè)備設(shè)計(jì)
常見的人機(jī)交互輸入設(shè)備包括按鍵、觸摸屏、麥克風(fēng)及其他各類用戶可控輸入的傳感器等。隨著科技的發(fā)展,不僅我們常見的交互輸入設(shè)備出現(xiàn)了新的形態(tài),而且也出現(xiàn)了不少新的交互輸入方式。比如,現(xiàn)在手機(jī)中的電容按鍵及重力感應(yīng)傳感器、距離傳感器?,F(xiàn)在的交互設(shè)備不僅體現(xiàn)在硬件設(shè)備的復(fù)雜性上,而且在相關(guān)數(shù)據(jù)的復(fù)雜性上也與以往有了較大的增加。比如,可用于語音輸入的麥克和可用于人臉識(shí)別的攝像頭,為了完成這些人機(jī)交互輸入,除了硬件輸入設(shè)備對(duì)信息采集外,還需要后臺(tái)進(jìn)行大量的數(shù)據(jù)處理,以幫助系統(tǒng)“理解”用戶的“輸入信息”。
下面我們?cè)敿?xì)介紹最常用的輸入設(shè)備:鍵盤/按鍵。
鍵盤是嵌入式應(yīng)用的常用外部設(shè)備之一。鍵盤是由若干個(gè)按鍵組成的開關(guān)矩陣,它是最簡(jiǎn)單的數(shù)字量輸入設(shè)備。對(duì)系統(tǒng)而言,鍵盤上不同的按鍵代表著不同的含義(一般來說,按鍵的含義可通過軟件定義)。用戶通過按動(dòng)鍵盤的按鍵,輸入數(shù)據(jù)或命令,實(shí)現(xiàn)簡(jiǎn)單的人機(jī)交互。
鍵盤的基本電路是一個(gè)接觸開關(guān),通、斷兩種狀態(tài)分別表示邏輯“0”和“1”。如圖2所示,當(dāng)開關(guān)打開時(shí),處理器檢測(cè)到相應(yīng)引腳為高電平,表示邏輯“1”;當(dāng)開關(guān)閉合時(shí),處理器檢測(cè)到相應(yīng)引腳為低電平,表示邏輯“0”。
按鍵排布的方式,鍵盤可分為可分成獨(dú)立式按鍵鍵盤和矩陣式按鍵鍵盤;按讀入鍵值的方式,可分為直讀方式和掃描方式;按編碼方式,可分成非編碼方式和硬件編碼方式;按微處理器響應(yīng)方式可分為中斷方式和查詢方式。以上各種方式組合可構(gòu)成不同硬件結(jié)構(gòu)和接口的鍵盤。以下介紹較為常用的兩種方式。
①獨(dú)立式
獨(dú)立式按鍵鍵盤是指將每個(gè)獨(dú)立按鍵按一對(duì)一的方式直接接到微處理器的I/O輸入端口,如圖2所示。讀鍵值時(shí),處理器可以檢測(cè)相應(yīng)I/O輸入端口的狀態(tài),判定輸入電平,確定輸入的邏輯值。按鍵之間在硬件和讀取方式上均相互獨(dú)立,所以習(xí)慣稱這種按鍵為獨(dú)立式按鍵。這種方式在軟硬件上實(shí)現(xiàn)均比較簡(jiǎn)單,但每一個(gè)按鍵都占用一個(gè)I/O端口,占用的資源較多,一般在按鍵數(shù)量較少,微處理器I/O資源充足時(shí)采用。
②矩陣式
矩陣式鍵盤是用n條I/O線組成行輸入口,m條I/O線組成列輸出口,在行列線的每一個(gè)交點(diǎn)上設(shè)置一個(gè)按鍵。如圖3(b)所示,為一個(gè)4行4列的矩陣鍵盤。矩陣式鍵盤讀取鍵值一般采用逐行掃描的方式,即輸出口按位輪換輸出低電平,再從輸入口讀入信息,最后計(jì)算各次從輸入口讀取的信息,獲得鍵碼。例如,將row0~3配置為輸出模式,col0~3配置為輸入模式;現(xiàn)將row0輸出低電平,row1~3輸出高電平,讀取col0~3;如果此時(shí)第0行0列的按鍵有按下,則col0檢測(cè)到輸入為低電平,其他列為高電平。這種方式占用I/O線較少,在按鍵較多的應(yīng)用中采用較多。
設(shè)計(jì)鍵盤時(shí),通常小于4個(gè)按鍵的應(yīng)用,可以使用獨(dú)立式接口。如果按鍵較多,為了減少微處理器的I/O端口的占用,可以使用矩陣式鍵盤。
另外,如果使用處理器I/O直接與矩陣鍵盤接口相連,上述矩陣鍵盤的檢測(cè)方式需要處理器不斷對(duì)接口掃描檢測(cè)。對(duì)速度較快的處理器來說,這種檢測(cè)方式是對(duì)處理器的極大浪費(fèi)。所以實(shí)際應(yīng)用中建議使用專門的矩陣鍵盤的驅(qū)動(dòng)芯片或I/O擴(kuò)展芯片,來實(shí)現(xiàn)對(duì)矩陣鍵盤的檢測(cè),比如ZLG7290、CAT9555等擴(kuò)展芯片。使用驅(qū)動(dòng)或I/O擴(kuò)展芯片,可以將處理器從簡(jiǎn)單但頻繁的鍵盤掃描動(dòng)作中解放出來。如圖4為ZLG7290實(shí)現(xiàn)矩陣鍵盤應(yīng)用的基本電路,該芯片支持2×8個(gè)I/O擴(kuò)展,采用IIC接口與處理器連接,并支持中斷輸出,最大可擴(kuò)展8×8的矩陣鍵盤。